internal LoggedBinaryReaderScope([NotNull] LoggedBinaryReaderJournal journal)
        {
            if (journal == null)
            {
                throw new ArgumentNullException(nameof(journal));
            }

            Journal = journal;
            Journal.BeginLog();
        }
 /// <summary>
 ///     Initializes a new instance of <see cref="LoggedBinaryReader" />.
 /// </summary>
 /// <param name="stream">
 ///     The input stream.
 /// </param>
 /// <param name="encoding">
 ///     The character encoding to use, <code>null</code> for <see cref="Encoding.Default" />.
 /// </param>
 /// <param name="leaveOpen">
 ///     <code>true</code> to leave the stream open after the <see cref="System.IO.BinaryReader" /> object is disposed;
 ///     otherwise, <code>false</code>.
 /// </param>
 public LoggedBinaryReader(Stream stream, Encoding encoding = null, bool leaveOpen = true)
     : base(stream, encoding ?? Encoding.Default, leaveOpen)
 {
     Journal = new LoggedBinaryReaderJournal(this);
 }