code: public Map<String, String> applyAll(Iterable<String> keys)
    {
      if (keys == null) {
        return Collections.emptyMap();
      }
      Map<String, String> map = new HashMap<>();
      for (String key : keys) {
        map.put(key, apply(key));
      }
      return map;
    }
docs: @param keys set of keys to apply lookup for each element
  
  @return Returns {@link Map} whose keys are the contents of {@code keys} and whose values are computed on demand using 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 lookup