code: function (el, skipNextHover) {
      let unHovered = false
      let evt
      if (el === this.state.get(this.DRAGOVER_EVENT)) {
        this.state.delete(this.DRAGOVER_EVENT)
        unHovered = true
        evt = {
          hand: this.el,
          hovered: el,
          carried: this.state.get(this.DRAG_EVENT)
        }
        this.emitCancelable(el, this.UNDRAGOVER_EVENT, evt)
        if (this.state.has(this.DRAG_EVENT)) {
          this.emitCancelable(
            this.state.get(this.DRAG_EVENT),
            this.UNDRAGOVER_EVENT,
            evt
          )
        }
      }
      if (el === this.state.get(this.HOVER_EVENT)) {
        this.state.delete(this.HOVER_EVENT)
        unHovered = true
        this.emitCancelable(el, this.UNHOVER_EVENT, { hand: this.el })
      }
      // activate next target, if present
      if (unHovered && !skipNextHover) {
        this.hover()
      }
    }
docs: /* inner unHover steps needed regardless of cause of unHover