anchor.diff:        onPointerCancel: _handlePointerUpOrCancel,
         onGestureFlingStart: _handleFlingStart,
         child: new SizeObserver(
  -        child: transformedChild,
  -        callback: _handleSizeChanged
  +        callback: _handleSizeChanged,
  +        child: new Opacity(
  +          opacity: _opacity.value,
  +          child: new Transform(
  +            transform: transform,
  +            child: child
  +          )
  +        )
         )
       );
     }
  
positive.code:   }
  
    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);
      }
  
      return new Listener(
        onPointerDown: _handlePointerDown,
        onPointerMove: _handlePointerMove,
  
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);
    }
  
  