class JointSQLSymbolTokenizer extends JointSQLLexer {

    private String lastSymbol;

    /**
     * Resets the SQL tracked state. {@inheritDoc}
     */
    @Override
    public void reset() {
        super.reset();
        lastSymbol = null;
    }

    /** noop. */
    @Override
    public void offer(String value) {
    }

    @Override
    public boolean offerSymbol(String value, int captureOffset, boolean ignoreKwd) {<FILL_FUNCTION_BODY>}

    @Override
    public void skipSymbol() {
        lastSymbol = null;
    }

    @Override
    public void offerKeyword(String value) {
        lastSymbol = null;
    }

    /** noop. */
    @Override
    public void startNewLine() {
    }

    /** noop. */
    @Override
    public void disjointSpan(String className) {
    }

    /** noop. */
    @Override
    public void phLOC() {
    }

    /** Gets the value {@code false}. */
    protected boolean takeAllContent() {
        return false;
    }

    /** Gets the value indicating if {@link #lastSymbol} is defined. */
    protected boolean returnOnSymbol() {
        return lastSymbol != null;
    }
}

        if (ignoreKwd || !getDialectKeywords().contains(value.toLowerCase(Locale.ROOT))) {
            lastSymbol = value;
            onSymbolMatched(value, getYYCHAR() + captureOffset);
            return true;
        } else {
            lastSymbol = null;
        }
        return false;
    
<methods>public void chkLOC() ,public void reset() ,public void yypop() throws java.io.IOException<variables>protected int commentLevel