| Index: editor/tools/plugins/com.google.dart.engine_test/src/com/google/dart/engine/parser/SimpleParserTest.java
 | 
| ===================================================================
 | 
| --- editor/tools/plugins/com.google.dart.engine_test/src/com/google/dart/engine/parser/SimpleParserTest.java	(revision 15397)
 | 
| +++ editor/tools/plugins/com.google.dart.engine_test/src/com/google/dart/engine/parser/SimpleParserTest.java	(working copy)
 | 
| @@ -34,7 +34,7 @@
 | 
|  import com.google.dart.engine.ast.ConditionalExpression;
 | 
|  import com.google.dart.engine.ast.ConstructorDeclaration;
 | 
|  import com.google.dart.engine.ast.ConstructorFieldInitializer;
 | 
| -import com.google.dart.engine.ast.ConstructorInitializer;
 | 
| +import com.google.dart.engine.ast.ConstructorName;
 | 
|  import com.google.dart.engine.ast.ContinueStatement;
 | 
|  import com.google.dart.engine.ast.DefaultFormalParameter;
 | 
|  import com.google.dart.engine.ast.DoStatement;
 | 
| @@ -124,6 +124,8 @@
 | 
|  import com.google.dart.engine.scanner.TokenType;
 | 
|  import com.google.dart.engine.utilities.dart.ParameterKind;
 | 
|  
 | 
| +import static com.google.dart.engine.scanner.TokenFactory.token;
 | 
| +
 | 
|  import junit.framework.AssertionFailedError;
 | 
|  
 | 
|  import java.lang.reflect.Method;
 | 
| @@ -774,11 +776,9 @@
 | 
|    }
 | 
|  
 | 
|    public void test_parseClassDeclaration_abstract() throws Exception {
 | 
| -    ClassDeclaration declaration = parse(
 | 
| -        "parseClassDeclaration",
 | 
| -        new Class[] {CommentAndMetadata.class},
 | 
| -        new Object[] {emptyCommentAndMetadata()},
 | 
| -        "abstract class A {}");
 | 
| +    ClassDeclaration declaration = parse("parseClassDeclaration", new Class[] {
 | 
| +        CommentAndMetadata.class, Token.class}, new Object[] {
 | 
| +        emptyCommentAndMetadata(), token(Keyword.ABSTRACT)}, "class A {}");
 | 
|      assertNull(declaration.getDocumentationComment());
 | 
|      assertNotNull(declaration.getAbstractKeyword());
 | 
|      assertNull(declaration.getExtendsClause());
 | 
| @@ -794,8 +794,8 @@
 | 
|    public void test_parseClassDeclaration_empty() throws Exception {
 | 
|      ClassDeclaration declaration = parse(
 | 
|          "parseClassDeclaration",
 | 
| -        new Class[] {CommentAndMetadata.class},
 | 
| -        new Object[] {emptyCommentAndMetadata()},
 | 
| +        new Class[] {CommentAndMetadata.class, Token.class},
 | 
| +        new Object[] {emptyCommentAndMetadata(), null},
 | 
|          "class A {}");
 | 
|      assertNull(declaration.getDocumentationComment());
 | 
|      assertNull(declaration.getAbstractKeyword());
 | 
| @@ -812,8 +812,8 @@
 | 
|    public void test_parseClassDeclaration_extends() throws Exception {
 | 
|      ClassDeclaration declaration = parse(
 | 
|          "parseClassDeclaration",
 | 
| -        new Class[] {CommentAndMetadata.class},
 | 
| -        new Object[] {emptyCommentAndMetadata()},
 | 
| +        new Class[] {CommentAndMetadata.class, Token.class},
 | 
| +        new Object[] {emptyCommentAndMetadata(), null},
 | 
|          "class A extends B {}");
 | 
|      assertNull(declaration.getDocumentationComment());
 | 
|      assertNull(declaration.getAbstractKeyword());
 | 
| @@ -830,8 +830,8 @@
 | 
|    public void test_parseClassDeclaration_extendsAndImplements() throws Exception {
 | 
|      ClassDeclaration declaration = parse(
 | 
|          "parseClassDeclaration",
 | 
| -        new Class[] {CommentAndMetadata.class},
 | 
| -        new Object[] {emptyCommentAndMetadata()},
 | 
| +        new Class[] {CommentAndMetadata.class, Token.class},
 | 
| +        new Object[] {emptyCommentAndMetadata(), null},
 | 
|          "class A extends B implements C {}");
 | 
|      assertNull(declaration.getDocumentationComment());
 | 
|      assertNull(declaration.getAbstractKeyword());
 | 
| @@ -848,8 +848,8 @@
 | 
|    public void test_parseClassDeclaration_implements() throws Exception {
 | 
|      ClassDeclaration declaration = parse(
 | 
|          "parseClassDeclaration",
 | 
| -        new Class[] {CommentAndMetadata.class},
 | 
| -        new Object[] {emptyCommentAndMetadata()},
 | 
| +        new Class[] {CommentAndMetadata.class, Token.class},
 | 
| +        new Object[] {emptyCommentAndMetadata(), null},
 | 
|          "class A implements C {}");
 | 
|      assertNull(declaration.getDocumentationComment());
 | 
|      assertNull(declaration.getAbstractKeyword());
 | 
| @@ -866,8 +866,8 @@
 | 
|    public void test_parseClassDeclaration_nonEmpty() throws Exception {
 | 
|      ClassDeclaration declaration = parse(
 | 
|          "parseClassDeclaration",
 | 
| -        new Class[] {CommentAndMetadata.class},
 | 
| -        new Object[] {emptyCommentAndMetadata()},
 | 
| +        new Class[] {CommentAndMetadata.class, Token.class},
 | 
| +        new Object[] {emptyCommentAndMetadata(), null},
 | 
|          "class A {var f;}");
 | 
|      assertNull(declaration.getDocumentationComment());
 | 
|      assertNull(declaration.getAbstractKeyword());
 | 
| @@ -884,8 +884,8 @@
 | 
|    public void test_parseClassDeclaration_typeParameters() throws Exception {
 | 
|      ClassDeclaration declaration = parse(
 | 
|          "parseClassDeclaration",
 | 
| -        new Class[] {CommentAndMetadata.class},
 | 
| -        new Object[] {emptyCommentAndMetadata()},
 | 
| +        new Class[] {CommentAndMetadata.class, Token.class},
 | 
| +        new Object[] {emptyCommentAndMetadata(), null},
 | 
|          "class A<B> {}");
 | 
|      assertNull(declaration.getDocumentationComment());
 | 
|      assertNull(declaration.getAbstractKeyword());
 | 
| @@ -910,14 +910,13 @@
 | 
|      assertNotNull(constructor.getBody());
 | 
|      assertNotNull(constructor.getColon());
 | 
|      assertNull(constructor.getExternalKeyword());
 | 
| -    assertNull(constructor.getKeyword());
 | 
| +    assertNull(constructor.getConstKeyword());
 | 
| +    assertNull(constructor.getFactoryKeyword());
 | 
|      assertNull(constructor.getName());
 | 
|      assertNotNull(constructor.getParameters());
 | 
|      assertNull(constructor.getPeriod());
 | 
|      assertNotNull(constructor.getReturnType());
 | 
| -    NodeList<ConstructorInitializer> initializers = constructor.getInitializers();
 | 
| -    assertNotNull(initializers);
 | 
| -    assertEquals(1, initializers.size());
 | 
| +    assertSize(1, constructor.getInitializers());
 | 
|    }
 | 
|  
 | 
|    public void test_parseClassMember_field_instance_prefixedType() throws Exception {
 | 
| @@ -1192,36 +1191,78 @@
 | 
|      assertNotNull(method.getBody());
 | 
|    }
 | 
|  
 | 
| -  public void test_parseClassMemberModifiers_const() throws Exception {
 | 
| -    Modifiers modifiers = parse("parseClassMemberModifiers", "const A");
 | 
| -    assertNotNull(modifiers.getConstKeyword());
 | 
| +  public void test_parseClassMember_operator_index() throws Exception {
 | 
| +    MethodDeclaration method = parse(
 | 
| +        "parseClassMember",
 | 
| +        new Class[] {String.class},
 | 
| +        new Object[] {"C"},
 | 
| +        "int operator [](int i) {}");
 | 
| +    assertNull(method.getDocumentationComment());
 | 
| +    assertNull(method.getExternalKeyword());
 | 
| +    assertNull(method.getModifierKeyword());
 | 
| +    assertNull(method.getPropertyKeyword());
 | 
| +    assertNotNull(method.getReturnType());
 | 
| +    assertNotNull(method.getName());
 | 
| +    assertNotNull(method.getOperatorKeyword());
 | 
| +    assertNotNull(method.getParameters());
 | 
| +    assertNotNull(method.getBody());
 | 
|    }
 | 
|  
 | 
| -  public void test_parseClassMemberModifiers_external() throws Exception {
 | 
| -    Modifiers modifiers = parse("parseClassMemberModifiers", "external A");
 | 
| -    assertNotNull(modifiers.getExternalKeyword());
 | 
| +  public void test_parseClassMember_operator_indexAssign() throws Exception {
 | 
| +    MethodDeclaration method = parse(
 | 
| +        "parseClassMember",
 | 
| +        new Class[] {String.class},
 | 
| +        new Object[] {"C"},
 | 
| +        "int operator []=(int i) {}");
 | 
| +    assertNull(method.getDocumentationComment());
 | 
| +    assertNull(method.getExternalKeyword());
 | 
| +    assertNull(method.getModifierKeyword());
 | 
| +    assertNull(method.getPropertyKeyword());
 | 
| +    assertNotNull(method.getReturnType());
 | 
| +    assertNotNull(method.getName());
 | 
| +    assertNotNull(method.getOperatorKeyword());
 | 
| +    assertNotNull(method.getParameters());
 | 
| +    assertNotNull(method.getBody());
 | 
|    }
 | 
|  
 | 
| -  public void test_parseClassMemberModifiers_factory() throws Exception {
 | 
| -    Modifiers modifiers = parse("parseClassMemberModifiers", "factory A");
 | 
| -    assertNotNull(modifiers.getFactoryKeyword());
 | 
| +  public void test_parseClassMember_redirectingFactory_const() throws Exception {
 | 
| +    ConstructorDeclaration constructor = parse(
 | 
| +        "parseClassMember",
 | 
| +        new Class[] {String.class},
 | 
| +        new Object[] {"C"},
 | 
| +        "const factory C() = B;");
 | 
| +    assertNull(constructor.getExternalKeyword());
 | 
| +    assertNotNull(constructor.getConstKeyword());
 | 
| +    assertNotNull(constructor.getFactoryKeyword());
 | 
| +    assertNotNull(constructor.getReturnType());
 | 
| +    assertNull(constructor.getPeriod());
 | 
| +    assertNull(constructor.getName());
 | 
| +    assertNotNull(constructor.getParameters());
 | 
| +    assertNotNull(constructor.getColon());
 | 
| +    assertSize(0, constructor.getInitializers());
 | 
| +    assertNotNull(constructor.getConstructorName());
 | 
| +    assertNotNull(constructor.getBody());
 | 
|    }
 | 
|  
 | 
| -  public void test_parseClassMemberModifiers_final() throws Exception {
 | 
| -    Modifiers modifiers = parse("parseClassMemberModifiers", "final A");
 | 
| -    assertNotNull(modifiers.getFinalKeyword());
 | 
| +  public void test_parseClassMember_redirectingFactory_nonConst() throws Exception {
 | 
| +    ConstructorDeclaration constructor = parse(
 | 
| +        "parseClassMember",
 | 
| +        new Class[] {String.class},
 | 
| +        new Object[] {"C"},
 | 
| +        "factory C() = B;");
 | 
| +    assertNull(constructor.getExternalKeyword());
 | 
| +    assertNull(constructor.getConstKeyword());
 | 
| +    assertNotNull(constructor.getFactoryKeyword());
 | 
| +    assertNotNull(constructor.getReturnType());
 | 
| +    assertNull(constructor.getPeriod());
 | 
| +    assertNull(constructor.getName());
 | 
| +    assertNotNull(constructor.getParameters());
 | 
| +    assertNotNull(constructor.getColon());
 | 
| +    assertSize(0, constructor.getInitializers());
 | 
| +    assertNotNull(constructor.getConstructorName());
 | 
| +    assertNotNull(constructor.getBody());
 | 
|    }
 | 
|  
 | 
| -  public void test_parseClassMemberModifiers_static() throws Exception {
 | 
| -    Modifiers modifiers = parse("parseClassMemberModifiers", "static A");
 | 
| -    assertNotNull(modifiers.getStaticKeyword());
 | 
| -  }
 | 
| -
 | 
| -  public void test_parseClassMemberModifiers_var() throws Exception {
 | 
| -    Modifiers modifiers = parse("parseClassMemberModifiers", "var A");
 | 
| -    assertNotNull(modifiers.getVarKeyword());
 | 
| -  }
 | 
| -
 | 
|    public void test_parseCombinators_h() throws Exception {
 | 
|      List<Combinator> combinators = parse("parseCombinators", "hide a;");
 | 
|      assertSize(1, combinators);
 | 
| @@ -1644,10 +1685,13 @@
 | 
|  
 | 
|    public void test_parseConstExpression_instanceCreation() throws Exception {
 | 
|      InstanceCreationExpression expression = parse("parseConstExpression", "const A()");
 | 
| +    assertNotNull(expression.getKeyword());
 | 
| +    ConstructorName name = expression.getConstructorName();
 | 
| +    assertNotNull(name);
 | 
| +    assertNotNull(name.getType());
 | 
| +    assertNull(name.getPeriod());
 | 
| +    assertNull(name.getName());
 | 
|      assertNotNull(expression.getArgumentList());
 | 
| -    assertNull(expression.getIdentifier());
 | 
| -    assertNotNull(expression.getKeyword());
 | 
| -    assertNotNull(expression.getType());
 | 
|    }
 | 
|  
 | 
|    public void test_parseConstExpression_listLiteral_typed() throws Exception {
 | 
| @@ -1710,6 +1754,34 @@
 | 
|      assertNull(invocation.getPeriod());
 | 
|    }
 | 
|  
 | 
| +  public void test_parseConstructorName_named_noPrefix() throws Exception {
 | 
| +    ConstructorName name = parse("parseConstructorName", "A.n;");
 | 
| +    assertNotNull(name.getType());
 | 
| +    assertNull(name.getPeriod());
 | 
| +    assertNull(name.getName());
 | 
| +  }
 | 
| +
 | 
| +  public void test_parseConstructorName_named_prefixed() throws Exception {
 | 
| +    ConstructorName name = parse("parseConstructorName", "p.A.n;");
 | 
| +    assertNotNull(name.getType());
 | 
| +    assertNotNull(name.getPeriod());
 | 
| +    assertNotNull(name.getName());
 | 
| +  }
 | 
| +
 | 
| +  public void test_parseConstructorName_unnamed_noPrefix() throws Exception {
 | 
| +    ConstructorName name = parse("parseConstructorName", "A;");
 | 
| +    assertNotNull(name.getType());
 | 
| +    assertNull(name.getPeriod());
 | 
| +    assertNull(name.getName());
 | 
| +  }
 | 
| +
 | 
| +  public void test_parseConstructorName_unnamed_prefixed() throws Exception {
 | 
| +    ConstructorName name = parse("parseConstructorName", "p.A;");
 | 
| +    assertNotNull(name.getType());
 | 
| +    assertNull(name.getPeriod());
 | 
| +    assertNull(name.getName());
 | 
| +  }
 | 
| +
 | 
|    public void test_parseContinueStatement_label() throws Exception {
 | 
|      ContinueStatement statement = parse(
 | 
|          "parseContinueStatement",
 | 
| @@ -2621,7 +2693,7 @@
 | 
|  
 | 
|    public void test_parseGetter_static() throws Exception {
 | 
|      Comment comment = Comment.createDocumentationComment(new Token[0]);
 | 
| -    Token staticKeyword = new KeywordToken(Keyword.STATIC, 0);
 | 
| +    Token staticKeyword = token(Keyword.STATIC);
 | 
|      TypeName returnType = new TypeName(new SimpleIdentifier(null), null);
 | 
|      MethodDeclaration method = parse("parseGetter", new Class[] {
 | 
|          CommentAndMetadata.class, Token.class, Token.class, TypeName.class}, new Object[] {
 | 
| @@ -2789,7 +2861,7 @@
 | 
|  
 | 
|    public void test_parseInitializedIdentifierList_type() throws Exception {
 | 
|      Comment comment = Comment.createDocumentationComment(new Token[0]);
 | 
| -    Token staticKeyword = new KeywordToken(Keyword.STATIC, 0);
 | 
| +    Token staticKeyword = token(Keyword.STATIC);
 | 
|      TypeName type = new TypeName(new SimpleIdentifier(null), null);
 | 
|      FieldDeclaration declaration = parse("parseInitializedIdentifierList", new Class[] {
 | 
|          CommentAndMetadata.class, Token.class, Token.class, TypeName.class}, new Object[] {
 | 
| @@ -2806,8 +2878,8 @@
 | 
|  
 | 
|    public void test_parseInitializedIdentifierList_var() throws Exception {
 | 
|      Comment comment = Comment.createDocumentationComment(new Token[0]);
 | 
| -    Token staticKeyword = new KeywordToken(Keyword.STATIC, 0);
 | 
| -    Token varKeyword = new KeywordToken(Keyword.VAR, 0);
 | 
| +    Token staticKeyword = token(Keyword.STATIC);
 | 
| +    Token varKeyword = token(Keyword.VAR);
 | 
|      FieldDeclaration declaration = parse("parseInitializedIdentifierList", new Class[] {
 | 
|          CommentAndMetadata.class, Token.class, Token.class, TypeName.class}, new Object[] {
 | 
|          commentAndMetadata(comment), staticKeyword, varKeyword, null}, "a = 1, b, c = 3;");
 | 
| @@ -2822,58 +2894,66 @@
 | 
|    }
 | 
|  
 | 
|    public void test_parseInstanceCreationExpression_qualifiedType() throws Exception {
 | 
| -    Token token = new KeywordToken(Keyword.NEW, 0);
 | 
| +    Token token = token(Keyword.NEW);
 | 
|      InstanceCreationExpression expression = parse(
 | 
|          "parseInstanceCreationExpression",
 | 
|          new Class[] {Token.class},
 | 
|          new Object[] {token},
 | 
|          "A.B()");
 | 
|      assertEquals(token, expression.getKeyword());
 | 
| -    assertNotNull(expression.getType());
 | 
| -    assertNull(expression.getPeriod());
 | 
| -    assertNull(expression.getIdentifier());
 | 
| +    ConstructorName name = expression.getConstructorName();
 | 
| +    assertNotNull(name);
 | 
| +    assertNotNull(name.getType());
 | 
| +    assertNull(name.getPeriod());
 | 
| +    assertNull(name.getName());
 | 
|      assertNotNull(expression.getArgumentList());
 | 
|    }
 | 
|  
 | 
|    public void test_parseInstanceCreationExpression_qualifiedType_named() throws Exception {
 | 
| -    Token token = new KeywordToken(Keyword.NEW, 0);
 | 
| +    Token token = token(Keyword.NEW);
 | 
|      InstanceCreationExpression expression = parse(
 | 
|          "parseInstanceCreationExpression",
 | 
|          new Class[] {Token.class},
 | 
|          new Object[] {token},
 | 
|          "A.B.c()");
 | 
|      assertEquals(token, expression.getKeyword());
 | 
| -    assertNotNull(expression.getType());
 | 
| -    assertNotNull(expression.getPeriod());
 | 
| -    assertNotNull(expression.getIdentifier());
 | 
| +    ConstructorName name = expression.getConstructorName();
 | 
| +    assertNotNull(name);
 | 
| +    assertNotNull(name.getType());
 | 
| +    assertNotNull(name.getPeriod());
 | 
| +    assertNotNull(name.getName());
 | 
|      assertNotNull(expression.getArgumentList());
 | 
|    }
 | 
|  
 | 
|    public void test_parseInstanceCreationExpression_type() throws Exception {
 | 
| -    Token token = new KeywordToken(Keyword.NEW, 0);
 | 
| +    Token token = token(Keyword.NEW);
 | 
|      InstanceCreationExpression expression = parse(
 | 
|          "parseInstanceCreationExpression",
 | 
|          new Class[] {Token.class},
 | 
|          new Object[] {token},
 | 
|          "A()");
 | 
|      assertEquals(token, expression.getKeyword());
 | 
| -    assertNotNull(expression.getType());
 | 
| -    assertNull(expression.getPeriod());
 | 
| -    assertNull(expression.getIdentifier());
 | 
| +    ConstructorName name = expression.getConstructorName();
 | 
| +    assertNotNull(name);
 | 
| +    assertNotNull(name.getType());
 | 
| +    assertNull(name.getPeriod());
 | 
| +    assertNull(name.getName());
 | 
|      assertNotNull(expression.getArgumentList());
 | 
|    }
 | 
|  
 | 
|    public void test_parseInstanceCreationExpression_type_named() throws Exception {
 | 
| -    Token token = new KeywordToken(Keyword.NEW, 0);
 | 
| +    Token token = token(Keyword.NEW);
 | 
|      InstanceCreationExpression expression = parse(
 | 
|          "parseInstanceCreationExpression",
 | 
|          new Class[] {Token.class},
 | 
|          new Object[] {token},
 | 
|          "A<B>.c()");
 | 
|      assertEquals(token, expression.getKeyword());
 | 
| -    assertNotNull(expression.getType());
 | 
| -    assertNotNull(expression.getPeriod());
 | 
| -    assertNotNull(expression.getIdentifier());
 | 
| +    ConstructorName name = expression.getConstructorName();
 | 
| +    assertNotNull(name);
 | 
| +    assertNotNull(name.getType());
 | 
| +    assertNotNull(name.getPeriod());
 | 
| +    assertNotNull(name.getName());
 | 
|      assertNotNull(expression.getArgumentList());
 | 
|    }
 | 
|  
 | 
| @@ -2889,7 +2969,7 @@
 | 
|    }
 | 
|  
 | 
|    public void test_parseListLiteral_empty_oneToken() throws Exception {
 | 
| -    Token token = new KeywordToken(Keyword.CONST, 0);
 | 
| +    Token token = token(Keyword.CONST);
 | 
|      TypeArgumentList typeArguments = new TypeArgumentList(null, null, null);
 | 
|      ListLiteral literal = parse("parseListLiteral", new Class[] {
 | 
|          Token.class, TypeArgumentList.class}, new Object[] {token, typeArguments}, "[]");
 | 
| @@ -2901,7 +2981,7 @@
 | 
|    }
 | 
|  
 | 
|    public void test_parseListLiteral_empty_twoTokens() throws Exception {
 | 
| -    Token token = new KeywordToken(Keyword.CONST, 0);
 | 
| +    Token token = token(Keyword.CONST);
 | 
|      TypeArgumentList typeArguments = new TypeArgumentList(null, null, null);
 | 
|      ListLiteral literal = parse("parseListLiteral", new Class[] {
 | 
|          Token.class, TypeArgumentList.class}, new Object[] {token, typeArguments}, "[ ]");
 | 
| @@ -3001,7 +3081,7 @@
 | 
|    }
 | 
|  
 | 
|    public void test_parseMapLiteral_empty() throws Exception {
 | 
| -    Token token = new KeywordToken(Keyword.CONST, 0);
 | 
| +    Token token = token(Keyword.CONST);
 | 
|      TypeArgumentList typeArguments = new TypeArgumentList(null, null, null);
 | 
|      MapLiteral literal = parse(
 | 
|          "parseMapLiteral",
 | 
| @@ -3044,6 +3124,41 @@
 | 
|      assertNotNull(entry.getValue());
 | 
|    }
 | 
|  
 | 
| +  public void test_parseModifiers_abstract() throws Exception {
 | 
| +    Modifiers modifiers = parse("parseModifiers", "abstract A");
 | 
| +    assertNotNull(modifiers.getAbstractKeyword());
 | 
| +  }
 | 
| +
 | 
| +  public void test_parseModifiers_const() throws Exception {
 | 
| +    Modifiers modifiers = parse("parseModifiers", "const A");
 | 
| +    assertNotNull(modifiers.getConstKeyword());
 | 
| +  }
 | 
| +
 | 
| +  public void test_parseModifiers_external() throws Exception {
 | 
| +    Modifiers modifiers = parse("parseModifiers", "external A");
 | 
| +    assertNotNull(modifiers.getExternalKeyword());
 | 
| +  }
 | 
| +
 | 
| +  public void test_parseModifiers_factory() throws Exception {
 | 
| +    Modifiers modifiers = parse("parseModifiers", "factory A");
 | 
| +    assertNotNull(modifiers.getFactoryKeyword());
 | 
| +  }
 | 
| +
 | 
| +  public void test_parseModifiers_final() throws Exception {
 | 
| +    Modifiers modifiers = parse("parseModifiers", "final A");
 | 
| +    assertNotNull(modifiers.getFinalKeyword());
 | 
| +  }
 | 
| +
 | 
| +  public void test_parseModifiers_static() throws Exception {
 | 
| +    Modifiers modifiers = parse("parseModifiers", "static A");
 | 
| +    assertNotNull(modifiers.getStaticKeyword());
 | 
| +  }
 | 
| +
 | 
| +  public void test_parseModifiers_var() throws Exception {
 | 
| +    Modifiers modifiers = parse("parseModifiers", "var A");
 | 
| +    assertNotNull(modifiers.getVarKeyword());
 | 
| +  }
 | 
| +
 | 
|    public void test_parseMultiplicativeExpression_normal() throws Exception {
 | 
|      BinaryExpression expression = parse("parseMultiplicativeExpression", "x * y");
 | 
|      assertNotNull(expression.getLeftOperand());
 | 
| @@ -3062,10 +3177,13 @@
 | 
|  
 | 
|    public void test_parseNewExpression() throws Exception {
 | 
|      InstanceCreationExpression expression = parse("parseNewExpression", "new A()");
 | 
| +    assertNotNull(expression.getKeyword());
 | 
| +    ConstructorName name = expression.getConstructorName();
 | 
| +    assertNotNull(name);
 | 
| +    assertNotNull(name.getType());
 | 
| +    assertNull(name.getPeriod());
 | 
| +    assertNull(name.getName());
 | 
|      assertNotNull(expression.getArgumentList());
 | 
| -    assertNull(expression.getIdentifier());
 | 
| -    assertNotNull(expression.getKeyword());
 | 
| -    assertNotNull(expression.getType());
 | 
|    }
 | 
|  
 | 
|    public void test_parseNonLabeledStatement_const_list_empty() throws Exception {
 | 
| @@ -3594,7 +3712,7 @@
 | 
|  
 | 
|    public void test_parseSetter_static() throws Exception {
 | 
|      Comment comment = Comment.createDocumentationComment(new Token[0]);
 | 
| -    Token staticKeyword = new KeywordToken(Keyword.STATIC, 0);
 | 
| +    Token staticKeyword = token(Keyword.STATIC);
 | 
|      TypeName returnType = new TypeName(new SimpleIdentifier(null), null);
 | 
|      MethodDeclaration method = parse("parseSetter", new Class[] {
 | 
|          CommentAndMetadata.class, Token.class, Token.class, TypeName.class}, new Object[] {
 | 
| @@ -4190,7 +4308,7 @@
 | 
|    }
 | 
|  
 | 
|    public void test_parseVariableDeclarationList2_var() throws Exception {
 | 
| -    Token keyword = new KeywordToken(Keyword.VAR, 0);
 | 
| +    Token keyword = token(Keyword.VAR);
 | 
|      VariableDeclarationList declarationList = parse("parseVariableDeclarationList", new Class[] {
 | 
|          Token.class, TypeName.class}, new Object[] {keyword, null}, "a, b, c");
 | 
|      assertEquals(keyword, declarationList.getKeyword());
 | 
| 
 |