docs: protected List<TokenList.Token> parseParameterCommaBlock( TokenList tokens, Sequence sequence ) {
          // find all the comma tokens
          List<TokenList.Token> commas = new ArrayList<TokenList.Token>();
          TokenList.Token token = tokens.first;
  
          int numBracket = 0;
          while( token != null ) {
              if( token.getType() == Type.SYMBOL ) {
                  switch( token.getSymbol() ) {
                      case COMMA:
                          if( numBracket == 0)
                              commas.add(token);
                      break;
  
                      case BRACKET_LEFT: numBracket++; break;
                      case BRACKET_RIGHT: numBracket--; break;
                  }
              }
              token = token.next;
          }
  
          List<TokenList.Token> output = new ArrayList<TokenList.Token>();
          if( commas.isEmpty() ) {
              output.add(parseBlockNoParentheses(tokens, sequence, false));
          } else {
              TokenList.Token before = tokens.first;
              for (int i = 0; i < commas.size(); i++) {
                  TokenList.Token after = commas.get(i);
                  if( before == after )
                      throw new ParseError("No empty function inputs allowed!");
                  TokenList.Token tmp = after.next;
                  TokenList sublist = tokens.extractSubList(before,after);
                  sublist.remove(after);// remove the comma
                  output.add(parseBlockNoParentheses(sublist, sequence, false));
                  before = tmp;
              }
  
              // if the last character is a comma then after.next above will be null and thus before is null
              if( before == null )
                  throw new ParseError("No empty function inputs allowed!");
  
              TokenList.Token after = tokens.last;
              TokenList sublist = tokens.extractSubList(before, after);
              output.add(parseBlockNoParentheses(sublist, sequence, false));
          }
  
          return output;
      }