anchor.diff:    %% Add spaces around []()| and ...
     Source = re:replace(Source0, "([\\[\\]\\(\\)\\|]|\\.\\.\\.)", " \\1 ",
                         [{return, list}, global]),
  -  State = #st{ tokens  = string:tokens(Source, " ")
  -             , options = Options
  -             , mode    = parse_pattern
  -             },
  +  State = #state{ tokens  = string:tokens(Source, " ")
  +                , options = Options
  +                , mode    = parse_pattern
  +                },
     {Result, _} = parse_expr(State),
     #required{children=Result}.
   
  
positive.code:   [option_parse("-" ++ S) || S <- OptStrings].
  
  parse_args(Args, Options) ->
    State = #st{ tokens  = string:tokens(Args, " ")
               , options = Options
               , mode    = parse_args
               },
    parse_args_tokens(State).
  
  parse_args_tokens(#st{tokens=[]}) -> [];
  parse_args_tokens(State0) ->
    case current(State0) of
      "--"           -> [#argument{value=Arg} || Arg <- tokens(State0)];
  
negative.code: 
  %%%_* Records =================================================================
  
  -record(state, { options = [] :: [child_pattern()]
                 , tokens  = [] :: [string()]
                 , mode         :: parse_mode()
                 }).
  
  %% Parent patterns
  -record(one_or_more , {children :: [pattern()]}).
  