anchor.diff:    }
   
     void test_genericMethods_downwardsInferenceAffectsArguments() {
  +    checkFile(r'''
  +T f<T>(List<T> s) => null;
  +main() {
  +  String x = f(/*info:INFERRED_TYPE_LITERAL*/['hi']);
  +  String y = f(/*info:INFERRED_TYPE_LITERAL,error:COULD_NOT_INFER*/[/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/42]);
  +}
  +''');
  +  }
  +
  +  void test_genericMethods_downwardsInferenceAffectsArguments_comment() {
       checkFile(r'''
   /*=T*/ f/*<T>*/(List/*<T>*/ s) => null;
   main() {
  
positive.code:   void test_methodCall_withTypeArguments_staticMethod() {
      var mainUnit = checkFile('''
  class C {
    static D/*<T>*/ f/*<T>*/() => null;
  }
  class D<T> {}
  
negative.code: 
    void test_unsafeBlockClosureInference_functionCall_explicitDynamicParam() {
      var mainUnit = checkFile('''
  List<T> f<T>(T g()) => <T>[g()];
  var v = f<dynamic>(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
  ''');
      var v = mainUnit.topLevelVariables[0];
      expect(v.name, 'v');
      expect(v.type.toString(), 'List<dynamic>');
    }
  
    void
        test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_comment() {
      var mainUnit = checkFile('''
  dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
  var v = f/*<dynamic>*/(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
  ''');
  