anchor.diff:  main(){
     CanvasElement canvas = document.query("#content");
     var demo = new Demo(canvas);
  -  demo.start();
  +  demo.requestFrame();
   }
   
   class Demo{
  -  CanvasElement _canvas;
  -  Stage _stage;
  -  AffineTransform _tx;
  +  final CanvasElement _canvas;
  +  final Stage _stage;
  +  final AffineTransform _tx;
     Coordinate _mouseLocation;
   
  -  Demo(CanvasElement canvas){
  -    _canvas = canvas;
  -    _canvas.on.mouseMove.add(_canvas_mouseMove);
  -    _canvas.on.mouseOut.add(_canvas_mouseOut);
  +  factory Demo(CanvasElement canvas){
   
       PCanvas pCanvas = new PCanvas(200, 200);
       var blue = new Shape(100, 100, 'blue');
  
positive.code:     if(_mouseLocation != null){
        RetainedDebug.borderHitTest(_stage, _mouseLocation);
      }
      //Helper.borderElements(_stage);
      _requestFrame();
    }
  
    void _requestFrame(){
      window.webkitRequestAnimationFrame(_onFrame);
    }
  
    void _canvas_mouseMove(MouseEvent e){
  
negative.code:       (canvas.width - pCanvas.width) / 2,
        (canvas.height - pCanvas.height) / 2);
  
      var tx = pCanvas.addTransform();
  
      var rootPanel = new PCanvas(500, 500);
      rootPanel.addElement(pCanvas);
  
      var stage = new Stage(canvas, rootPanel);
  
      return new Demo._internal(canvas, stage, tx);
    }
  
    Demo._internal(CanvasElement this._canvas, this._stage, this._tx){
      _canvas.on.mouseMove.add(_canvas_mouseMove);
      _canvas.on.mouseOut.add(_canvas_mouseOut);
    }
  
    void requestFrame(){
      window.webkitRequestAnimationFrame(_onFrame);
    }
  
    bool _onFrame(num highResTime){
  