     if isarr
       for val,i in obj
         num++
-        applyfunc.apply null,[val,i,->
-          next.apply null,[num,endfunc].concat([].slice.call(arguments))
+        applyfunc.apply this,[val,i,->
+          next.apply this,[num,endfunc].concat([].slice.call(arguments))
         ].concat(applyargs_array)
     else
       for key,val of obj
         num++
-        applyfunc.apply null,[key,val,->
-          next.apply null,[num,endfunc].concat([].slice.call(arguments))
+        applyfunc.apply this,[key,val,->
+          next.apply this,[num,endfunc].concat([].slice.call(arguments))
         ].concat(applyargs_array)
   )(->
     count = 0

            result.push([])
          result[i].push(arg)
      if count == num
        next.apply null,result
  )

###


  fa = ->
    stackpop = _stack.pop()
    stackpop._finally.apply this,[].slice.call(arguments)

  _finally: ->
    stackpop = _stack.pop()
    stackpop._finally.apply this,[stackpop.next].concat([].slice.call(arguments))

  _throw: (_e) =>
    catchset = {}
    _w ->(true),
    [],
    (_break,_next)=>
      catchset = _stack.pop()
