     varPart       = ''
     guardPart     = ''
     body          = Expressions.wrap([@body])
+    idt1          = @idt 1
     if range
       sourcePart  = source.compileVariables(o)
       forPart     = source.compile merge o, index: ivar, step: @step

      body.unshift  literal "var #{index} = #{ivar}" if index
      body        = ClosureNode.wrap(body, true)
    else
      varPart     = (namePart or '') and (if @pattern then namePart else "#{@idt(1)}#{namePart};\n")
    if @object
      forPart     = "#{ivar} in #{svar}"
      guardPart   = "\n#{@idt(1)}if (!#{utility('hasProp')}.call(#{svar}, #{ivar})) continue;" unless @raw
    body          = body.compile(merge(o, {indent: @idt(1), top: true}))
    vars          = if range then name else "#{name}, #{ivar}"
    "#{sourcePart}for (#{forPart}) {#{guardPart}\n#{varPart}#{body}\n#{@tab}}#{returnResult}"

#### SwitchNode


    sourcePart    = (if rvar then "#{rvar} = []; " else '') + sourcePart
    sourcePart    = if sourcePart then "#{@tab}#{sourcePart}\n#{@tab}" else @tab
    returnResult  = @compileReturnValue(rvar, o)
    body          = PushNode.wrap(rvar, body) unless topLevel
    if @guard
      body        = Expressions.wrap([new IfNode(@guard, body)])
