anchor.diff:    }
   
     Widget build() {
  -    // TODO(hansmuller) The code below changes the widget tree when
  -    // the user starts dragging. Currently this causes Sky to drop the
  -    // rest of the pointer gesture, see https://github.com/domokit/mojo/issues/312.
  -    // As a workaround, always create the Transform and Opacity nodes.
  -    Widget transformedChild = child;
  -    if (_isActive) {
  -      transformedChild = _transform.build(transformedChild);
  -    } else {
  -      transformedChild = new Transform(child: transformedChild, transform: new Matrix4.identity());
  -      transformedChild = new Opacity(child: transformedChild, opacity: 1.0);
  -    }
  -
  +    Matrix4 transform = new Matrix4.identity();
  +    transform.translate(_position.value.x, _position.value.y);
       return new Listener(
         onPointerDown: _handlePointerDown,
         onPointerMove: _handlePointerMove,
  
positive.code:       _dragUnderway = false;
        double distance = 1.0 - _performance.progress;
        if (distance > 0.0) {
          double duration = _kCardDismissFadeoutMS * 1000.0 * distance / event.velocityX.abs();
          _dragX = event.velocityX.sign;
          _performance.timeline.animateTo(1.0, duration: duration);
        }
  
negative.code:   Widget child;
    DismissedCallback onDismissed;
  
    AnimatedType<Point> _position;
    AnimatedType<double> _opacity;
    AnimationPerformance _performance;
  
    double _width;
    double _dragX = 0.0;
    bool _dragUnderway = false;
  
    void initState() {
      _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);
    }
  
  