anchor.diff:  
   %% @doc Converts a parse tree form the abstract format to a map based repr.
   %% TODO: Attributes are not being handled correctly.
  --spec to_map(term()) -> ok.
  +-spec to_map(term()) -> tree_node().
   to_map(ListParsed) when is_list(ListParsed) ->
       lists:map(fun to_map/1, ListParsed);
   
  
positive.code: -module(elvis_code).
  
  -export([
           parse_tree/1
          ]).
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %%% Public API
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  -spec parse_tree(string()) -> [{ok | error, erl_parse:abstract_form()}].
  parse_tree(Source) ->
      SourceStr = elvis_utils:to_str(Source),
      {ok, Tokens, _} = erl_scan:string(SourceStr, {1, 1}, []),
      {ok, NewTokens} = aleppo:process_tokens(Tokens),
  
      Forms = split_when(fun is_dot/1, NewTokens),
      [to_map(Parsed)
       || {ok, Parsed} <- lists:map(fun erl_parse:parse_form/1, Forms)].
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %%% Private
  
negative.code:                  after_body => to_map(AfterBody)},
        content => to_map(Body)};
  
  to_map({'if', Location, IfClauses}) ->
      #{type => 'if',
        attrs => #{location => Location},
        content => to_map(IfClauses)};
  
  to_map({'catch', Location, Expr}) ->
      #{type => 'catch',
        attrs => #{location => Location},
        content => [to_map(Expr)]};
  
  to_map({'receive', Location, Clauses}) ->
      #{type => 'receive',
        attrs => #{location => Location},
        content => to_map(Clauses)};
  
  to_map({'receive', Location, Clauses, AfterExpr, AfterBody}) ->
      #{type => 'receive',
        attrs => #{location => Location,
                   after_expr => to_map(AfterExpr),
                   after_body => to_map(AfterBody)},
        content => to_map(Clauses)};
  
  %% List
  
  to_map({nil, Location}) ->
  