anchor.diff:    , ?_assertEqual({true, []  , [OB]}, match(optional([OA, OB]), [OB]))
     , ?_assertEqual({true, [OX], []}  , match(optional([OA, OB]), [OX]))
     , ?_assertEqual({true, []  , [AV]}, match(optional([A])     , [V]))
  -  , ?_assertEqual({true, [OX], [OB, OA]},
  +  , ?_assertEqual({true, [OX], [OA, OB]},
                     match(optional([OA, OB]), [OB, OX, OA]))
     ].
   
  
positive.code: match_argument_test_() ->
    A  = arg("V"),
    AV = arg("V", 9),
    V  = arg(undefined, 9),
    V0 = arg(undefined, 0),
    OX = opt("-x"),
    OA = opt("-a"),
    [ ?_assertEqual({true , []      , [AV]}, match(A, [AV]))
  
negative.code: 
  match_command_test_() ->
    C  = cmd("c"),
    AC = arg(undefined, "c"),
    CT = cmd("c", true),
    OX = opt("-x"),
    OA = opt("-a"),
    [ ?_assertEqual({true , []      , [CT]}, match(C, [AC]))
    , ?_assertEqual({false, [OX]    , []}  , match(C, [OX]))
    , ?_assertEqual({true , [OX, OA], [CT]}, match(C, [OX, OA, AC]))
    , ?_assertEqual({true, [], [cmd("rm", true)]},
                    match(either([cmd("add"), cmd("rm")]),
                          [arg(undefined, "rm")]))
      %% Either...
    ].
  
  