anchor.diff:      if $element.length == 0
         return Promise.resolve()
   
  -    markElementAsDestroying($element)
  -    emitFragmentDestroy($element, options)
  +    markElementAsDestroying($element[0])
  +    emitFragmentDestroy($element[0], options)
   
       updateHistoryAndTitle(options)
   
  
positive.code: 
        morphOptions = u.merge options,
          beforeStart: ->
            markElementAsDestroying($(oldElement))
            emitFragmentDestroy($(oldElement), log: false)
          afterInsert: ->
            up.hello(newElement, options)
          beforeDetach: ->
            up.syntax.clean(oldElement)
          afterDetach: ->
            e.remove(oldElement) # clean up jQuery data
            emitFragmentDestroyed($(oldElement), $parent: $(parent), log: false)
  
        console.debug("-- morphOptions are %o", morphOptions)
  
  
negative.code:       $parent = $element.parent()
        up.syntax.clean($element[0])
        $element.remove()
        emitFragmentDestroyed($element[0], { parent: $parent[0] })
  
      animate().then(wipe)
  
    shouldLogDestruction = (element, options) ->
      # Don't log destruction for elements that are either Unpoly internals or frequently destroyed
      options.log != false && !e.matches(element, '.up-placeholder, .up-tooltip, .up-modal, .up-popup')
  
    ###**
    Elements are assigned the `.up-destroying` class before they are [destroyed](/up.destroy)
  