class TokenTextElement extends TextElement {

    private final JavaToken token;

    TokenTextElement(JavaToken token) {
        this.token = token;
    }

    TokenTextElement(int tokenKind, String text) {
        this(new JavaToken(tokenKind, text));
    }

    TokenTextElement(int tokenKind) {
        this(new JavaToken(tokenKind));
    }

    @Override
    public String expand() {
        return token.getText();
    }

    // Visible for testing
    public String getText() {
        return token.getText();
    }

    public int getTokenKind() {
        return token.getKind();
    }

    public JavaToken getToken() {
        return token;
    }

    @Override
    public boolean equals(Object o) {<FILL_FUNCTION_BODY>}

    @Override
    public int hashCode() {
        return token.hashCode();
    }

    @Override
    public String toString() {
        return token.toString();
    }

    @Override
    boolean isToken(int tokenKind) {
        return token.getKind() == tokenKind;
    }

    @Override
    boolean isNode(Node node) {
        return false;
    }

    @Override
    public boolean isWhiteSpace() {
        return token.getCategory().isWhitespace();
    }

    @Override
    public boolean isSpaceOrTab() {
        return token.getCategory().isWhitespaceButNotEndOfLine();
    }

    @Override
    public boolean isComment() {
        return token.getCategory().isComment();
    }

    @Override
    public boolean isSeparator() {
        return token.getCategory().isSeparator();
    }

    @Override
    public boolean isNewline() {
        return token.getCategory().isEndOfLine();
    }

    @Override
    public boolean isChildOfClass(Class<? extends Node> nodeClass) {
        return false;
    }

    @Override
    public boolean isIdentifier() {
        return getToken().getCategory().isIdentifier();
    }

    @Override
    public boolean isKeyword() {
        return getToken().getCategory().isKeyword();
    }

    @Override
    public boolean isLiteral() {
        return getToken().getCategory().isLiteral();
    }

    @Override
    public boolean isPrimitive() {
        return Kind.valueOf(getTokenKind()).isPrimitive();
    }

    @Override
    Optional<Range> getRange() {
        return token.getRange();
    }

	@Override
	public void accept(LexicalPreservingVisitor visitor) {
		visitor.visit(this);
	}
}

        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;
        TokenTextElement that = (TokenTextElement) o;
        return token.equals(that.token);
    
<methods>public non-sealed void <init>() ,public boolean isChild() ,public abstract boolean isChildOfClass(Class<? extends com.github.javaparser.ast.Node>) ,public abstract boolean isComment() ,public abstract boolean isIdentifier() ,public abstract boolean isKeyword() ,public abstract boolean isLiteral() ,public abstract boolean isNewline() ,public abstract boolean isPrimitive() ,public abstract boolean isSeparator() ,public abstract boolean isSpaceOrTab() ,public abstract boolean isWhiteSpace() ,public final boolean isWhiteSpaceOrComment() ,public boolean match(com.github.javaparser.printer.lexicalpreservation.TextElement) <variables>