code: private Object internalGetSuperType(JvmType rawType) {
  		if (rawType == type) {
  			return this;
  		}
  		if (isPrimitive() || isPrimitiveVoid()) {
  			return null;
  		}
  		EClass otherEClass = rawType.eClass();
  		if (otherEClass == TypesPackage.Literals.JVM_PRIMITIVE_TYPE || otherEClass == TypesPackage.Literals.JVM_VOID) {
  			return null;
  		}
  		boolean interfaceType = false;
  		if (otherEClass != TypesPackage.Literals.JVM_TYPE_PARAMETER) {
  			if (Object.class.getName().equals(rawType.getIdentifier())) {
  				return getOwner().newParameterizedTypeReference(rawType);
  			}
  			if (otherEClass != TypesPackage.Literals.JVM_ARRAY_TYPE) {
  				// declared type
  				JvmDeclaredType declaredType = (JvmDeclaredType) rawType;
  				if (type.eClass() != TypesPackage.Literals.JVM_TYPE_PARAMETER && declaredType.isFinal()) {
  					return null;
  				}
  			} else if (isInterfaceType()) {
  				return null;
  			}
  			if (otherEClass == TypesPackage.Literals.JVM_GENERIC_TYPE && !(interfaceType = ((JvmGenericType) rawType).isInterface()) && isInterfaceType()) {
  				return null;
  			}
  		}
  		JvmTypeReference superType = getSuperType(rawType, interfaceType, type, new RecursionGuard<JvmType>());
  		return superType;
  	}
docs: /* @Nullable