anchor.diff:  %% Ensure the given functions don't clash with any
   %% of Elixir non overridable macros.
   
  -ensure_no_in_erlang_macro_conflict(Meta, File, Key, [{Name,Arity}|T], Reason) ->
  +ensure_no_special_form_conflict(Meta, File, Key, [{Name,Arity}|T], Reason) ->
     Values = lists:filter(fun({X,Y}) ->
       (Name == X) andalso ((Y == '*') orelse (Y == Arity))
  -  end, non_overridable_macros()),
  +  end, special_form()),
   
     case Values /= [] of
       true  ->
         Tuple = { Reason, { Key, Name, Arity } },
         elixir_errors:form_error(Meta, File, ?MODULE, Tuple);
  -    false -> ensure_no_in_erlang_macro_conflict(Meta, File, Key, T, Reason)
  +    false -> ensure_no_special_form_conflict(Meta, File, Key, T, Reason)
     end;
   
  -ensure_no_in_erlang_macro_conflict(_Meta, _File, _Key, [], _) -> ok.
  +ensure_no_special_form_conflict(_Meta, _File, _Key, [], _) -> ok.
   
   %% ERROR HANDLING
   
  
positive.code: %% conflicts with an import is automatically done by Erlang.
  
  ensure_no_local_conflict(Meta, File, Module, AllDefined) ->
    ensure_no_in_erlang_macro_conflict(Meta, File, Module, AllDefined, local_conflict).
  
  %% Find conlicts in the given list of functions with
  %% the recorded set of imports.
  
negative.code: table(Module) -> ?atom_concat([i, Module]).
  
  build_table(Module) ->
    ets:new(table(Module), [bag, named_table, public]).
  
  delete_table(Module) ->
    ets:delete(table(Module)).
  