 
   addToDeferred: (binding) ->
     @_scope().deferredBindings.push binding
+
+  addToParentDeferred: (binding) ->
+    @_outerScope().deferredBindings.push binding
 
   addToDefinedNames: (binding) ->
     @_currentDefinition()?.definedNames?.push binding

    @nameIndex++

  savedDeclaration: (name, scopeIndex) ->
    if scopeIndex is 0
      @_declaration name
    else
      saved = @savedScopes[scopeIndex]
      (lookupInMap saved.definitions, name) or @savedDeclaration name, saved.parent

  ## Deferring


        contextType instanceof TempType
      # Typing deferred, use an impricise type var
      type = toConstrained ctx.freshTypeVariable star
      ctx.addToDeferredNames {name: symbol, type: (mapOrigin type, atom), scopeIndex: ctx.currentScopeIndex()}
      nameTranslate ctx, atom, symbol, type
    else
      # log "deferring in rhs for #{symbol}", ctx._deferrableDefinition().name
