anchor.diff:    bool _enabled = true;
     /// True iff the handler is active
     bool get enabled => _enabled;
  +  bool _delayedDisable = false;
     set enabled(bool e) {
  +    // if we are currently dragging, delay a disable until it ends
  +    // TODO yikes, this is kind of scary
  +    if(_dragging && _enabled && !e) {
  +      _delayedDisable = true;
  +      return;
  +    }
  +    // if we are enabled during a delayed disable, disable the delayed disable
  +    if(_delayedDisable && e) {
  +      _delayedDisable = false;
  +    }
  +    
       // if we aren't changing state, don't do anything
       if(_enabled != e) {
         
  
positive.code:     }
    }
    void _mouseMoveHandler(MouseEvent event) {
      // call the drag callback
      // TODO is currentTarget the correct thing?
      // TODO if so, we don't really need to pass it as a para
  
negative.code:     
      // call the end callback
      if(dragEnd != null) {
        dragEnd(this, _currentTarget, event);
      }
      
      // clear current target
      _currentTarget = null;
      
      // if we are on a delayed disable, do the disable
      if(_delayedDisable) {
        _delayedDisable = false;
        enabled = false;
      }
    }
  }
  