anchor.diff:      _gestureMap[pointer]?.reject();
     }
   
  -  void _resolveTap(int pointer, _TapResolution resolution, ui.Point globalPosition) {
  +  void _resolveTap(int pointer, _TapResolution resolution, Point globalPosition) {
       _gestureMap.remove(pointer);
       if (resolution == _TapResolution.tap) {
         if (onTapUp != null)
  
positive.code:   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.
  class _TapGesture extends _TapTracker {
  
    _TapGesture({ this.gestureRecognizer, PointerInputEvent event })
        : super(event: event) {
      entry = GestureArena.instance.add(event.pointer, gestureRecognizer);
      startTrackingPointer(gestureRecognizer.router, handleEvent);
    }
  
    final MultiTapGestureRecognizer gestureRecognizer;
  
    bool _wonArena = false;
    ui.Point _finalPosition;
  
    void handleEvent(PointerInputEvent event) {
      assert(event.pointer == pointer);
  
negative.code: 
    _TapTracker({ PointerInputEvent event, this.entry })
      : pointer = event.pointer,
        _initialPosition = event.position {
      assert(event.type == 'pointerdown');
    }
  
    final int pointer;
    final GestureArenaEntry entry;
    final Point _initialPosition;
  
    bool _isTrackingPointer = false;
  
    void startTrackingPointer(PointerRouter router, PointerRoute route) {
      if (!_isTrackingPointer) {
  