docs: protected AstNode parseCreateCollationStatement( DdlTokenStream tokens,
                                                       AstNode parentNode ) throws ParsingException {
          assert tokens != null;
          assert parentNode != null;
  
          markStartOfStatement(tokens);
  
          tokens.consume(STMT_CREATE_COLLATION);
  
          String name = parseName(tokens);
  
          AstNode node = nodeFactory().node(name, parentNode, TYPE_CREATE_COLLATION_STATEMENT);
  
          // character set attribute
          tokens.consume("FOR");
          String charSetName = parseName(tokens);
          node.setProperty(COLLATION_CHARACTER_SET_NAME, charSetName);
  
          // collation source
          // TODO author=Horia Chiorean date=1/4/12 description=Only parsing a string atm (should probably be some nested nodes -
          // see StandardDdl.cnd
          tokens.consume("FROM");
          String collationSource = null;
          if (tokens.canConsume("EXTERNAL") || tokens.canConsume("DESC")) {
              collationSource = consumeParenBoundedTokens(tokens, false);
          } else if (tokens.canConsume("TRANSLATION")) {
              StringBuilder translationCollation = new StringBuilder("TRANSLATION ").append(tokens.consume());
              if (tokens.canConsume("THEN", "COLLATION")) {
                  translationCollation.append(" THEN COLLATION ");
                  translationCollation.append(parseName(tokens));
              }
              collationSource = translationCollation.toString();
          } else {
              collationSource = parseName(tokens);
          }
          node.setProperty(COLLATION_SOURCE, collationSource);
  
          // pad attribute
          if (tokens.canConsume("PAD", "SPACE")) {
              node.setProperty(PAD_ATTRIBUTE, PAD_ATTRIBUTE_PAD);
          } else if (tokens.canConsume("NO", "PAD")) {
              node.setProperty(PAD_ATTRIBUTE, PAD_ATTRIBUTE_NO_PAD);
          }
  
          parseUntilTerminator(tokens);
          markEndOfStatement(tokens, node);
          return node;
      }