docs: protected List<EquPart> tokenize() throws Exception
      {
          /*
           * break apart obvious tokens, realizing that some may need further
           * breakage and some may need to be merged back again
           */
          final List<EquPart> tokens = new ArrayList<>();
          Token token = null;
          char c;
          int level = 0;
  
          for (int a = 0; a < equ.length(); a++)
          {
              c = equ.charAt(a);
              final boolean isWhitespace = Character.isWhitespace(c);
  
              if (isWhitespace)
                  if (!(token != null && token instanceof TokLiteral && token.accepts(c)))
                  {
                      /*
                       * spaces are allowed inside of literals
                       */
                      if (token != null)
                          token.addTo(tokens);
                      token = null;
                      continue;
                  }
  
              if (c == '(')
                  level++;
  
              if (c == ')')
                  level--;
  
              if (token != null && token.accepts(c))
                  token.put(c);
              else
              {
  
                  if (token != null)
                      token.addTo(tokens);
  
                  token = Token.instanceFor(c);
                  token.setLevel(level);
                  token.put(c);
              }
          }
  
          if (token != null)
              token.addTo(tokens);
  
          return tokens;
      }