anchor.diff:      return _mouseOutEvent.removeHandler(stage, handlerId);
     }
   
  +  static GlobalId addDragStartingHandler(Thing thing,
  +                                     Action1<ThingDragStartingEventArgs> handler) {
  +    return _dragStartingEvent.addHandler(thing, handler);
  +  }
  +
  +  static bool removeDragStartingHandler(Thing thing, GlobalId handlerId) {
  +    return _dragStartingEvent.removeHandler(thing, handlerId);
  +  }
  +
     static GlobalId addDragHandler(Thing thing,
                                        Action1<Vector> handler) {
       return _dragEvent.addHandler(thing, handler);
  
positive.code:     for(final t in hits) {
        if(getDraggable(t)) {
          _draggingThing = t;
          _doDrag(_draggingThing, e);
          break;
        } else if(getClickable(t)) {
          _mouseDownThing = t;
  
negative.code:   static final AttachedEvent _mouseOutEvent =
        new AttachedEvent('mouseOut');
  
    static final AttachedEvent<ThingDragStartingEventArgs> _dragStartingEvent =
        new AttachedEvent<ThingDragStartingEventArgs>("_dragStartingEvent");
  
    static final AttachedEvent<Vector> _dragEvent =
        new AttachedEvent<Vector>('_dragStarting');
  
    final Stage _stage;
  
  