anchor.diff:      // if there is a condition callback, call it to see if we should start the drag
       if(dragConditions != null && !dragConditions(this, event.currentTarget, event)) return;
       
  +    _logger.fine("got mouse down event for ${event.currentTarget.hashCode}");
  +    
       // to prevent selection during drag
       event.preventDefault();
       
  
positive.code:   StreamSubscription _mouseUpSubscription;
    set autoStop(bool a) {
      if(_autoStop != a) {
        _autoStop = a;
        if(a) {
          // register up handler or resume existing
          if(_mouseUpSubscription == null) {
            _mouseUpSubscription = document.onMouseUp.listen(_mouseUp);
          } else {
            _mouseUpSubscription.resume();
          }
        } else {
          // pause up handler
          _mouseUpSubscription.pause();
        }
      }
  
negative.code:     if(drag && !_targets.contains(element)) {
        _targets.add(element);
        if(enabled) {
          _logger.finer("adding mouse down to ${element.hashCode}");
          _listen("mouseDown", element);
        }
      }
      if(over && !_overTargets.contains(element)) {
        _overTargets.add(element);
        if(enabled && (_dragging || _dragStartPending)) {
          _logger.finer("adding mouse over to ${element.hashCode}");
          _listen("mouseOver", element, true);
        }
      }
      if(out && !_outTargets.contains(element)) {
        _outTargets.add(element);
        if(enabled && (_dragging || _dragStartPending)) {
          _logger.finer("adding mouse out to ${element.hashCode}");
          _listen("mouseOut", element, true);
        }
      }
    }
    /// Add targets to the set
    void addTargets(Iterable<Element> elements, {bool drag: true, bool over: true, bool out:true}) {
      _logger.fine("adding ${elements.length} elements, drag: $drag, over: $over, out: $out");
      for(Element element in elements) {
        addTarget(element, drag: drag, over: over, out: out);
      }
  