using System.Text.Json.Serialization; namespace Beam.Models { public readonly struct ImmutableState { readonly string[] state; [JsonConstructor] public ImmutableState(string[] state) { this.state = state ?? []; } public string[] State => state ?? []; public readonly Span AsSpan() => state ?? []; public readonly State Copy() => new((string[])(state ?? []).Clone()); public readonly string this[Index i] { get => state[i]; } public static implicit operator State(ImmutableState state) => state.Copy(); } }