anchor.diff:  
     void _mouseMove(MouseEvent e) {
       final items = _updateMouseLocation(getMouseEventCoordinate(e));
  +
  +    String cursor = null;
       if(items.length > 0) {
         final args = new ThingMouseEventArgs(items[0], e);
  -      items.forEach((e) => _mouseMoveEvent.fireEvent(e, args));
  -    }
  +
  +      for(final e in items) {
  +        _mouseMoveEvent.fireEvent(e, args);
  +        if(cursor == null) {
  +          cursor = getCursor(e);
  +        }
  +      }
  +    }
  +    _updateCursor(cursor);
     }
   
     void _mouseOut(MouseEvent e) {
       _updateMouseLocation(null);
       _mouseOutEvent.fireEvent(_stage, EventArgs.empty);
  +    _updateCursor(null);
     }
   
     void _mouseUp(MouseEvent e) {
  
positive.code:     }
    }
  
    List<Thing> _updateMouseLocation(Coordinate value) {
      return Mouse.markMouseOver(_stage, value);
    }
  
negative.code: //       Nothing interesting exists on the instance of CM
  
  class ClickManager {
    static const String _autoCursor = 'auto';
  
    static final Property<ClickManager> _clickManagerProperty =
        new Property<ClickManager>("_clickManager");
  
  