anchor.diff:      struct_query(Var, Line, Attrs).
   
   literal -> struct_get           :
  -    {Var, Line, Last, Attrs} = '$1',
  -    struct_get(Var, Line, Last, Attrs).
  +    {Var, Line, _Last, Attrs} = '$1',
  +    struct_get(Var, Line, Attrs).
   
   literal -> struct_set           :
       {Var, Line, Last, Attrs, Value} = '$1',
  
positive.code: struct_attr -> dot atom : unwrap('$2').
  
  struct_call -> struct_get fn_parameters :
      {Var, Line, Last, Attrs} = '$1',
      Get = struct_get(Var, Line, Last, Attrs, getx),
      Parent = lists:sublist(Attrs, length(Attrs) - 1),
      GetParent = struct_get(Var, Line, Last, Parent, getx),
      {call, Line, Get, [GetParent|'$2']}.
  
  bool_lit -> boolean             : {atom, line('$1'), unwrap('$1')}.
  
negative.code: normalise_args(Args) ->
      [erl_parse:normalise(Arg) || Arg <- Args].
  
  struct_get(Value, Line, Attrs) ->
      struct_get(Value, Line, Attrs, get).
  
  struct_get(Value, Line, Attrs, Fun) ->
      AttrListAst = erl_parse:abstract(Attrs),
  
      {call, Line,
          {remote, Line,
              {atom, Line, struct}, {atom, Line, Fun}},
              [Value, AttrListAst]}.
  
  struct_set(Value, Line, LastField, [Field], Literal) ->
      call_set(Value, LastField, Field, Line, Literal);
  