anchor.diff:  -include("estree_prefabs.hrl").
   
   % -- Functions --
  -c_module(ModuleName, ExportList, FunctionList) ->
  +c_module(ModuleName, [{FuncName, Arity} | OtherExports], 
  +         [{FuncNameWithArity, Function} | OtherFunctions]) when is_list(ModuleName) , is_list(FuncName) , is_integer(Arity) , is_list(FuncNameWithArity) ->
  +    ExportList = [{FuncName, Arity} | OtherExports],
  +    FunctionList = [{FuncNameWithArity, Function} | OtherFunctions],
       program(
           constDeclaration(
               list_to_binary(ModuleName),
  
positive.code: 
  % Generates a switch statement for use in c_exports node. Takes a tuple representing function
  % name and arities belonging to said function name. Cases will be generated for all such arities
  c_exports_gencases({FuncName, Arities}) ->
      [
          switchStatement(
              memberExpression(identifier(<<"arguments">>), identifier(<<"length">>), false),
  
negative.code:         )
      ].
  
  % Generates function datastructure which takes a list in the form of [{"SomeFun/2", FUNCTION}] where function
  % is an ESTree functionExpression / functionDeclaration and produces the following:
  % const functions = {"somefun/2": function() { ... }}
  c_functions([{FuncNameWithArity, Function} | Rest]) ->
      FunctionList = [{FuncNameWithArity, Function} | Rest],
      constDeclaration(
          <<"functions">>,
          objectExpression(
              lists:map(fun({FuncName, _Fn}) ->
                  property(
                      literal(list_to_binary(FuncName)), 
                      functionExpression(null, [], blockStatement([
                          % Function
                          returnStatement(literal(<<"function parsing not yet implemented">>))
                      ]), false)
                  )
              end , FunctionList)
          )
      ).
  
  % ------ Intenal ------ %
  