 exports.prettyPrint = prettyPrint
 exports.plainPrettyPrint = plainPrettyPrint
 exports.labelDocs = labelDocs
-exports.builtinLibraryNumLines = library.split('\n').length + immutable.split('\n').length
+exports.builtinLibraryNumLines = completeLibrary.split('\n').length - 1
 
 exports.library = library
 exports.immutable = immutable

    compiledDefinitions, exportDictionary)

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

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

parseTopLevel = (source, typedModulePath = defaultTypedModulePath) ->


eval immutable

completeLibrary = library + '\n' + immutable + '\n'

# JS Reserved words

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