sclass PostRequest { S url; SS params = new LinkedHashMap; SS headers = new LinkedHashMap; *() {} *(S *url, O... _) { params = paramsToMap(_); } S perform() { ret doPostWithHeaders(url, headers, params); } selfType set(S param, O value) { params.put(param, value); this; } }