anchor.diff:    static final AttachedEvent _mouseOutEvent =
         new AttachedEvent('mouseOut');
   
  +  static final AttachedEvent _dragEvent =
  +      new AttachedEvent('drag');
  +
     static final Property<String> _cursorProperty =
         new Property<String>("_cursor");
   
     final Stage _stage;
   
  -  Thing _mouseDownThing;
  +  Thing _mouseDownThing, _draggingThing;
  +  Coordinate _dragCoordinate;
   
     factory ClickManager(Stage stage) {
       requireArgumentNotNull(stage, 'stage');
  
positive.code:   }
  
    void _mouseDown(MouseEvent e) {
      final coord = getMouseEventCoordinate(e);
      final hits = _updateMouseLocation(coord);
      _mouseDownThing = $(hits).firstOrDefault((e) => getClickable(e));
      if(_mouseDownThing != null) {
        _doMouseDown(_mouseDownThing, e);
      }
    }
  
  
negative.code:   }
  
    static void setClickable(Thing thing, bool value) {
      _setBoolProp(thing, _isClickableProperty, value);
    }
  
    static bool getClickable(Thing thing) {
      assert(thing != null);
      return _isClickableProperty.get(thing);
    }
  
    static void setDraggable (Thing thing, bool value) {
      _setBoolProp(thing, _isDraggableProperty, value);
    }
  
    static bool getDraggable(Thing thing) {
      assert(thing != null);
      return _isDraggableProperty.get(thing);
    }
  
    static void _setBoolProp(Thing thing, Property<bool> prop, bool value) {
      assert(thing != null);
      assert(prop != null);
      assert(value != null);
      assert(prop.defaultValue == false);
      if(value) {
        prop.set(thing, true);
      } else {
        prop.clear(thing);
      }
    }
  
    static GlobalId addHandler(Thing thing,
  