           quantifyUnbound ctx, (addConstraints currentType, retainedConstraints)
         else
           toForAll currentType
+  ctx.declareAsFinal name
   if deferredConstraints
     ctx.addToScopeConstraints deferredConstraints
 

    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 [

              new Constrained (join body.tea.constraints, deferredConstraints),
                markOrigin (typeFn paramTypeVars..., body.tea?.type), call
            else
              (cloneOrigin (freshInstance ctx, explicitType), compiledType)
          # """λ#{paramNames.length}(function (#{listOf paramNames}) {
          #   #{compiledWheres}
          #   return #{compiledBody};
