anchor.diff:  -module(esast).
   -compile(export_all). 
   -compile({no_auto_import, [node/0]}).
  -
  -test() -> false.
   
   module(ModuleName, _Contents) ->
       io_lib:format(
  
positive.code:     updateRecord(whileStatement(Expression, Body), [{"type", <<"ForStatement">>}, {"init", Init}, {"update", Update}]).
  
  % Generates a forIn statement
  forInStatement(Left, Right, Body) when is_list(Body) ->
      updateRecord(statement(), [{"type", <<"ForInStatement">>}, {"left", Left}, {"right", Right}, {"each", false}, {"body", Body}]);
  forInStatement(Left, Right, Body) ->
      forInStatement(Left, Right, [Body]).
  
  
  % ------ Intenal ------ %
  
  
negative.code: switchStatement(Expression, Cases, HasLexScope) ->
      switchStatement(Expression, [Cases], HasLexScope).
  
  switchCase(Test, Consequent) when is_list(Consequent) ->
     updateRecord(statement(), [{"type", <<"SwitchCase">>}, {"test", Test}, {"consequent", Consequent}]);
  switchCase(Test, Consequent) ->
      switchCase(Test, [Consequent]).
  
  % Generates a return statement
  returnStatement(Expression) ->
      updateRecord(statement(), [{"type", <<"ReturnStatement">>}, {"argument", Expression}]).
  