using System.Collections.Immutable; namespace VersionedSerialization; public interface IReader { bool Is32Bit { get; } bool ReadBoolean(); long ReadNInt(); ulong ReadNUInt(); string ReadString(); ReadOnlySpan ReadBytes(int length); T ReadPrimitive() where T : unmanaged; ImmutableArray ReadPrimitiveArray(long count) where T : unmanaged; T ReadVersionedObject(in StructVersion version = default) where T : IReadable, new(); ImmutableArray ReadVersionedObjectArray(long count, in StructVersion version = default) where T : IReadable, new(); void Align(int alignment = 0); void Skip(int count); }