docs: public C instantiateClass(Parameterization config) {
      if(getValue() == null /* && !optionalParameter */) {
        config.reportError(new UnspecifiedParameterException(this));
        return null;
      }
      try {
        config = config.descend(this);
        return ClassGenericsUtil.tryInstantiate(restrictionClass, getValue(), config);
      }
      catch(ClassInstantiationException e) {
        config.reportError(new WrongParameterValueException(this, getValue().getCanonicalName(), "Error instantiating class.", e));
        return null;
      }
    }