 
   constructor: (condition, @body, @tags) ->
     @tags or= {}
-    if @tags.invert
-      op = condition instanceof Op
-      if op and condition.isInvertible()
-        condition.invert()
-      else
-        condition = new Parens condition if op and not condition.isUnary()
-        condition = new Op '!', condition
-    @condition = condition
+    @condition = if @tags.invert then condition.invert() else condition
     @elseBody  = null
     @isChain   = false
 


  constructor: (condition, opts) ->
    super()
    if opts?.invert
      condition = new Parens condition if condition instanceof Op
      condition = new Op('!', condition)
    @condition  = condition
    @guard = opts?.guard

  addBody: (body) ->

    include(@CHAINABLE, @operator)

  invert: ->
    if @operator in ['===', '!==']
      @operator = @INVERSIONS[@operator]
      this
    else if @second
      new Parens(this).invert()
    else
      super()

  toString: (idt) ->
    super(idt, @constructor.name + ' ' + @operator)
