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 Read() where T : unmanaged; ImmutableArray ReadArray(long count) where T : unmanaged; T ReadObject(in StructVersion version = default) where T : IReadable, new(); ImmutableArray ReadObjectArray(long count, in StructVersion version = default) where T : IReadable, new(); public void Align(int alignment = 0); }