code: @Override
  	public LightweightTypeReference newReferenceTo(Class<?> type, TypeReferenceInitializer<? super ParameterizedTypeReference> init) {
  		if (init == null) {
  			throw new NullPointerException("initializer");
  		}
  		JvmType rawType = getServices().getTypeReferences().findDeclaredType(type, getContextResourceSet());
  		if (rawType == null) {
  			return newUnknownTypeReference(type.getName());
  		}
  		if (rawType.eClass() == TypesPackage.Literals.JVM_ARRAY_TYPE) {
  			throw new IllegalArgumentException("given type is an array type: " + type);
  		}
  		ParameterizedTypeReference result = newParameterizedTypeReference(rawType);
  		return init.enhance(result);
  	}
docs: Creates a references to the given class or returns an {@link UnknownTypeReference} if no
  JRE is available. If the type is available, the given acceptor is used to initialize it further.