protected static <K, V> K lookupKeyByValue(Map<K, V> map, V value) {
    for (final Map.Entry<K, V> entry : map.entrySet()) {
      if (value.equals(entry.getValue())) {
        return entry.getKey();
      }
    }
    return null;
  }