     @CHAINABLE.indexOf(@operator) >= 0
 
   compile_node: (o) ->
+    o.operation: true
     return @compile_chain(o)      if @is_chainable() and @first.unwrap() instanceof OpNode and @first.unwrap().is_chainable()
     return @compile_assignment(o) if @ASSIGNMENT.indexOf(@operator) >= 0
     return @compile_unary(o)      if @is_unary()

Node::compile: (o) ->
  @options: merge o or {}
  @indent:  o.indent
  top:      if @top_sensitive() then @options.top else del @options, 'top'
  closure:  @is_statement() and not @is_statement_only() and not top and
            not @options.returns and not (this instanceof CommentNode) and

  compile_node: (o) ->
    soaked:   false
    only:     del(o, 'only_first')
    op:       del(o, 'operation')
    props:    if only then @properties[0...@properties.length - 1] else @properties
    baseline: @base.compile o
    baseline: '(' + baseline + ')' if @base instanceof ObjectNode and @has_properties()
