anchor.diff:          true  -> set_default_value(Pat)
         end;
       Children ->
  -      set_children(Pat, [do_fix_list_arguments(C, FixThese) || C <- Children])
  +      set_children(Pat, [do_fix_repeating_arguments(C, FixThese) || C <- Children])
     end.
   
   -spec fix_either(pattern() | patterns()) -> pattern() | patterns().
  
positive.code: 
  list_argument_match_test_() ->
    M = fun (Pat, Args) ->
            {Fixed, _} = fix_list_arguments(Pat, []),
            match(Fixed, Args)
        end,
    [ ?_assertEqual({true, [], [arg("N", ["1", "2"])]},
  
negative.code:     _Res -> throw(parse_failure)
    end.
  
  -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_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_repeating_arguments(pattern(), patterns()) -> pattern().
  do_fix_repeating_arguments(Pat, FixThese) ->
    case children(Pat) of
      undefined ->
        case lists:member(Pat, FixThese) of
  