### Question:
SSOUtils { public static Map<String, String[]> getSplitQueryParameters(String queryParameterString) { Map<String, String[]> queryParameters = new HashMap<>(); if (!StringUtils.isBlank(queryParameterString)) { Map<String, List<String>> queryParameterMap = new HashMap<>(); Stream.of(queryParameterString.split("&")) .map(queryParameter -> queryParameter.split("=")) .forEach(splitParameters -> { if (splitParameters.length == 2) { if (queryParameterMap.get(splitParameters[0]) != null) { queryParameterMap.get(splitParameters[0]).add(splitParameters[1]); } else { List<String> newList = new ArrayList<>(); newList.add(splitParameters[1]); queryParameterMap.put(splitParameters[0], newList); } } }); queryParameterMap.entrySet() .stream() .forEach(entry -> { String[] values = entry.getValue().toArray(new String[entry.getValue().size()]); queryParameters.put(entry.getKey(), values); }); } return queryParameters; } private  SSOUtils(); static String createID(); static Optional<String> constructApplicationServerURL(Request request); static Map<String, String[]> getSplitQueryParameters(String queryParameterString); @SuppressWarnings("unchecked") static Map<String, Object> generateRelayState(Request request); static Optional<String> generateIssuerID(String contextPath, String hostAppBase); static Optional<String> generateConsumerURL(String contextPath, String acsBase, String acsPostfix); static Optional generateKeyStore(); static void sendCharacterData(HttpServletResponse response, String htmlPayload); static void doBootstrap(); static RequestAbstractType setSignature(RequestAbstractType request, String signatureAlgorithm,
                                                   X509Credential credential); static String encodeRequestMessage(RequestAbstractType requestMessage, String binding); static String marshall(XMLObject xmlObject); static Optional<XMLObject> unmarshall(String xmlString); static Assertion decryptAssertion(SSOX509Credential ssoAgentX509Credential,
                                             EncryptedAssertion encryptedAssertion); static Map<String, List<String>> getAssertionStatements(Assertion assertion); static void addDeflateSignatureToHTTPQueryString(StringBuilder httpQueryString, X509Credential credential);  }### Answer:
@Test(description = "Tests the validity of the split query parameter string") public void testQueryParamStringSplit() { Map<String, String[]> expected = getQueryParams(); String testQueryString = "key1=key1val1&key1=key1val2&key2=key2val1&key2=key2val2&key3=key3val1"; Map<String, String[]> actual = SSOUtils.getSplitQueryParameters(testQueryString); Assert.assertTrue(equalMaps(expected, actual)); }