static uint?ReadVersion(MemoryReader reader, byte?[] pattern, int offset)
        {
            var off = reader.ReadOffset(offset + pattern.TakeWhile(x => x != null).Count());

            return(reader.IsInRange(off) ? (uint?)reader.Read <uint>(off) : null);
        }