anchor.diff:      expect(xRef.staticElement, same(xElement));
       expect(yRef.staticElement, same(yElement));
     }
  -}
  +
  +  void test_pushLocalFunctionReference_positionalParam_untyped() {
  +    checkSimpleExpression('([x]) => 0');
  +  }
  +
  +  void test_pushLocalFunctionReference_requiredParam_typed() {
  +    var expr = checkSimpleExpression('(int x) => 0', expectedText: '(x) => 0')
  +        as FunctionExpression;
  +    var functionElement = expr.declaredElement;
  +    var xElement = functionElement.parameters[0] as ParameterElementImpl;
  +    expect(xElement.type.toString(), 'int');
  +  }
  +
  +  void test_pushLocalFunctionReference_requiredParam_untyped() {
  +    checkSimpleExpression('(x) => 0');
  +  }
  +
  +  void test_pushLongInt() {
  +    checkSimpleExpression('4294967296');
  +  }
  +
  +  void test_pushNull() {
  +    checkSimpleExpression('null');
  +  }
  +
  +  void test_pushParameter() {
  +    checkConstructorInitializer('''
  +class C {
  +  int x;
  +  const C(int p) : x = p;
  +}
  +''', 'p');
  +  }
  +
  +  void test_pushReference() {
  +    checkSimpleExpression('int');
  +  }
  +
  +  void test_pushReference_sequence() {
  +    checkSimpleExpression('a.b.f', extraDeclarations: r'''
  +var a = new A();
  +class A {
  +  B b = new B();
  +}
  +class B {
  +  int f = 0;
  +}
  +''');
  +  }
  +
  +  void test_pushString() {
  +    checkSimpleExpression("'foo'");
  +  }
  +
  +  void test_pushTrue() {
  +    checkSimpleExpression('true');
  +  }
  +
  +  void test_subtract() {
  +    checkSimpleExpression('0 - 1');
  +  }
  +
  +  void test_throwException() {
  +    checkSimpleExpression('throw 0');
  +  }
  +
  +  void test_typeCast() {
  +    checkSimpleExpression('0 as num');
  +  }
  +
  +  void test_typeCheck() {
  +    checkSimpleExpression('0 is num');
  +  }
  +
  +  void test_typeCheck_negated() {
  +    checkSimpleExpression('0 is! num', expectedText: '!(0 is num)');
  +  }
  +}
  
positive.code:     checkSimpleExpression('({x}) => 0');
    }
  
    void test_pushLocalFunctionReference_positionalParam_untyped() {
      checkSimpleExpression('([x]) => 0');
    }
  
    void test_pushLocalFunctionReference_requiredParam_typed() {
      var expr = checkSimpleExpression('(int x) => 0', expectedText: '(x) => 0')
          as FunctionExpression;
      var functionElement = expr.declaredElement;
      var xElement = functionElement.parameters[0] as ParameterElementImpl;
      expect(xElement.type.toString(), 'int');
    }
  
    void test_pushLocalFunctionReference_requiredParam_untyped() {
      checkSimpleExpression('(x) => 0');
    }
  
    void test_pushLongInt() {
      checkSimpleExpression('4294967296');
    }
  
    void test_pushNull() {
      checkSimpleExpression('null');
    }
  
    void test_pushParameter() {
      checkConstructorInitializer('''
  class C {
    int x;
    const C(int p) : x = p;
  }
  ''', 'p');
    }
  
    void test_pushReference() {
      checkSimpleExpression('int');
    }
  
    void test_pushReference_sequence() {
      checkSimpleExpression('a.b.f', extraDeclarations: r'''
  var a = new A();
  class A {
    B b = new B();
  }
  class B {
    int f = 0;
  }
  ''');
    }
  
    void test_pushString() {
      checkSimpleExpression("'foo'");
    }
  
    void test_pushTrue() {
      checkSimpleExpression('true');
    }
  
    void test_subtract() {
      checkSimpleExpression('0 - 1');
    }
  
    void test_throwException() {
      checkSimpleExpression('throw 0');
    }
  
    void test_typeCast() {
      checkSimpleExpression('0 as num');
    }
  
    void test_typeCheck() {
      checkSimpleExpression('0 is num');
    }
  
    void test_typeCheck_negated() {
      checkSimpleExpression('0 is! num', expectedText: '!(0 is num)');
    }
  
    void xtest_pushLocalFunctionReference_nested() {
      // TODO(devoncarew): This test fails when run in strong mode.
      // Failed assertion: line 5116 pos 16:
      //   'Linker._initializerTypeInferenceCycle == null': is not true.
      prepareAnalysisContext(new AnalysisOptionsImpl()..previewDart2 = false);
      var expr =
          checkSimpleExpression('(x) => (y) => x + y') as FunctionExpression;
  
negative.code:     expect(yRef.staticElement, same(yElement));
    }
  
    @failingTest
    void test_pushLocalFunctionReference_paramReference() {
      prepareAnalysisContext(new AnalysisOptionsImpl()..previewDart2 = false);
      var expr = checkSimpleExpression('(x, y) => x + y') as FunctionExpression;
      var localFunctionElement = expr.declaredElement;
  