anchor.diff:  
   %% atom ::= '(' expr ')' | '[' expr ']' | 'options'
   %%       | long | shorts | argument | command ;
  +-spec parse_atom(state()) -> {patterns(), state()}.
   parse_atom(State) ->
     debug("in parse atom: ~p", [tokens(State)]),
     case current(State) of
  
positive.code:     Groups -> fix_either(Groups)
    end.
  
  fix_either(#either{}=Pat, Children)      ->
    [[C|Children] || C <- Pat#either.children];
  fix_either(#required{}=Pat, Children)    -> [Pat#required.children ++ Children];
  
negative.code: most_consumed({_, R, _}=Res, {_, Min, _}) when length(R) < length(Min) -> Res;
  most_consumed({_, _, _}    , Acc)                                      -> Acc.
  
  -spec match_one_or_more(#one_or_more{}, patterns(), patterns()) ->
                             {boolean(), patterns(), patterns()}.
  match_one_or_more(#one_or_more{children=[Child]}, Rest0, Acc0) ->
    %% If the child is optional we do not need to consume anything
    ConsumptionNotRequired = is_record(Child, optional),
  