anchor.diff:      }
     }
   
  +  void _updateCursor(String cursor) {
  +    if(cursor == null) {
  +      cursor = _autoCursor;
  +    }
  +    final canvas = _stage._canvas;
  +    canvas.style.cursor = cursor;
  +  }
  +
     List<Thing> _updateMouseLocation(Coordinate value) {
       return Mouse.markMouseOver(_stage, value);
     }
  
positive.code: 
    void _mouseMove(MouseEvent e) {
      final items = _updateMouseLocation(getMouseEventCoordinate(e));
      if(items.length > 0) {
        final args = new ThingMouseEventArgs(items[0], e);
        items.forEach((e) => _mouseMoveEvent.fireEvent(e, args));
      }
    }
  
    void _mouseOut(MouseEvent e) {
      _updateMouseLocation(null);
      _mouseOutEvent.fireEvent(_stage, EventArgs.empty);
    }
  
    void _mouseUp(MouseEvent e) {
  
negative.code:     _stage._canvas.on.mouseDown.add(_mouseDown);
    }
  
    static void setCursor(Thing thing, String value) {
      assert(thing != null);
      if(value == null) {
        _cursorProperty.clear(thing);
      } else {
        _cursorProperty.set(thing, value);
      }
    }
  
    static String getCursor(Thing thing) {
      assert(thing != null);
      return _cursorProperty.get(thing);
    }
  
    static void setClickable(Thing thing, bool value) {
      assert(thing != null);
      assert(value != null);
  