     Batman.Property.forBaseAndKey(target, keypath)?.setValue(value)
 
   die: ->
+    if @dead
+      Batman.developer.warn "Tried to die() a view more than once."
+      return
+
     @fire('destroy')
 
     @removeFromSuperview()

    @node = null
    @parentNode = null
    @subviews = null

Batman.container.$context ?= (node) ->
  while node

    @isBound = false

  destroySubviews: ->
    if @dead
      Batman.developer.warn "Tried to destroy the subviews of a dead view."
      return
    subview.die() for subview in @subviews.toArray()
    @subviews.clear()

