     o.indent = @idt 1
     set      = ''
     {body}   = this
-    if o.level > LVL_TOP or @returns
+    if o.level > LEVEL.TOP or @returns
       rvar = o.scope.freeVariable 'result'
       set  = "#{@tab}#{rvar} = [];\n"
       body = Push.wrap rvar, body if body
     body = Expressions.wrap [new If @guard, body] if @guard
     code = set + @tab + """
-      while (#{ @condition.compile o, LVL_PAREN }) {
-      #{ body.compile o, LVL_TOP }
+      while (#{ @condition.compile o, LEVEL.PAREN }) {
+      #{ body.compile o, LEVEL.TOP }
       #{@tab}}
     """
     if @returns

  compileRoot: (o) ->
    o.indent = @tab = if o.bare then '' else TAB
    o.scope  = new Scope null, this, null
    o.level  = LVL_TOP
    code     = @compileWithDeclarations o
    code     = code.replace TRAILING_WHITESPACE, ''
    if o.bare then code else "(function() {\n#{code}\n}).call(this);\n"

      accessClass = if IDENTIFIER.test idx.value then Accessor else Index
      (value = Value.wrap value).properties.push new accessClass idx
      return new Assign(obj, value).compile o
    valVar  = value.compile o, LEVEL.LIST
    assigns = []
    splat   = false
    if not IDENTIFIER.test(valVar) or @variable.assigns(valVar)
