     deferredCount = 0
     while (_notEmpty ctx.deferred()) and deferredCount < ctx.deferred().length
       prevSize = ctx.deferred().length
-      [expression, dependencyName, lhs, rhs] = deferred = ctx.deferred().shift()
-      if (ctx.isDeclared dependencyName)
+      [expression, dependencyName, useScope, lhs, rhs] = deferred = ctx.deferred().shift()
+      if useScope isnt ctx.currentScopeIndex() and (ctx.isDeclared dependencyName) or
+          (ctx.isFinallyDeclared dependencyName)
         compiledPairs.push definitionPairCompile ctx, lhs, rhs
         deferredCount = 0
       else

  addToDeferredNames: (binding) ->
    @_deferrableDefinition().deferredBindings.push binding

  addToDeferred: (binding) ->
    @_scope().deferredBindings.push binding

  addToParentDeferred: (binding) ->

    "i#{@variableIndex++}"

  doDefer: (expression, dependencyName) ->
    definition = @_deferrableDefinition()
    definition._defer =
      (@_deferReasonOf definition) or [expression, dependencyName, @currentScopeIndex()]

  deferReason: ->
    @_deferReasonOf @_deferrableDefinition()
