anchor.diff:    cancel
   }
   
  -/// TapGesture represents a full gesture resulting from a single tap
  -/// sequence. Tap gestures are passive, meaning that they will not
  -/// pre-empt any other arena member in play.
  +/// TapGesture represents a full gesture resulting from a single tap sequence,
  +/// as part of a [MultiTapGestureRecognizer]. Tap gestures are passive, meaning
  +/// that they will not preempt any other arena member in play.
   class _TapGesture extends _TapTracker {
   
  -  _TapGesture({ this.gestureRecognizer, PointerInputEvent event })
  -      : super(event: event) {
  -    entry = GestureArena.instance.add(event.pointer, gestureRecognizer);
  +  _TapGesture({
  +    MultiTapGestureRecognizer gestureRecognizer,
  +    PointerInputEvent event
  +  }) : gestureRecognizer = gestureRecognizer,
  +       super(event: event, entry: GestureArena.instance.add(event.pointer, gestureRecognizer)) {
       startTrackingPointer(gestureRecognizer.router, handleEvent);
     }
   
     final MultiTapGestureRecognizer gestureRecognizer;
   
     bool _wonArena = false;
  -  ui.Point _finalPosition;
  +  Point _finalPosition;
   
     void handleEvent(PointerInputEvent event) {
       assert(event.pointer == pointer);
  
positive.code:   }
  
    bool isWithinTolerance(PointerInputEvent event, double tolerance) {
      ui.Offset offset = event.position - _initialPosition;
      return offset.distance <= tolerance;
    }
  
  
negative.code:     _gestureMap[pointer]?.reject();
    }
  
    void _resolveTap(int pointer, _TapResolution resolution, Point globalPosition) {
      _gestureMap.remove(pointer);
      if (resolution == _TapResolution.tap) {
        if (onTapUp != null)
  