anchor.diff:      if (event.type == TouchEvent.TOUCH_END) dispatchEvent(new Event(PRESSED));
     }
   }
  +
  +
  +class Button extends Skinnable {
  +  
  +  // TODO: implement defaultRenderer
  +  @override
  +  Skin get defaultSkin => null;
  +}
  
positive.code: 
  typedef DisplayObject TextRenderer(String txt);
  
  const EventStreamProvider<Event> pressedEvent = const EventStreamProvider<Event>(Button.PRESSED);
  
  class Button extends InteractiveObject {
    static const String PRESSED = "BUTTON_PRESSED";
  
    EventStream<Event> get onPressed => pressedEvent.forTarget(this);
  
negative.code:   DisplayObject _currentState;
    Matrix _tmpMatrix = new Matrix.fromIdentity();
  
    ButtonBase({DisplayObject upState, DisplayObject overState, DisplayObject downState, DisplayObject hitTestState, textIconRelation:
        TextImageRelation.IMAGE_BEFORE_TEXT}) {
      useHandCursor = true;
      _registerEvents();
  