anchor.diff:      nomatch                 -> false
     end.
   
  -option_name(#option{long=undefined, short=Short}) -> Short;
  -option_name(#option{long=Long})                   -> Long.
   
   match(Pat, Rest) -> match(Pat, Rest, []).
   
  
positive.code:   Cmd#command{value=true}.
  
  match_fun(#option{}=Opt) ->
    fun(#option{}=O) -> option_name(O) == option_name(Opt);
       (_)           -> false
    end;
  match_fun(#argument{}) ->
  
negative.code: 
  flatten_children(Children) ->
    lists:flatten(lists:map(fun flatten/1, Children)).
  
  name(#command{name=Name})                 -> Name;
  name(#argument{name=Name})                -> Name;
  name(#option{long=undefined, short=Name}) -> Name;
  name(#option{long=Name})                  -> Name.
  
  value(#command{value=Value})  -> Value;
  value(#argument{value=Value}) -> Value;
  value(#option{value=Value})   -> Value.
  
  parse_doc_options(Doc) ->
    [_|OptStrings] = re:split(Doc, "^ *-|\\n *-", [{return, list}]),
  