     params: (map validIdentifier, allFieldNames)
     body: paramAssigns)
   accessors = fieldNames.map (name) ->
-    (jsAssignStatement (validIdentifier "#{dictName}-#{name}"), (jsFunction
+    (jsVarDeclaration (validIdentifier "#{dictName}-#{name}"), (jsFunction
       name: (validIdentifier name)
       params: ["dict"]
       body: [(jsReturn (jsAccess "dict", name))]))

  replaceOrAddToMap moduleGraph, moduleName, requires: requiredMap
  toInject = collectRequiresFor moduleName
  ctx = injectedContext toInject
  {request, ast, ir, js} = compileCtxAstToJs topLevel, ctx, (astFromSource "(#{source})", -1, -1)
  if request
    if not allInjected request, requiredMap
      return compileTopLevel source, moduleName, request

    undefined
  else
    compiled

importAny = (defaultImports) ->
  concat (for name, names of values defaultImports
    imports name, names)

exportAll = (ctx, definitions) ->
  nonVirtual = filterMap ((name, declaration) -> not declaration.virtual), ctx._scope()
  exported = subtractSets nonVirtual, builtInDefinitions()
  exportList = map validIdentifier, (setToArray exported)
  (iife (concat [
    toJsString 'use strict'
    definitions
    [(jsReturn (jsDictionary exportList, exportList))]]))

ms = {}
ms.fn = ms_fn = (ctx, call) ->
