anchor.diff:  macros_clause(Line, Macros) ->
     Sorted = lists:sort(Macros),
     { clause, Line, [{ atom, Line, macros }], [], [elixir_tree_helpers:abstract_syntax(Sorted)] }.
  +
  +docs_clause(Line, Module, #elixir_compile { docs = true }) ->
  +  Docs = ets:tab2list(docs_table(Module)),
  +  { clause, Line, [{ atom, Line, docs }], [], [elixir_tree_helpers:abstract_syntax(Docs)] };
  +
  +docs_clause(Line, _Module, _) ->
  +  { clause, Line, [{ atom, Line, docs }], [], [{ atom, Line, nil }] }.
  +
  +moduledoc_clause(Line, Module, #elixir_compile { docs = true }) ->
  +  Docs = '::Module':read_data(Module, moduledoc),
  +  { clause, Line, [{ atom, Line, moduledoc }], [], [elixir_tree_helpers:abstract_syntax(Docs)] };
  +
  +moduledoc_clause(Line, _Module, _) ->
  +  { clause, Line, [{ atom, Line, moduledoc }], [], [{ atom, Line, nil }] }.
   
   data_clause(Line, Module) ->
     AttrTable  = attribute_table(Module),
  
positive.code: 
  %% Return the form with exports and function declarations.
  
  functions_form(Line, Filename, Module) ->
    { Export, Private, Macros, Functions } = elixir_def:unwrap_stored_definitions(Module),
  
    { FinalExport, FinalFunctions } =
      add_info_function(Line, Filename, Module, Export, Functions, Macros),
  
    { FinalExport ++ Private, [
      {attribute, Line, export, lists:sort(FinalExport)} | FinalFunctions
  
negative.code: translate_data(Table, Registered, [{_,nil}|T]) ->
    translate_data(Table, Registered, T);
  
  translate_data(Table, Registered, [{Skip,_}|T]) when Skip == doc; Skip == moduledoc ->
    translate_data(Table, Registered, T);
  
  translate_data(Table, Registered, [{K,V}|T]) ->
    case reserved_data(Registered, K) of
      true  ->
  