docs: @Override
      protected List<Token> initializeTokens( List<Token> tokens ) {
          // THIS IS WHERE WE DO THE WORK OF PRE-PARSING TOKENS AND REPLACING KEYWORDS AND STATEMENT STARTS WITH
          // APPLICABLE TOKEN TYPE BITMASK VALUES
          // MyClass[] array = (MyClass[])list.toArray(new MyClass[list.size()]);
  
          Token[] tokensArray = tokens.toArray(new Token[tokens.size()]);
          List<Token> reTypedTokens = new ArrayList<Token>(tokens.size());
  
          for (int i = 0; i < tokensArray.length; i++) {
              boolean isStatementStart = false;
              if (isKeyWord(tokensArray[i].value())) {
                  Token retypedToken = tokensArray[i].withType(DdlTokenizer.KEYWORD);
                  // Now we check to see if this keyword begins a registered statement start
  
                  // Keep track of token increment (# of tokens for a phrase)
                  // Need to increment iterator (i) in case phrases like "ALTER ROLLBACK" appear. ROLLBACK is also a statement
                  // start phrase and we need to walk ignore ROLLBACK in this case.
                  int tokenIncrement = 0;
                  for (String[] nextStmtStart : registeredStatementStartPhrases) {
                      boolean matches = true;
  
                      for (int j = 0; j < nextStmtStart.length; j++) {
                          if (matches) {
                              matches = nextStmtStart[j].equalsIgnoreCase(tokensArray[i + j].value())
                                        || nextStmtStart[j].equals(ANY_VALUE);
                          }
                      }
                      if (matches) {
                          isStatementStart = true;
                          tokenIncrement = nextStmtStart.length - 1;
                          break;
                      }
                  }
                  if (isStatementStart) {
                      retypedToken = retypedToken.withType(DdlTokenizer.STATEMENT_KEY);
                  }
                  reTypedTokens.add(retypedToken);
  
                  if (isStatementStart) {
                      // Copy any additional tokens used in the phrase
                      for (int k = 0; k < tokenIncrement; k++) {
                          i++;
                          reTypedTokens.add(tokensArray[i]);
                      }
                  }
              } else {
                  reTypedTokens.add(tokensArray[i]);
              }
  
          }
  
          return reTypedTokens;
      }