@Override
    protected AstNode parseCustomStatement( DdlTokenStream tokens,
                                            AstNode parentNode ) throws ParsingException {
        assert tokens != null;
        assert parentNode != null;

        AstNode result = null;

        if (tokens.matches(STMT_COMMENT_ON)) {
            result = parseCommentStatement(tokens, parentNode);
        } else if (tokens.matches(STMT_ANALYZE)) {
            return parseStatement(tokens, STMT_ANALYZE, parentNode, TYPE_ANALYZE_STATEMENT);
        } else if (tokens.matches(STMT_ASSOCIATE_STATISTICS)) {
            return parseStatement(tokens, STMT_ASSOCIATE_STATISTICS, parentNode, TYPE_ASSOCIATE_STATISTICS_STATEMENT);
        } else if (tokens.matches(STMT_AUDIT)) {
            return parseStatement(tokens, STMT_AUDIT, parentNode, TYPE_AUDIT_STATEMENT);
        } else if (tokens.matches(STMT_COMMIT_FORCE) || tokens.matches(STMT_COMMIT_WORK) || tokens.matches(STMT_COMMIT_WRITE)) {
            return parseStatement(tokens, STMT_COMMIT, parentNode, TYPE_COMMIT_STATEMENT);
        } else if (tokens.matches(STMT_DISASSOCIATE_STATISTICS)) {
            return parseStatement(tokens, STMT_DISASSOCIATE_STATISTICS, parentNode, TYPE_DISASSOCIATE_STATISTICS_STATEMENT);
        } else if (tokens.matches(STMT_EXPLAIN_PLAN)) {
            return parseStatement(tokens, STMT_EXPLAIN_PLAN, parentNode, TYPE_EXPLAIN_PLAN_STATEMENT);
        } else if (tokens.matches(STMT_FLASHBACK)) {
            return parseStatement(tokens, STMT_FLASHBACK, parentNode, TYPE_FLASHBACK_STATEMENT);
        } else if (tokens.matches(STMT_LOCK_TABLE)) {
            return parseStatement(tokens, STMT_LOCK_TABLE, parentNode, TYPE_LOCK_TABLE_STATEMENT);
        } else if (tokens.matches(STMT_MERGE)) {
            return parseStatement(tokens, STMT_MERGE, parentNode, TYPE_MERGE_STATEMENT);
        } else if (tokens.matches(STMT_NOAUDIT)) {
            return parseStatement(tokens, STMT_NOAUDIT, parentNode, TYPE_NOAUDIT_STATEMENT);
        } else if (tokens.matches(STMT_PURGE)) {
            return parseStatement(tokens, STMT_PURGE, parentNode, TYPE_PURGE_STATEMENT);
        } else if (tokens.matches(STMT_RENAME)) {
            return parseStatement(tokens, STMT_RENAME, parentNode, TYPE_RENAME_STATEMENT);
        } else if (tokens.matches(STMT_ROLLBACK)) {
            return parseStatement(tokens, STMT_ROLLBACK, parentNode, TYPE_ROLLBACK_STATEMENT);
        } else if (tokens.matches(STMT_ROLLBACK_WORK)) {
            return parseStatement(tokens, STMT_ROLLBACK_WORK, parentNode, TYPE_ROLLBACK_STATEMENT);
        } else if (tokens.matches(STMT_ROLLBACK_TO_SAVEPOINT)) {
            return parseStatement(tokens, STMT_ROLLBACK_TO_SAVEPOINT, parentNode, TYPE_ROLLBACK_STATEMENT);
        } else if (tokens.matches(STMT_SAVEPOINT)) {
            return parseStatement(tokens, STMT_SAVEPOINT, parentNode, TYPE_SAVEPOINT_STATEMENT);
        } else if (tokens.matches(STMT_TRUNCATE)) {
            return parseStatement(tokens, STMT_TRUNCATE, parentNode, TYPE_TRUNCATE_STATEMENT);
        }

        if (result == null) {
            result = super.parseCustomStatement(tokens, parentNode);
        }
        return result;
    }
@ Override protected AstNode parseCustomStatement ( DdlTokenStream tokens , AstNode parentNode ) throws ParsingException { assert tokens != null ; assert parentNode != null ; AstNode result = null ; if ( tokens . matches ( STMT_COMMENT_ON ) ) { result = parseCommentStatement ( tokens , parentNode ) ; } else if ( tokens . matches ( STMT_ANALYZE ) ) { return parseStatement ( tokens , STMT_ANALYZE , parentNode , TYPE_ANALYZE_STATEMENT ) ; } else if ( tokens . matches ( STMT_ASSOCIATE_STATISTICS ) ) { return parseStatement ( tokens , STMT_ASSOCIATE_STATISTICS , parentNode , TYPE_ASSOCIATE_STATISTICS_STATEMENT ) ; } else if ( tokens . matches ( STMT_AUDIT ) ) { return parseStatement ( tokens , STMT_AUDIT , parentNode , TYPE_AUDIT_STATEMENT ) ; } else if ( tokens . matches ( STMT_COMMIT_FORCE ) || tokens . matches ( STMT_COMMIT_WORK ) || tokens . matches ( STMT_COMMIT_WRITE ) ) { return parseStatement ( tokens , STMT_COMMIT , parentNode , TYPE_COMMIT_STATEMENT ) ; } else if ( tokens . matches ( STMT_DISASSOCIATE_STATISTICS ) ) { return parseStatement ( tokens , STMT_DISASSOCIATE_STATISTICS , parentNode , TYPE_DISASSOCIATE_STATISTICS_STATEMENT ) ; } else if ( tokens . matches ( STMT_EXPLAIN_PLAN ) ) { return parseStatement ( tokens , STMT_EXPLAIN_PLAN , parentNode , TYPE_EXPLAIN_PLAN_STATEMENT ) ; } else if ( tokens . matches ( STMT_FLASHBACK ) ) { return parseStatement ( tokens , STMT_FLASHBACK , parentNode , TYPE_FLASHBACK_STATEMENT ) ; } else if ( tokens . matches ( STMT_LOCK_TABLE ) ) { return parseStatement ( tokens , STMT_LOCK_TABLE , parentNode , TYPE_LOCK_TABLE_STATEMENT ) ; } else if ( tokens . matches ( STMT_MERGE ) ) { return parseStatement ( tokens , STMT_MERGE , parentNode , TYPE_MERGE_STATEMENT ) ; } else if ( tokens . matches ( STMT_NOAUDIT ) ) { return parseStatement ( tokens , STMT_NOAUDIT , parentNode , TYPE_NOAUDIT_STATEMENT ) ; } else if ( tokens . matches ( STMT_PURGE ) ) { return parseStatement ( tokens , STMT_PURGE , parentNode , TYPE_PURGE_STATEMENT ) ; } else if ( tokens . matches ( STMT_RENAME ) ) { return parseStatement ( tokens , STMT_RENAME , parentNode , TYPE_RENAME_STATEMENT ) ; } else if ( tokens . matches ( STMT_ROLLBACK ) ) { return parseStatement ( tokens , STMT_ROLLBACK , parentNode , TYPE_ROLLBACK_STATEMENT ) ; } else if ( tokens . matches ( STMT_ROLLBACK_WORK ) ) { return parseStatement ( tokens , STMT_ROLLBACK_WORK , parentNode , TYPE_ROLLBACK_STATEMENT ) ; } else if ( tokens . matches ( STMT_ROLLBACK_TO_SAVEPOINT ) ) { return parseStatement ( tokens , STMT_ROLLBACK_TO_SAVEPOINT , parentNode , TYPE_ROLLBACK_STATEMENT ) ; } else if ( tokens . matches ( STMT_SAVEPOINT ) ) { return parseStatement ( tokens , STMT_SAVEPOINT , parentNode , TYPE_SAVEPOINT_STATEMENT ) ; } else if ( tokens . matches ( STMT_TRUNCATE ) ) { return parseStatement ( tokens , STMT_TRUNCATE , parentNode , TYPE_TRUNCATE_STATEMENT ) ; } if ( result == null ) { result = super . parseCustomStatement ( tokens , parentNode ) ; } return result ; }
{@inheritDoc}

@see org.modeshape.sequencer.ddl.StandardDdlParser#parseCustomStatement(org.modeshape.sequencer.ddl.DdlTokenStream,
org.modeshape.sequencer.ddl.node.AstNode)