/// <summary>
        /// Read a print pause event
        /// </summary>
        /// <param name="from">Origin</param>
        /// <param name="filePosition">Position at which the print has been paused</param>
        /// <param name="reason">Reason why the print has been paused</param>
        /// <returns>Number of bytes read</returns>
        public static int ReadPrintPaused(ReadOnlySpan <byte> from, out uint filePosition, out PrintPausedReason reason)
        {
            PrintPaused header = MemoryMarshal.Cast <byte, PrintPaused>(from)[0];

            filePosition = header.FilePosition;
            reason       = (PrintPausedReason)header.PauseReason;
            return(Marshal.SizeOf(header));
        }
        /// <summary>
        /// Read a print pause event
        /// </summary>
        /// <param name="from">Origin</param>
        /// <param name="filePosition">Position at which the print has been paused</param>
        /// <param name="reason">Reason why the print has been paused</param>
        /// <returns>Number of bytes read</returns>
        public static int ReadPrintPaused(ReadOnlySpan <byte> from, out uint filePosition, out PrintPausedReason reason)
        {
            PrintPausedHeader header = MemoryMarshal.Read <PrintPausedHeader>(from);

            filePosition = header.FilePosition;
            reason       = (PrintPausedReason)header.PauseReason;
            return(Marshal.SizeOf <PrintPausedHeader>());
        }