code: protected boolean isSubtypeButNotSynonym(LightweightTypeReference expectation, Class<?> clazz) {
  		if (expectation.isType(clazz)) {
  			return true;
  		}
  		ITypeReferenceOwner owner = expectation.getOwner();
  		JvmType declaredType = owner.getServices().getTypeReferences().findDeclaredType(clazz, owner.getContextResourceSet());
  		if (declaredType == null) {
  			return false;
  		}
  		LightweightTypeReference superType = owner.newParameterizedTypeReference(declaredType);
  		// don't allow synonyms, e.g. Iterable is not considered to be a supertype of Functions.Function0
  		boolean result = superType.isAssignableFrom(expectation.getRawTypeReference(), 
  				new TypeConformanceComputationArgument(false, false, true, true, false, false));
  		return result;
  	}
docs: Same as {@link LightweightTypeReference#isSubtypeOf(Class)} but does not accept synonym types as subtypes.