code: 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;
      }
    }
docs: Returns a new instance for the value (i.e., the class name) of this class
  parameter. The instance has the type of the restriction class of this class
  parameter.
  <p>
  If the Class for the class name is not found, the instantiation is tried
  using the package of the restriction class as package of the class name.
  
  @param config Parameterization to use (if Parameterizable))
  @return a new instance for the value of this class parameter