code: public <T> ClaimValue<Optional<T>> generalClaimValueProducer(InjectionPoint ip) {
          String name = getName(ip);
          ClaimValueWrapper<Optional<T>> wrapper = new ClaimValueWrapper<>(name);
          T value = getValue(name, false);
          Optional<T> optValue = Optional.ofNullable(value);
          wrapper.setValue(optValue);
          return wrapper;
      }
docs: A utility method for accessing a claim from the current JsonWebToken as a ClaimValue<Optional<T>> object.
  
  @param ip - injection point of the claim
  @param <T> expected actual type of the claim
  @return the claim value wrapper object