anchor.diff:  parse_seq(#state{tokens=[")"|_]} = State, Acc) -> {lists:reverse(Acc), State};
   parse_seq(#state{tokens=["|"|_]} = State, Acc) -> {lists:reverse(Acc), State};
   parse_seq(State0, Acc) ->
  -  ct:pal("in parse seq: ~p, ~p", [tokens(State0), Acc]),
  +  debug("in parse seq: ~p, ~p", [tokens(State0), Acc]),
     {Atom, State} = parse_atom(State0),
  -  ct:pal("in parse seq after parse_atom: ~p, ~p, ~p", [Atom, tokens(State), Acc]),
  +  debug("in parse seq after parse_atom: ~p, ~p, ~p", [Atom, tokens(State), Acc]),
     case current(State) of
       "..." -> parse_seq(move(State), [#one_or_more{children=Atom}|Acc]);
       _     -> parse_seq(State, Atom ++ Acc)
  
positive.code:   end.
  
  parse_expr(State0, Acc)                 ->
    ct:pal("in parse_expr: ~p, ~p", [tokens(State0), Acc]),
    {Seq, State} = parse_seq(State0),
    ct:pal("in parse_expr after parse_seq: ~p, ~p", [tokens(State), Seq]),
    case current(State) of
      "|" -> parse_expr(move(State), [maybe_required_seq(Seq)|Acc]);
      _   ->
  
negative.code:     0 -> {Str, ""};
      I -> {string:substr(Str, 1, I - 1), string:substr(Str, I + length(Delim))}
    end.
  
  -ifdef(DEBUG).
  debug(Fmt, Args) -> ct:pal(Fmt, Args).
  -else.
  debug(_Fmt, _Args) -> ok.
  -endif.
  
  %%%_* Tests ===================================================================
  
  