code: public static <T extends EnumValue> T register(@NonNull T enumValue) {
        return Cast.as(GLOBAL_REPOSITORY.computeIfAbsent(enumValue.canonicalName(), s -> enumValue));
     }
docs: <p>Attempts to register a given {@link EnumValue} instance to its associated class type. If an instance with the
  same name has already been registered, that instance will be returned.</p>
  
  @param <T>       Specific type of EnumValue being registered
  @param enumValue the value to register
  @return the previously defined EnumValue with specified name and type or the one passed into register
  @throws NullPointerException if enumValue is null