internal PointerRoutedEventArgs(
            double timestamp,
            uint pointerId,
            PointerDeviceType pointerType,
            Point absolutePosition,
            bool isInContact,
            WindowManagerInterop.HtmlPointerButtonsState buttons,
            WindowManagerInterop.HtmlPointerButtonUpdate buttonUpdate,
            VirtualKeyModifiers keys,
            double pressure,
            UIElement source,
            bool canBubbleNatively)
            : this()
        {
            _timestamp        = timestamp;
            _absolutePosition = absolutePosition;
            _buttons          = buttons;
            _buttonUpdate     = buttonUpdate;
            _pressure         = pressure;

            FrameId           = ToFrameId(timestamp);
            Pointer           = new Pointer(pointerId, pointerType, isInContact, isInRange: true);
            KeyModifiers      = keys;
            OriginalSource    = source;
            CanBubbleNatively = canBubbleNatively;
        }