anchor.diff:        FunctionExpressionInvocation node) {
       DecoratedType calleeType = node.function.accept(this);
       return _handleInvocationArguments(node, node.argumentList.arguments,
  -        node.typeArguments, calleeType, null);
  +        node.typeArguments, node.typeArgumentTypes, calleeType, null);
     }
   
     @override
  
positive.code:       InstanceCreationExpression node) {
      var callee = node.staticElement;
      var typeParameters = callee.enclosingElement.typeParameters;
      List<DecoratedType> decoratedTypeArguments;
      var typeArguments = node.constructorName.type.typeArguments;
      if (typeArguments != null) {
        decoratedTypeArguments = typeArguments.arguments
            .map((t) => _variables.decoratedTypeAnnotation(source, t))
            .toList();
      } else {
        var staticType = node.staticType;
        if (staticType is InterfaceType) {
          decoratedTypeArguments = staticType.typeArguments
              .map((t) => DecoratedType.forImplicitType(_typeProvider, t, _graph))
              .toList();
        } else {
          // Note: this could happen if the code being migrated has errors.
          decoratedTypeArguments = const [];
        }
      }
  
negative.code:         typeArguments: decoratedTypeArguments);
      var calleeType = getOrComputeElementType(callee, targetType: createdType);
      _handleInvocationArguments(node, node.argumentList.arguments, typeArguments,
          typeArgumentTypes, calleeType, typeParameters);
      return createdType;
    }
  
  