code: protected LightweightTypeReference createCollectionTypeReference(JvmGenericType collectionType, LightweightTypeReference elementType, LightweightTypeReference expectedType, ITypeReferenceOwner owner) {
  		ParameterizedTypeReference result = new ParameterizedTypeReference(owner, collectionType);
  		result.addTypeArgument(elementType);
  		if (isIterableExpectation(expectedType) && !expectedType.isAssignableFrom(result)) {
  			// avoid to assign a set literal to a list and viceversa:
  			// at least the raw types must be assignable
  			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=498779
  			if (expectedType.getRawTypeReference().isAssignableFrom(result.getRawTypeReference())) {
  				LightweightTypeReference expectedElementType = getElementOrComponentType(expectedType, owner);
  				if (matchesExpectation(elementType, expectedElementType)) {
  					return expectedType;
  				}
  			}
  		}
  		return result;
  	}
docs: Creates a collection type reference that comes as close as possible / necessary to its expected type.