anchor.diff:          errors: [expectedError(ParserErrorCode.EXPERIMENT_NOT_ENABLED, 15, 1)]);
     }
   
  +  void test_nullCheckOnLiteralDouble() {
  +    // Issues like this should be caught during later analysis
  +    parseNNBDCompilationUnit('f() { var x = 1.2!; }');
  +  }
  +
  +  void test_nullCheckOnLiteralInt() {
  +    // Issues like this should be caught during later analysis
  +    parseNNBDCompilationUnit('f() { var x = 0!; }');
  +  }
  +
  +  void test_nullCheckOnLiteralList() {
  +    // Issues like this should be caught during later analysis
  +    parseNNBDCompilationUnit('f() { var x = [1,2]!; }');
  +  }
  +
  +  void test_nullCheckOnLiteralMap() {
  +    // Issues like this should be caught during later analysis
  +    parseNNBDCompilationUnit('f() { var x = {1:2}!; }');
  +  }
  +
  +  void test_nullCheckOnLiteralSet() {
  +    // Issues like this should be caught during later analysis
  +    parseNNBDCompilationUnit('f() { var x = {1,2}!; }');
  +  }
  +
  +  void test_nullCheckOnLiteralString() {
  +    // Issues like this should be caught during later analysis
  +    parseNNBDCompilationUnit('f() { var x = "seven"!; }');
  +  }
  +
  +  void test_nullCheckOnNull() {
  +    // Issues like this should be caught during later analysis
  +    parseNNBDCompilationUnit('f() { var x = null!; }');
  +  }
  +
  +  void test_nullCheckOnSymbol() {
  +    // Issues like this should be caught during later analysis
  +    parseNNBDCompilationUnit('f() { var x = #seven!; }');
  +  }
  +
     void test_nullCheckOnValue() {
       parseNNBDCompilationUnit('f(Point p) { var x = p.y! + 7; }');
     }
  
positive.code:     ]);
    }
  
    @failingTest
    void test_nullCheckOnLiteral() {
      // TODO(danrubel): Report error for null check on invalid target
      parseNNBDCompilationUnit('f() { var x = 0!; }',
          errors: [expectedError(ParserErrorCode.MISSING_IDENTIFIER, 78, 1)]);
    }
  
    void test_nullCheckOnLiteral_disabled() {
  
negative.code:     parseNNBDCompilationUnit('main() { C.a? Function()? x = 7; }');
    }
  
    void test_is_nullable() {
      CompilationUnit unit =
          parseNNBDCompilationUnit('main() { x is String? ? (x + y) : z; }');
      FunctionDeclaration function = unit.declarations[0];
      BlockFunctionBody body = function.functionExpression.body;
      ExpressionStatement statement = body.block.statements[0];
      ConditionalExpression expression = statement.expression;
  
      IsExpression condition = expression.condition;
      expect((condition.type as NamedType).question, isNotNull);
      Expression thenExpression = expression.thenExpression;
      expect(thenExpression, isParenthesizedExpression);
      Expression elseExpression = expression.elseExpression;
      expect(elseExpression, isSimpleIdentifier);
    }
  
    void test_is_nullable_parenthesis() {
      CompilationUnit unit =
          parseNNBDCompilationUnit('main() { (x is String?) ? (x + y) : z; }');
      FunctionDeclaration function = unit.declarations[0];
      BlockFunctionBody body = function.functionExpression.body;
      ExpressionStatement statement = body.block.statements[0];
      ConditionalExpression expression = statement.expression;
  
      ParenthesizedExpression condition = expression.condition;
      IsExpression isExpression = condition.expression;
      expect((isExpression.type as NamedType).question, isNotNull);
      Expression thenExpression = expression.thenExpression;
      expect(thenExpression, isParenthesizedExpression);
      Expression elseExpression = expression.elseExpression;
      expect(elseExpression, isSimpleIdentifier);
    }
  
    void test_nullCheck() {
      var unit = parseNNBDCompilationUnit('f(int? y) { var x = y!; }');
      FunctionDeclaration function = unit.declarations[0];
  