 
   definedNames = ctx.definedNames()
 
+  # log "is deferriing", pattern, ctx.shouldDefer()
   # Make sure deferred names are added to scope so they are compiled within functions
   if ctx.shouldDefer()
     for {name} in definedNames


assignCompile = (ctx, expression, translatedExpression) ->
  # if not translatedExpression # TODO: throw here?
    #log expression
  if ctx.isAtDefinition()
    to = ctx.definitionPattern()



  _definitionAtScope: (i) ->
    @scopes[i].definition or i > 0 and (@_definitionAtScope i - 1) or undefined

  _deferrableDefinition: ->
    @_deferrableDefinitionAtScope @scopes.length - 1

  _deferrableDefinitionAtScope: (i) ->
    (def = @scopes[i].definition) and def.deferrable and def or
      i > 0 and (@_deferrableDefinitionAtScope i - 1) or undefined

  isDefining: ->
    !!@_scope().definition
