code: protected LightweightTypeReference getSubstitutedExpectedType(int argumentIndex) {
  		XExpression expression = arguments.getArgument(argumentIndex);
  		if (expression == null)
  			return null;
  		LightweightTypeReference expectedType = getExpectedType(expression);
  		if (expectedType != null) {
  			// don't use UnboundTypeReference.getRawTypeReference since that would potentially resolve the unbound candidate
  			if (expectedType instanceof UnboundTypeReference) {
  				JvmTypeParameter typeParameter = ((UnboundTypeReference) expectedType).getTypeParameter();
  				expectedType = expectedType.getOwner().newParameterizedTypeReference(typeParameter);
  			}
  		}
  		return expectedType;
  	}
docs: /* @Nullable