anchor.diff:    Set<Element> _overTargets = new Set<Element>();
     // The set of elements to watch for out events on
     Set<Element> _outTargets = new Set<Element>();
  -  
  +
     /// Add a target to the set
     void addTarget(Element element, {bool drag: true, bool over: true, bool out: true}) {
       // TODO should use an enum instead of strings for event IDs
  
positive.code:   var _mouseOut;
    Map<int, StreamSubscription> _mouseOutSubscriptions = new Map();
    var _mouseUp;
    
    bool _autoStop;
    /// True if we should automatically stop drags on mouse up
    bool get autoStop => _autoStop;
  
negative.code:   Stream<DragEvent> get onDragEnd => _dragEndStreamController.stream;
    Stream<DragEvent> get onDragOut => _dragOutStreamController.stream;
    Stream<DragEvent> get onDragOver => _dragOverStreamController.stream;
  
    /// The function to call to determine if the drag should be allowed to start on mouse down
    AllowDragStart dragConditions;
  
    // methods to subscribe / unsubscribe safely
    void _listen(String event, Node element, [bool useCapture = false]) {
      var subscriptions, handler, provider;
  