code: public static void decode(final Map<String, String> map, final String data) {
          //String[] keyValues = StringUtil.split(data, '&');
          StringUtil.split(data, '&',  keyValue -> {
              final int indexOfSeperator = keyValue.indexOf('=');
              
              if (indexOfSeperator > -1) {
                  if (indexOfSeperator == keyValue.length() - 1) { // The '=' is at the end of the string - this counts as an unsigned value
                      map.put(URLCodec.decode(keyValue.substring(0, indexOfSeperator), StandardCharsets.UTF_8), "");
                  } else {  
                      final String first  = keyValue.substring(0, indexOfSeperator),
                                   second = keyValue.substring(indexOfSeperator + 1);
                   
                      map.put(URLCodec.decode(first, StandardCharsets.UTF_8), URLCodec.decode(second, StandardCharsets.UTF_8));
                  }
              }
          });
      }
docs: A faster decode than the original from Play Framework,
  but still equivalent in output
  
  @param map  the map to decode data into.
  @param data the data to decode.