sclass PostRequest { S method = "POST"; S url; MapSO params = new LinkedHashMap; SS headers = new LinkedHashMap; *() {} *(S *url, O... _) { params = paramsToMap(_); } S perform() { if (eq(method, "POST")) ret doPostWithHeaders(url, headers, params); else if (eq(method, "GET")) ret loadPageWithHeaders(appendQueryToURL(url, params), headers); else fail("Unknown method: " + method); } selfType set(S param, O value) { params.put(param, value); this; } selfType switchToGet() { method = "GET"; this; } }