public void add(final E enumValue, final T ... values) {
        for (T value : values) {
            final T pValue = process(value);
            final E existingEnumValue = valueMap.get(pValue);
            if (existingEnumValue != null && existingEnumValue != enumValue) {
                throw new IllegalArgumentException("Duplicate mapping for '" + value +
                        "': maps to both '" + existingEnumValue + "' and '" + enumValue + "'");
            }
            valueMap.put(pValue, enumValue);
        }
    }
register a value-enum-mapping. Call in static enum class initializer only
main/src/main/java/cgeo/geocaching/utils/EnumValueMapper.java