docs: @Override
      void parseTablesAndParams(VoltXMLElement stmtNode) {
          m_tableList.clear();
          // Parse parameters first to satisfy a dependency of expression parsing
          // which happens during table scan parsing.
          parseParameters(stmtNode);
  
          assert(stmtNode.children.size() > 1);
          AbstractParsedStmt childStmt = null;
          for (VoltXMLElement childSQL : stmtNode.children) {
              if (childSQL.name.equals(SELECT_NODE_NAME)) {
                  childStmt = new ParsedSelectStmt(null, m_paramValues, m_db);
                  // Assign every child a unique ID
                  childStmt.setStmtId(AbstractParsedStmt.NEXT_STMT_ID++);
                  childStmt.m_parentStmt = m_parentStmt;
                  childStmt.setParentAsUnionClause();
  
              }
              else if (childSQL.name.equals(UNION_NODE_NAME)) {
                  childStmt = new ParsedUnionStmt(null, m_paramValues, m_db);
                  // Set the parent before recursing to children.
                  childStmt.m_parentStmt = m_parentStmt;
              }
              else {
                  // skip Order By, Limit/Offset. They will be processed later
                  // by the 'parse' method
                  continue;
              }
              childStmt.m_paramsById.putAll(m_paramsById);
              childStmt.parseTablesAndParams(childSQL);
              promoteUnionParametersFromChild(childStmt);
              m_children.add(childStmt);
              // Add statement's tables to the consolidated list
              m_tableList.addAll(childStmt.m_tableList);
  
              // m_tableAliasListAsJoinOrder is not interesting for UNION
              // m_tableAliasMap may have same alias table from different children
              addStmtTablesFromChildren(childStmt.getScanEntrySet());
          }
      }