anchor.diff:    Widget child;
     DismissedCallback onDismissed;
   
  -  AnimationBuilder _transform;
  +  AnimatedType<Point> _position;
  +  AnimatedType<double> _opacity;
     AnimationPerformance _performance;
  +
     double _width;
     double _dragX = 0.0;
     bool _dragUnderway = false;
   
     void initState() {
  -    _transform = new AnimationBuilder()
  -      ..position = new AnimatedType<Point>(Point.origin)
  -      ..opacity = new AnimatedType<double>(1.0, end: 0.0);
  -
  -    _performance = _transform.createPerformance(
  -        [_transform.position, _transform.opacity],
  -        duration: new Duration(milliseconds: _kCardDismissFadeoutMS));
  -    _performance.addListener(_handleAnimationProgressChanged);
  +    _position = new AnimatedType<Point>(Point.origin);
  +    _opacity = new AnimatedType<double>(1.0, end: 0.0);
  +    _performance = new AnimationPerformance()
  +      ..duration = _kCardDismissFadeout
  +      ..variable = new AnimatedList([_position, _opacity])
  +      ..addListener(_handleAnimationProgressChanged);
       watch(_performance);
     }
   
  
positive.code: 
    void _handleSizeChanged(Size newSize) {
      _width = newSize.width;
      _transform.position.end = _activeCardDragEndPoint;
    }
  
    void _handlePointerDown(sky.PointerEvent event) {
  
negative.code:       onPointerCancel: _handlePointerUpOrCancel,
        onGestureFlingStart: _handleFlingStart,
        child: new SizeObserver(
          callback: _handleSizeChanged,
          child: new Opacity(
            opacity: _opacity.value,
            child: new Transform(
              transform: transform,
              child: child
            )
          )
        )
      );
    }
  