code: public static List<String> split(
      List<String> list, Functor<Integer, Integer> symbols, String text, int begin, int end, char delimiter, Functor<Integer, Integer> extra
      ) {
          int next;
          while ((next = Balanced.indexOf(symbols, text, begin, end, delimiter, extra)) != -1) {
              list.add(text.substring(begin, next));
              begin = next + 1;
          }
          if (begin < end) list.add(text.substring(begin, end));
          while (list.size() > 0 && list.get(list.size()-1).length() == 0) list.remove(list.size()-1);
          return list;
      }
docs: Splits a string around the specified character, storing split parts into a provided list.
  However, any occurrence of the specified character enclosed between balanced parentheses/brackets/braces is ignored.
  
  @param list a List to store split parts
  @param symbols an optional functor to provide the complete set of balancing symbols
  @param text a String
  @param begin a begin offset
  @param end an end offset
  @param delimiter the character to split the string around
  @param extra an optional functor to provide balancing symbols in addition to the standard ones
  @return the first argument