anchor.diff:  
     AffineTransform setFromTransfrom(AffineTransform tx) {
       requireArgumentNotNull(tx, 'tx');
  -    return setTransform(tx._m00, tx._m10,
  -      tx._m01, tx._m11,
  -      tx._m02, tx._m12);
  +    return setTransform(tx._scX, tx._shY,
  +      tx._shX, tx._scY,
  +      tx._tX, tx._tY);
     }
   
     AffineTransform setTransform (num m00, num m10, num m01,
       num m11, num m02, num m12) {
  -    this._m00 = m00;
  -    this._m10 = m10;
  -    this._m01 = m01;
  -    this._m11 = m11;
  -    this._m02 = m02;
  -    this._m12 = m12;
  +    this._scX = m00;
  +    this._shY = m10;
  +    this._shX = m01;
  +    this._scY = m11;
  +    this._tX = m02;
  +    this._tY = m12;
       return this;
     }
   
     Coordinate transformCoordinate([Coordinate point = const Coordinate()]){
  -    num x = point.x * _m00 + point.y * _m01 + _m02;
  -    num y = point.x * _m10 + point.y * _m11 + _m12;
  +    num x = point.x * _scX + point.y * _shX + _tX;
  +    num y = point.x * _shY + point.y * _scY + _tY;
   
       return new Coordinate(x, y);
     }
  
positive.code:     return new AffineTransform(1, 0, 0, 1, x, y);
    }
  
    num get scaleX => _m00;
  
    num get scaleY => _m11;
  
    num get translateX => _m02;
  
    num get translateY => _m12;
  
    Vector get translateVector => new Vector(translateX, translateY);
  
    num get shearX => _m01;
  
    num get shearY => _m10;
  
    num get determinant => _m00 * _m11 - _m01 * _m10;
  
    bool get isIdentity {
      return _m00 == 1 && _m10 == 0 &&
          _m01 == 0 && _m11 == 1 &&
          _m02 == 0 && _m12 == 0;
    }
  
    AffineTransform scale(num sx, num sy) {
      _m00 *= sx;
      _m10 *= sx;
      _m01 *= sy;
      _m11 *= sy;
      return this;
    }
  
    AffineTransform concatenate(tx) {
      var m0 = this._m00;
      var m1 = this._m01;
      this._m00 = tx._m00 * m0 + tx._m10 * m1;
      this._m01 = tx._m01 * m0 + tx._m11 * m1;
      this._m02 += tx._m02 * m0 + tx._m12 * m1;
  
      m0 = this._m10;
      m1 = this._m11;
      this._m10 = tx._m00 * m0 + tx._m10 * m1;
      this._m11 = tx._m01 * m0 + tx._m11 * m1;
      this._m12 += tx._m02 * m0 + tx._m12 * m1;
      return this;
    }
  
  
negative.code:   }
  
    AffineTransform clone(){
      return new AffineTransform(_scX, _shY, _shX, _scY, _tX, _tY);
    }
  
    bool operator ==(AffineTransform other) {
      return other != null &&
          _scX == other._scX && _shX == other._shX && _tX == other._tX &&
          _shY == other._shY && _scY == other._scY && _tY == other._tY;
    }
  
    String toString() {
  