docs: def split(self, text):
          '''
          Splits the text with function arguments into the array with first
          class citizens separated. See the unit tests for clarificatin.
          '''
          # nesting character -> count
          counters = {"'": False, '(': 0}
  
          def reverse(char):
  
              def wrapped():
                  counters[char] = not counters[char]
              return wrapped
  
          def increase(char):
  
              def wrapped():
                  counters[char] += 1
              return wrapped
  
          def decrease(char):
  
              def wrapped():
                  counters[char] -= 1
              return wrapped
  
          def is_top_level():
              return all([not x for x in counters.values()])
  
          def fail():
              raise BadSyntax('Syntax error processing line: %s' %\
                              self._last_line)
  
  
          temp = ""
          # end of field flag indicates that we expect next character to be
          # either whitespace of split
          eof_flag = False
  
          def append_char(temp, char):
              if eof_flag:
                  fail()
              temp += char
              return temp
  
          # dictionary char -> handler
          nesters = {"'": reverse("'"), "(": increase('('), ")": decrease('(')}
          # chars to split on
          split = (',', )
          # chars to swallow
          consume = (' ', '\n')
  
          result = list()
  
          self.log("spliting: %s", text)
  
          for char in text:
              if char in nesters:
                  nesters[char]()
                  temp = append_char(temp, char)
              elif not is_top_level():
                  temp = append_char(temp, char)
              elif char in consume:
                  if len(temp) > 0:
                      eof_flag = True
                  continue
              elif char in split:
                  result.append(temp)
                  temp = ""
                  eof_flag = False
              else:
                  temp = append_char(temp, char)
          if len(temp) > 0:
              result.append(temp)
  
          if not is_top_level():
              fail()
          self.log('Split returns %r', result)
          return result