public CircuitState GetStateAtTime(ulong time) { CircuitState state = StartState.Copy(); int length = 0; foreach (var step in StepChanges) { if (step.Time > time) { break; } length = step.StartIndex; } state.AddChanges(Changes.AsSpan(0, length), time); return(state); }