     declaration.final = no
     @_declare name, declaration
 
+  declareAsFinal: (name) ->
+    (@_declarationInCurrentScope name).final = yes
+
   _declare: (name, declaration) ->
     declaration.id ?= @freshId()
     replaceOrAddToMap @_scope(), name, declaration

      undefined

  _declarationInScope: (i, name) ->
    lookupInMap @scopes[i], name

  freshId: ->
    @nameIndex++

    imports name, names)

exportAll = (ctx, definitions) ->
  shouldBeExported = (name, declaration) ->
    not declaration.virtual and declaration.final
  nonVirtual = filterMap shouldBeExported, ctx._scope()
  exported = subtractSets nonVirtual, builtInDefinitions()
  exportList = map validIdentifier, (setToArray exported)
  (iife (concat [
