anchor.diff:  invalid_arg(_) -> true.
   
   check_previous_defaults(Meta, Module, Name, Arity, Kind, Defaults, E) ->
  -  Matches = ets:match(elixir_module:defs_table(Module),
  -                      {{def, {Name, '$2'}}, '$1', '_', '_', '_', {'$3', '_', '_'}}),
  +  Matches = ets:lookup(elixir_module:defs_table(Module), {default, Name}),
     [begin
        elixir_errors:form_error(Meta, ?key(E, file), ?MODULE,
  -       {defs_with_defaults, Name, {Kind, Arity}, {K, A}})
  -   end || [K, A, D] <- Matches, A /= Arity, D /= 0, defaults_conflict(A, D, Arity, Defaults)].
  +       {defs_with_defaults, Kind, Name, Arity, A})
  +   end || {_, A, D} <- Matches, A /= Arity, D /= 0, defaults_conflict(A, D, Arity, Defaults)].
   
   defaults_conflict(A, D, Arity, Defaults) ->
     ((Arity >= (A - D)) andalso (Arity < A)) orelse
  
positive.code:   Tuple   = {Name, Arity},
    HasBody = Clauses =/= [],
  
    MaxDefaults =
      case ets:take(Defs, {def, Tuple}) of
        [{_, StoredKind, StoredMeta, StoredFile, StoredCheck,
  
negative.code: format_error({no_module, {Kind, Name, Arity}}) ->
    io_lib:format("cannot define function outside module, invalid scope for ~ts ~ts/~B", [Kind, Name, Arity]);
  
  format_error({defs_with_defaults, Kind, Name, Arity, A}) when Arity > A ->
    io_lib:format("~ts ~ts/~B defaults conflicts with ~ts/~B",
      [Kind, Name, Arity, Name, A]);
  
  format_error({defs_with_defaults, Kind, Name, Arity, A}) when Arity < A ->
    io_lib:format("~ts ~ts/~B conflicts with defaults from ~ts/~B",
      [Kind, Name, Arity, Name, A]);
  
  format_error({clauses_with_defaults, {Kind, Name, Arity}}) ->
    io_lib:format(""
  