   types: ctx._scope()
   subs: ctx.substitution.fails
   ast: ast
-  compiled: library + immutable + compiledDefinitions.js + '\n;' + compiledExpression.js
+  compiled: completeLibrary + compiledDefinitions.js + '\n;' + compiledExpression.js
 
 typeEnumaration = (ctx) ->
   values mapMap _type, ctx._scope()


eval immutable

# JS Reserved words

reservedInJs = newSetWith ("abstract arguments boolean break byte case catch char class " +

    compiledDefinitions, exportDictionary)

compileModuleWithDependencies = (typedModulePath = defaultTypedModulePath) ->
  js: completeLibrary + (listOfLines map lookupJs,
    (setToArray runtimeDependencies (modulePathToName typedModulePath.names)))

compileExpression = (source, typedModulePath = defaultTypedModulePath) ->
  {js} = parsed = parseExpression source, typedModulePath
  extend parsed,
    (js:  completeLibrary + (listOfLines map lookupJs,
      (setToArray runtimeDependencies (modulePathToName typedModulePath.names))) + '\n;' + js)

parseTopLevel = (source, typedModulePath = defaultTypedModulePath) ->
