docs: @Override
      public void parse( String ddl,
                         AstNode rootNode,
                         Object scoreReturnObject ) throws ParsingException {
          CheckArg.isNotNull(ddl, "ddl");
          CheckArg.isNotNull(rootNode, "rootNode");
          problems.clear();
          setRootNode(rootNode);
  
          DdlTokenStream tokens = null;
          if (scoreReturnObject instanceof DdlTokenStream) {
              tokens = (DdlTokenStream)scoreReturnObject;
              tokens.rewind();
          } else {
              // Need to create the token stream ...
              boolean includeComments = false;
              tokens = new DdlTokenStream(ddl, DdlTokenStream.ddlTokenizer(includeComments), false);
              initializeTokenStream(tokens);
              tokens.start();
          }
  
          testPrint("\n== >> StandardDdlParser.parse() PARSING STARTED: ");
  
          // Simply move to the next statement start (registered prior to tokenizing).
          while (moveToNextStatementStart(tokens)) {
  
              // It is assumed that if a statement is registered, the registering dialect will handle the parsing of that object
              // and successfully create a statement {@link AstNode}
              AstNode stmtNode = parseNextStatement(tokens, rootNode);
              if (stmtNode == null) {
                  markStartOfStatement(tokens);
                  String stmtName = tokens.consume();
                  stmtNode = parseIgnorableStatement(tokens, stmtName, rootNode);
                  markEndOfStatement(tokens, stmtNode);
              }
              // testPrint("== >> Found Statement" + "(" + (++count) + "):\n" + stmtNode);
          }
  
          postProcess(rootNode);
  
          rewrite(tokens, rootNode);
  
          for (DdlParserProblem problem : problems) {
              attachNewProblem(problem, rootNode);
          }
  
          // // Compute the score based upon the number of AST nodes ...
          // // System.out.println("\n\n " + getId() + " (score=" + (getScore(rootNode) - 1 - (problems.size() * 2)) + ")\n" +
          // // rootNode);
          // int score = getScore(rootNode) - 1; // exclude the root, since we didn't create it
          // score -= (problems.size() * 2); // remove double the # of problems
          // scorer.scoreStatements(score);
  
          if (testMode) {
              // testPrint("== >> StandardDdlParser.parse() PARSING COMPLETE: " + statements.size() + " statements parsed.\n\n");
              int count = 0;
              for (AstNode child : rootNode.getChildren()) {
                  testPrint("== >> Found Statement" + "(" + (++count) + "):\n" + child);
              }
          }
      }