### Question:
DataConvertingUtility { public static Map<String, List<String>> parseUriQueryMult(String uriQuery) throws ParseException { if (uriQuery == null || uriQuery.length() == 0) { return null; } Map<String, List<String>> result = new HashMap<>(); String[] params = uriQuery.substring(uriQuery.indexOf('?') + 1).split("&"); for (String prm : params) { String[] p = prm.split("=", 2); if (p.length != 2) { throw new ParseException("", 0); } List<String> values = result.getOrDefault(p[0], new ArrayList<>(1)); values.add(p[1]); result.put(p[0], values); } return result; } private  DataConvertingUtility(); static Long readVariableULong(byte[] data); static Map<String, String> parseUriQuery(String uriQuery); static Map<String, List<String>> parseUriQueryMult(String uriQuery); static byte[] convertVariableUInt(long value); static String decodeToString(byte[] byteString); static byte[] encodeString(String payload); static byte[] intToByteArray(int value); static byte[] combine(byte[] arr1, byte[] arr2);  }### Answer:
@Test public void testParseMultiUriQuery() throws ParseException { Map<String, List<String>> q = new HashMap<>(); q.put("par1", Lists.newArrayList("12")); assertEquals(q, parseUriQueryMult("par1=12")); Map<String, List<String>> q2 = new HashMap<>(); q2.put("par1", Lists.newArrayList("11", "22")); assertEquals(q2, parseUriQueryMult("par1=11&par1=22")); assertNull(parseUriQueryMult(null)); assertNull(parseUriQueryMult("")); assertThatThrownBy(() -> parseUriQueryMult("p=aa&par133")).isExactlyInstanceOf(ParseException.class); }