   compile: (o = {}, level) ->
     if o.scope then super o, level else @compileRoot o
 
-  compileNode: (o) ->
-    @tab = o.indent
-    (@compileExpression node, o for node in @expressions).join '\n'
+  # Compile all expressions within the **Expressions** body. If we need to
+  # return the result, and it's an expression, simply return it. If it's a
+  # statement, ask the statement to do so.
+  compileNode: (o) ->
+    @tab  = o.indent
+    top   = o.level is LEVEL_TOP
+    codes = []
+    for node in @expressions
+      node = node.unwrapAll()
+      node = (node.unfoldSoak(o) or node)
+      if top
+        node.front = true
+        code = node.compile o
+        codes.push if node.isStatement o then code else @tab + code + ';'
+      else
+        codes.push node.compile o, LEVEL_LIST
+    return codes.join '\n' if top
+    code = codes.join(', ') or 'void 0'
+    if codes.length > 1 and o.level >= LEVEL_LIST then "(#{code})" else code
 
   # If we happen to be the top-level **Expressions**, wrap everything in
   # a safety closure, unless requested not to.


  children: ['expressions']

  isStatement: YES

  constructor: (nodes) ->
    @expressions = compact flatten nodes or []


    ifPart   = @tab + ifPart unless child
    return ifPart unless @elseBody
    ifPart + ' else ' + if @isChain
      o.indent = @tab
      o.chainChild = yes
      @elseBody.unwrap().compile o, LEVEL_TOP
    else
      "{\n#{ @elseBody.compile o, LEVEL_TOP }\n#{@tab}}"

