 
   # Compile a vanilla function call.
   compile_node: (o) ->
-    for arg in @args
-      return @compile_splat(o) if arg instanceof SplatNode
-    args: (arg.compile(o) for arg in @args).join(', ')
-    return @compile_super(args, o) if @is_super
-    "${@prefix()}${@variable.compile(o)}($args)"
+    o.chain_root: this unless o.chain_root
+    for arg in @args when arg instanceof SplatNode
+      compilation: @compile_splat(o)
+    unless compilation
+      args: (arg.compile(o) for arg in @args).join(', ')
+      compilation: if @is_super then @compile_super(args, o)
+      else "${@prefix()}${@variable.compile(o)}($args)"
+    del o, 'chain_root'
+    if o.operation and @wrapped then "($compilation)" else compilation
 
   # `super()` is converted into a call against the superclass's implementation
   # of the current function.

        baseline: + part
        complete: + part
        @last: part

    if op and soaked then "($complete)" else complete

#### CommentNode


    this

  compile_node: (o) ->
    o.chain_root.wrapped: or @soak_node
    proto_part: if @prototype then 'prototype.' else ''
    ".$proto_part${@name.compile(o)}"

