code: public Map<String, List<String>> unapplyAll(Iterable<String> values)
    {
      if (values == null) {
        return Collections.emptyMap();
      }
      Map<String, List<String>> map = new HashMap<>();
      for (String value : values) {
        map.put(value, unapply(value));
      }
      return map;
    }
docs: @param values Iterable of values for which will perform reverse lookup
  
  @return Returns {@link Map} whose keys are the contents of {@code values} and whose values are computed on demand using the reverse lookup function {@link #unapply(String)}
  or empty map if {@code values} is `null`
  User can override this method if there is a better way to perform bulk reverse lookup