private IMouseWheelShaft CreateDirectShaft()
        {
            var transfer = new MouseWheelShaft(0);

            transfer.Name = transfer.Id.ToString("'D'00");
            Add(transfer);
            return(transfer);
        }
        private IMouseWheelShaft CreateDebouncedShaft(int resolution)
        {
            var debouncing = new NativeDebouncedMotionTransform(_debouncingFunctions[resolution]);
            var transfer   = new MouseWheelShaft(resolution);

            debouncing.Next = transfer;
            var debouncedTransfer = new NativeMotionTransferGroup(debouncing, transfer);

            Add(debouncedTransfer);
            return(transfer);
        }