### Question:
Kvp { public List<Pair<String,String>> parse(String val) { List<Pair<String,String>> list = new ArrayList<>(); for (String pair : val.split("\\s*"+pairDelim+"\\s*")) { pair = pair.trim(); if (pair.isEmpty()) { continue; } String[] kvp = pair.split("\\s*"+kvDelim+"\\s*"); if (kvp.length != 2) { throw new IllegalArgumentException("Invalid key/value pair: " + pair); } list.add(Pair.of(kvp[0], kvp[1])); } return list; } Kvp(String pairDelim, String kvDelim); static Kvp get(); static Kvp get(String pairDelim, String kvDelim); List<Pair<String,String>> parse(String val);  }### Answer:
@Test public void testParse() { assertPairs(Kvp.get().parse("foo=bar&x=y")); }