using Beam.Abstractions; namespace Beam.Models { public class State(string[] state) : IState { string[] state = state; public string[] GetState() => state; public void SetState(string[] state) => this.state = state; public IReadOnlyState AsReadOnly() => new ImmutableState(this.state); public State Copy() => new((string[])state.Clone()); IState IState.Copy() => Copy(); public static implicit operator ImmutableState(State state) => new ImmutableState(state.GetState()); public string this[Index i] { get => state[i]; set => state[i] = value; } } }