       body.unshift  new Literal "var #{name} = #{ivar}" if range
       body.unshift  new Literal "var #{namePart}" if namePart
       body.unshift  new Literal "var #{index} = #{ivar}" if index
+      lastLine    = body.expressions.pop()
       body.push     new Assign new Literal(ivar), new Literal index if index
       body.push     new Assign new Literal(nvar), new Literal name if nvar
-      body        = Closure.wrap(body, true)
+      body.push     lastLine
+      # o.indent    = @idt 1
+      # comp        = new Literal body.compile o
+      body        = Closure.wrap(body, yes, yes)
       body.push     new Assign new Literal(index), new Literal ivar if index
       body.push     new Assign new Literal(name), new Literal nvar or ivar if name
     else
       varPart     = "#{idt1}#{namePart};\n" if namePart
     if @object
       forPart     = "#{ivar} in #{sourcePart}"
-      guardPart   = "\n#{idt1}if (!#{utility('hasProp')}.call(#{svar}, #{ivar})) continue;" unless @raw
+      guardPart   = "\n#{idt1}if (!#{utility('hasProp')}.call(#{svar}, #{ivar})) continue;" unless @raw  
     body          = body.compile merge o, indent: idt1, top: true
     vars          = if range then name else "#{name}, #{ivar}"
     """

      args = [new Literal 'this']
      args.push new Literal 'arguments' if mentionsArgs
      func = new Value func, [new Accessor meth]
    call = new Call func, args
    if statement then Expressions.wrap [call] else call


          params.push param
    o.scope.startLevel()
    params = (param.compile(o) for param in params)
    @body.makeReturn() unless empty or @noReturn
    (o.scope.parameter(param)) for param in params
    comm  = if @comment then @comment.compile(o) + '\n' else ''
    o.indent = @idt 2 if @className
