anchor.diff:  -record(either      , {children :: [pattern()]}).
   
   %% Child patterns
  +%% TODO: Default for arguments should be undefined
   -record(command  , {name :: string(), value = false :: any()}).
   -record(argument , {name :: string(), value = false :: any()}).
   -record(option   , { short            :: string()
  
positive.code:                     match(P, [opt("-x"), arg(9), arg(5)]))}
    ].
  
  match_option_test_() ->
    A  = opt("-a"),
    AT = A#option{value = true},
  
negative.code:                   match(either([AM, req([AN, AM])]), [A1, A2]))
    ].
  
  %% TODO:
  %% match_one_or_more_test_() ->
  %%   A  = arg("A"),
  %%   AV = arg("A", 9),
  %%   V  = arg(undefined, 9),
  %%   OX = opt("-x"),
  %%   [ ?_assertEqual({true, [], [AV]}, match(one_or_more([A]), [V]))
  %%   , ?_assertEqual({false, [], []}, match(one_or_more([A]), []))
  %%   , ?_assertEqual({false, [OX], []}, match(one_or_more([A]), [OX]))
  %%   ].
  parse_atom_test_() ->
    O = [ #option{short="-h"}
        , #option{short="-v", long="--verbose"}
  