     return unless ifn = parent[name].unfoldSoak o
     parent[name] = ifn.body
     ifn.body     = new Value parent
+    ifn.tags.operation = on if parent.tags.operation
     ifn
 
 # Faux-Nodes

        idx = if isObject
          if obj.tags.this then obj.properties[0].name else obj
        else new Literal 0
      value = new Value value unless value instanceof Value
      accessClass = if IDENTIFIER.test idx.value then Accessor else Index
      value.properties.push new accessClass idx
      return new Assign(obj, value).compile o
    top     = del o, 'top'
    otop    = merge o, top: yes


  # Compile the If as a conditional operator.
  compileExpression: (o) ->
    @condition.tags.operation = on
    code = @condition.compile(o)      + ' ? ' +
           @bodyNode().compileBare(o) + ' : ' +
           @elseBodyNode()?.compileBare o
    if @tags.operation then "(#{code})" else code

  unfoldSoak: -> @soakNode and this

