class SqlDropIndexCommand implements SqlCommand {
    /** Schema name. */
    private String schemaName;

    /** Index name. */
    private String idxName;

    /** IF EXISTS flag. */
    private boolean ifExists;

    /**
     * Default constructor.
     */
    public SqlDropIndexCommand() {
    }

    /**
     * @param schemaName Schema name.
     * @param idxName Index name.
     * @param ifExists If exists clause.
     */
    public SqlDropIndexCommand(String schemaName, String idxName, boolean ifExists) {
        this.schemaName = schemaName;
        this.idxName = idxName;
        this.ifExists = ifExists;
    }

    /** {@inheritDoc} */
    @Override public String schemaName() {
        return schemaName;
    }

    /** {@inheritDoc} */
    @Override public void schemaName(String schemaName) {
        this.schemaName = schemaName;
    }

    /**
     * @return Index name.
     */
    public String indexName() {
        return idxName;
    }

    /**
     * @return IF EXISTS flag.
     */
    public boolean ifExists() {
        return ifExists;
    }

    /** {@inheritDoc} */
    @Override public SqlCommand parse(SqlLexer lex) {<FILL_FUNCTION_BODY>}

    /** {@inheritDoc} */
    @Override public String toString() {
        return S.toString(SqlDropIndexCommand.class, this);
    }
}

        ifExists = parseIfExists(lex);

        SqlQualifiedName idxQName = parseQualifiedIdentifier(lex, IF);

        schemaName = idxQName.schemaName();
        idxName = idxQName.name();

        return this;
    
<no_super_class>