anchor.diff:    Point<num> _viewport;
   
     ScrollView(): super() {
  -    _hbar = new ScrollBar(orientation: Orientation.HORIZONTAL)..visible = false;
  +    _hbar = new ScrollBar(orientation: Orientation.HORIZONTAL)
  +      ..visible = false;
       super.addChildAt(_hbar, 0);
  -    _vbar = new ScrollBar(orientation: Orientation.VERTICAL)..visible = false;
  +    _vbar = new ScrollBar(orientation: Orientation.VERTICAL)
  +      ..visible = false;
       super.addChildAt(_vbar, 0);
       _content = new Sprite();
       super.addChildAt(_content, 0);
  
positive.code:     onMouseDown.listen((e) {
        if (stage != null) {
          _stopScrolling();
          _showScrollBars();
          _lastPos.setTo(e.stageX, e.stageY);
          stage.onMouseMove.listen(_stageMouseMoveHandler);
          stage.onMouseUp.listen(_stageMouseUpHandler);
  
negative.code:   void _adjustViewport() {
      _viewport.setTo(_bounds.right - _content.width, _bounds.bottom - _content.height);
      _hbar
        ..width = _bounds.width
        ..y = _bounds.bottom - _hbar.height
        ..range = _bounds.width
        ..maximum = _content.width;
      _vbar
        ..height = _bounds.height
        ..x = _bounds.right - _vbar.width
        ..range = _bounds.height
        ..maximum = _content.height;
      _showScrollBars();
    }
  
    _showScrollBars() {
      _hbar.visible = hbarVisible;
      _vbar.visible = vbarVisible;
    }
  
    int get overScrollModel => _overScrollModel;
  
    void set overScrollModel(int val) {
      _overScrollModel = val;
      _showScrollBars();
    }
  
    bool get hbarVisible {
      if(_overScrollModel == OVER_SCROLL_ALWAYS) return true;
      if(_overScrollModel == OVER_SCROLL_IF_CONTENT_SCROLLS) return _content.width > _bounds.width;
      return false;
    }
  
    bool get vbarVisible {
      if(_overScrollModel == OVER_SCROLL_ALWAYS) return true;
      if(_overScrollModel == OVER_SCROLL_IF_CONTENT_SCROLLS) return _content.height > _bounds.height;
      return false;
    }
  }
  