anchor.diff:    [option_parse("-" ++ S) || S <- OptStrings].
   
   parse_args(Args, Options) ->
  -  State = #st{ tokens  = string:tokens(Args, " ")
  -             , options = Options
  -             , mode    = parse_args
  -             },
  +  State = #state{ 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)];
  
positive.code:       , #option{short="-f", long="--file", argcount=1}
        ],
    St = fun(Tokens) ->
             #st{ options = O
                , tokens  = Tokens
                , mode    = parse_pattern}
         end,
    [ ?_assertEqual({[#argument{name="FOO"}], St([])},
                    parse_atom(St(["FOO"])))
  
negative.code: 
  %%%_* Records =================================================================
  
  -record(state, { options = [] :: [child_pattern()]
                 , tokens  = [] :: [string()]
                 , mode         :: parse_mode()
                 }).
  
  %% Parent patterns
  -record(one_or_more , {children :: [pattern()]}).
  