anchor.diff:            break;
           case PointerType.UP:
           case PointerType.CANCEL:
  +          assert(_pointers.containsKey(datum.pointer));
             _PointerState state = _pointers[datum.pointer];
  -          assert(state != null);
  +          assert(state.down);
             assert(position == state.lastPosition);
             state.setUp();
             if (datum.type == PointerType.UP) {
  
positive.code:           );
            break;
          case PointerType.MOVE:
            _PointerState state = _pointers[datum.pointer];
            // If the service starts supporting hover pointers, then it must also
            // start sending us ADDED and REMOVED data points. In the meantime, we
            // only support "down" moves, and ignore spurious moves.
            // See also: https://github.com/flutter/flutter/issues/720
            if (state == null)
              break;
            assert(state.down);
            Offset offset = position - state.lastPosition;
            state.lastPosition = position;
  
negative.code:       PointerDeviceKind kind = _pointerKindMap[datum.kind];
        switch (datum.type) {
          case PointerType.DOWN:
            assert(!_pointers.containsKey(datum.pointer));
            _PointerState state = _pointers.putIfAbsent(
              datum.pointer,
              () => new _PointerState(position)
            );
            assert(state.lastPosition == position);
            state.startNewPointer();
            state.setDown();
            yield new PointerAddedEvent(
  