ClassTreeImpl extends JavaTree implements ClassTree { @Nullable public SyntaxToken atToken() { return atToken; } ClassTreeImpl(Kind kind, SyntaxToken openBraceToken, List<Tree> members, SyntaxToken closeBraceToken);  ClassTreeImpl(ModifiersTree modifiers, SyntaxToken openBraceToken, List<Tree> members, SyntaxToken closeBraceToken); ClassTreeImpl completeModifiers(ModifiersTreeImpl modifiers); ClassTreeImpl completeIdentifier(IdentifierTree identifier); ClassTreeImpl completeTypeParameters(TypeParameterListTreeImpl typeParameters); ClassTreeImpl completeSuperclass(SyntaxToken extendsKeyword, TypeTree superClass); ClassTreeImpl completeInterfaces(SyntaxToken keyword, QualifiedIdentifierListTreeImpl interfaces); ClassTreeImpl complete(InternalSyntaxToken atToken, InternalSyntaxToken interfaceToken, IdentifierTree simpleName); ClassTreeImpl completeDeclarationKeyword(SyntaxToken declarationKeyword); void completeRecordComponents(List<VariableTree> recordComponents); @Override Kind kind(); @Nullable @Override IdentifierTree simpleName(); @Override TypeParameters typeParameters(); @Override List<VariableTree> recordComponents(); @Override ModifiersTree modifiers(); @Nullable @Override TypeTree superClass(); @Override ListTree<TypeTree> superInterfaces(); @Override SyntaxToken openBraceToken(); @Override List<Tree> members(); @Override SyntaxToken closeBraceToken(); @Override Symbol.TypeSymbol symbol(); @Nullable @Override SyntaxToken declarationKeyword(); @Nullable SyntaxToken atToken(); @Override void accept(TreeVisitor visitor); @Override int getLine(); @Override Iterable<Tree> children(); @Nullable
  public ITypeBinding typeBinding; }
@Test void at_token() { List<Tree> types = createTree("interface A {}\n @interface B {}").types(); ClassTreeImpl interfaceType = (ClassTreeImpl) types.get(0); assertThat(interfaceType.atToken()).isNull(); ClassTreeImpl annotationType = (ClassTreeImpl) types.get(1); assertThat(annotationType.atToken()).isNotNull(); }