package com.puppycrawl.tools.checkstyle.doclets.tokentypesdoclet;

import com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaTokenTypes;

public final class InputTokenTypesDocletNotConstants {

    /**
     * The end of file token.
     **/
    public final int EOF = GeneratedJavaTokenTypes.EOF; // must be static
    
    /**
     * Modifiers for type, method, and field declarations.
     **/
    static final int MODIFIERS = GeneratedJavaTokenTypes.MODIFIERS; // must be public

    /**
     * An object block.
     **/
    public static int OBJBLOCK = GeneratedJavaTokenTypes.OBJBLOCK; // must be final
    /**
     * A list of statements.
     **/
    public static final double SLIST = GeneratedJavaTokenTypes.SLIST; // must be int
}
