code: public Map<String, String> split(final CharSequence source) {
      java.util.Objects.requireNonNull(source, "source");
      Map<String, String> parameters = new HashMap<>();
      Iterator<String> i = new StringIterator(source, pairSeparator);
      while (i.hasNext()) {
        String keyValue = i.next();
  
        int keyValueSeparatorPosition = keyValueSeparatorStart(keyValue);
        if (keyValueSeparatorPosition == 0 || keyValue.length() == 0) {
          continue;
        }
        if (keyValueSeparatorPosition < 0) {
          parameters.put(keyValue, null);
          continue;
        }
        int keyStart = 0;
        int keyEnd = keyValueSeparatorPosition;
  
        while (keyStart < keyEnd && keyTrimMatcher.matches(keyValue.charAt(keyStart))) {
          keyStart++;
        }
        while (keyStart < keyEnd && keyTrimMatcher.matches(keyValue.charAt(keyEnd - 1))) {
          keyEnd--;
        }
  
        int valueStart = keyValueSeparatorPosition + keyValueSeparator.length();
        int valueEnd = keyValue.length();
  
        while (valueStart < valueEnd && valueTrimMatcher.matches(keyValue.charAt(valueStart))) {
          valueStart++;
        }
        while (valueStart < valueEnd && valueTrimMatcher.matches(keyValue.charAt(valueEnd - 1))) {
          valueEnd--;
        }
  
        String key = keyValue.substring(keyStart, keyEnd);
        String value = keyValue.substring(valueStart, valueEnd);
        parameters.put(key, value);
      }
      return parameters;
    }
docs: Splits the CharSequence passed in parameter.
  
  @param source the sequence of characters to split
  @return a map of key/value pairs