docs: protected String consumeParenBoundedTokens( DdlTokenStream tokens,
                                                  boolean includeParens ) throws ParsingException {
          assert tokens != null;
  
          // Assume we start with open parenthesis '(', then we can count on walking through ALL tokens until we find the close
          // parenthesis ')'. If there are intermediate parenthesis, we can count on them being pairs.
          if (tokens.canConsume(L_PAREN)) { // EXPECTED
              StringBuilder sb = new StringBuilder(100);
              if (includeParens) {
                  sb.append(L_PAREN);
              }
              int iParen = 0;
              while (tokens.hasNext()) {
                  if (tokens.matches(L_PAREN)) {
                      iParen++;
                  } else if (tokens.matches(R_PAREN)) {
                      if (iParen == 0) {
                          tokens.consume(R_PAREN);
                          if (includeParens) {
                              sb.append(SPACE).append(R_PAREN);
                          }
                          break;
                      }
                      iParen--;
                  }
                  if (isComment(tokens)) {
                      tokens.consume();
                  } else {
                      sb.append(SPACE).append(tokens.consume());
                  }
              }
              return sb.toString();
          }
  
          return null;
      }