anchor.diff:                         boolean(),
                          expression_node()) -> unary_expression_node().
   unary_expression(Operator, Prefix, Argument) when ?IS_UNARY_OPERATOR(Operator)  ->
  -    %?spec([{Operator, anything},
  -    %       {Prefix, boolean},
  -    %       {Argument, expression}]),
       update_record(expression(), [{"type", <<"UnaryExpression">>},
                                    {"operator", Operator},
                                    {"prefix", Prefix},
  
positive.code:                        expression_node(),
                         statement_node()) -> for_of_statement_node().
  for_of_statement(Left, Right, Body) ->
      %?spec([{Left, [variableDeclaration, expression]}, {Right, expression}, {Body, statement}]),
      update_record(statement(), [{"type", <<"ForOfStatement">>},
                                  {"left", Left},
                                  {"right", Right},
  
negative.code:                         expression_node(),
                          boolean()) -> update_expression_node().
  update_expression(Operator, Argument, Prefix) when ?IS_UPDATE_OPERATOR(Operator) ->
      update_record(expression(), [{"type", <<"UpdateExpression">>},
                                   {"operator", Operator},
                                   {"argument", Argument},
  