docs: @Override
      protected AstNode parseAlterStatement( DdlTokenStream tokens,
                                             AstNode parentNode ) throws ParsingException {
          assert tokens != null;
          assert parentNode != null;
  
          if (tokens.matches(STMT_ALTER_ALGORITHM)) {
              return parseStatement(tokens, STMT_ALTER_ALGORITHM, parentNode, TYPE_ALTER_ALGORITHM_STATEMENT);
          } else if (tokens.matches(STMT_ALTER_DATABASE)) {
              return parseStatement(tokens, STMT_ALTER_DATABASE, parentNode, TYPE_ALTER_DATABASE_STATEMENT);
          } else if (tokens.matches(STMT_ALTER_DEFINER)) {
              return parseStatement(tokens, STMT_ALTER_DEFINER, parentNode, TYPE_ALTER_DEFINER_STATEMENT);
          } else if (tokens.matches(STMT_ALTER_EVENT)) {
              return parseStatement(tokens, STMT_ALTER_EVENT, parentNode, TYPE_ALTER_EVENT_STATEMENT);
          } else if (tokens.matches(STMT_ALTER_FUNCTION)) {
              return parseStatement(tokens, STMT_ALTER_FUNCTION, parentNode, TYPE_ALTER_FUNCTION_STATEMENT);
          } else if (tokens.matches(STMT_ALTER_LOGFILE_GROUP)) {
              return parseStatement(tokens, STMT_ALTER_LOGFILE_GROUP, parentNode, TYPE_ALTER_LOGFILE_GROUP_STATEMENT);
          } else if (tokens.matches(STMT_ALTER_PROCEDURE)) {
              return parseStatement(tokens, STMT_ALTER_PROCEDURE, parentNode, TYPE_ALTER_PROCEDURE_STATEMENT);
          } else if (tokens.matches(STMT_ALTER_SCHEMA)) {
              return parseStatement(tokens, STMT_ALTER_SCHEMA, parentNode, TYPE_ALTER_SCHEMA_STATEMENT);
          } else if (tokens.matches(STMT_ALTER_SERVER)) {
              return parseStatement(tokens, STMT_ALTER_SERVER, parentNode, TYPE_ALTER_SERVER_STATEMENT);
          } else if (tokens.matches(STMT_ALTER_TABLESPACE)) {
              return parseStatement(tokens, STMT_ALTER_TABLESPACE, parentNode, TYPE_ALTER_TABLESPACE_STATEMENT);
          } else if (tokens.matches(STMT_ALTER_SQL_SECURITY)) {
              return parseStatement(tokens, STMT_ALTER_SQL_SECURITY, parentNode, TYPE_ALTER_VIEW_STATEMENT);
          } else if (tokens.matches(STMT_ALTER_IGNORE_TABLE) || tokens.matches(STMT_ALTER_ONLINE_TABLE)
                     || tokens.matches(STMT_ALTER_ONLINE_IGNORE_TABLE) || tokens.matches(STMT_ALTER_OFFLINE_TABLE)
                     || tokens.matches(STMT_ALTER_OFFLINE_IGNORE_TABLE)) {
              return parseAlterTableStatement(tokens, parentNode);
          }
  
          return super.parseAlterStatement(tokens, parentNode);
      }