docs: @Override
      protected AstNode parseCustomStatement( DdlTokenStream tokens,
                                              AstNode parentNode ) throws ParsingException {
          assert tokens != null;
          assert parentNode != null;
  
          if (tokens.matches(STMT_RENAME_DATABASE)) {
              markStartOfStatement(tokens);
  
              // RENAME DATABASE db_name TO new_db_name;
              tokens.consume(STMT_RENAME_DATABASE);
              String oldName = parseName(tokens);
              tokens.consume("TO");
              AstNode node = nodeFactory().node(oldName, parentNode, TYPE_RENAME_DATABASE_STATEMENT);
              String newName = parseName(tokens);
              node.setProperty(NEW_NAME, newName);
  
              markEndOfStatement(tokens, node);
              return node;
          } else if (tokens.matches(STMT_RENAME_SCHEMA)) {
              markStartOfStatement(tokens);
  
              // RENAME SCHEMA schema_name TO new_schema_name;
              tokens.consume(STMT_RENAME_SCHEMA);
              String oldName = parseName(tokens);
              tokens.consume("TO");
              AstNode node = nodeFactory().node(oldName, parentNode, TYPE_RENAME_SCHEMA_STATEMENT);
              String newName = parseName(tokens);
              node.setProperty(NEW_NAME, newName);
  
              markEndOfStatement(tokens, node);
              return node;
          } else if (tokens.matches(STMT_RENAME_TABLE)) {
              markStartOfStatement(tokens);
  
              // RENAME TABLE old_table TO tmp_table,
              // new_table TO old_table,
              // tmp_table TO new_table;
              tokens.consume(STMT_RENAME_TABLE);
  
              String oldName = parseName(tokens);
              tokens.consume("TO");
              String newName = parseName(tokens);
  
              AstNode node = nodeFactory().node(oldName, parentNode, TYPE_RENAME_TABLE_STATEMENT);
              node.setProperty(NEW_NAME, newName);
  
              // IF NOT MULTIPLE RENAMES, FINISH AND RETURN
              if (!tokens.matches(COMMA)) {
                  markEndOfStatement(tokens, node);
                  return node;
              }
  
              // Assume multiple renames
  
              // Create list of nodes so we can re-set the expression of each to reflect ONE rename.
              List<AstNode> nodes = new ArrayList<AstNode>();
              nodes.add(node);
  
              while (tokens.matches(COMMA)) {
                  tokens.consume(COMMA);
                  oldName = parseName(tokens);
                  tokens.consume("TO");
                  newName = parseName(tokens);
                  node = nodeFactory().node(oldName, parentNode, TYPE_RENAME_TABLE_STATEMENT);
                  node.setProperty(NEW_NAME, newName);
                  nodes.add(node);
              }
  
              markEndOfStatement(tokens, nodes.get(0));
  
              String originalExpression = (String)nodes.get(0).getProperty(DDL_EXPRESSION);
              Object startLineNumber = nodes.get(0).getProperty(DDL_START_LINE_NUMBER);
              Object startColumnNumber = nodes.get(0).getProperty(DDL_START_COLUMN_NUMBER);
              Object startCharIndex = nodes.get(0).getProperty(DDL_START_CHAR_INDEX);
  
              for (AstNode nextNode : nodes) {
                  oldName = nextNode.getName();
                  newName = (String)nextNode.getProperty(NEW_NAME);
                  String express = "RENAME TABLE" + SPACE + oldName + SPACE + "TO" + SPACE + newName + SEMICOLON;
                  nextNode.setProperty(DDL_EXPRESSION, express);
                  nextNode.setProperty(DDL_ORIGINAL_EXPRESSION, originalExpression);
                  nextNode.setProperty(DDL_START_LINE_NUMBER, startLineNumber);
                  nextNode.setProperty(DDL_START_COLUMN_NUMBER, startColumnNumber);
                  nextNode.setProperty(DDL_START_CHAR_INDEX, startCharIndex);
              }
  
              return nodes.get(0);
          }
  
          return super.parseCustomStatement(tokens, parentNode);
      }