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);
        }