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: table(Module) -> ?atom_concat([i, Module]).
  
  build_table(Module) ->
    ets:new(table(Module), [set, named_table, public]).
  
  delete_table(Module) ->
    ets:delete(table(Module)).
  
negative.code:   case Final of
      [] -> { keydelete(Key, Old), keydelete(Key, Temp) };
      _  ->
        ensure_no_special_form_conflict(Meta, File, Key, Final, internal_conflict),
        { [{ Key, Final }|keydelete(Key, Old)], [{ Key, Final }|keydelete(Key, Temp)] }
    end.
  
  