anchor.diff:      _Res -> throw(parse_failure)
     end.
   
  --spec fix_list_arguments(pattern(), options()) -> {pattern(), options()}.
  -fix_list_arguments(Pat, Opts) ->
  +-spec fix_repeating_arguments(pattern(), options()) -> {pattern(), options()}.
  +fix_repeating_arguments(Pat, Opts) ->
     Either    = [children(C) || C <- children(fix_either(Pat))],
     FixThese  = [E || Case <- Either, E <- Case, count(E, Case) > 1],
  -  FixedPat  = do_fix_list_arguments(Pat, FixThese),
  -  FixedOpts = [do_fix_list_arguments(Opt, FixThese) || Opt <- Opts],
  +  FixedPat  = do_fix_repeating_arguments(Pat, FixThese),
  +  FixedOpts = [do_fix_repeating_arguments(Opt, FixThese) || Opt <- Opts],
     {FixedPat, FixedOpts}.
   
   -spec count(any(), list()) -> non_neg_integer().
   count(X, Patterns) ->
     length([P || P <- Patterns, X == P]).
   
  --spec do_fix_list_arguments(pattern(), patterns()) -> pattern().
  -do_fix_list_arguments(Pat, FixThese) ->
  +-spec do_fix_repeating_arguments(pattern(), patterns()) -> pattern().
  +do_fix_repeating_arguments(Pat, FixThese) ->
     case children(Pat) of
       undefined ->
         case lists:member(Pat, FixThese) of
  
positive.code:   Opts0                = parse_doc_options(Doc),
    {Pattern, Opts1}     = parse_pattern(formal_usage(Usage), Opts0),
    ParsedArgs           = parse_args(Args, Opts1),
    {FixedPattern, Opts} = fix_list_arguments(Pattern, Opts1),
    case match(FixedPattern, ParsedArgs) of
      {true, [], Collected} ->
        debug("\n"
  
negative.code: 
  list_argument_match_test_() ->
    M = fun (Pat, Args) ->
            {Fixed, _} = fix_repeating_arguments(Pat, []),
            match(Fixed, Args)
        end,
    [ ?_assertEqual({true, [], [arg("N", ["1", "2"])]},
  