public bool MoveNext()
        {
            var hasNext = MemorySteps.Any();

            if (hasNext)
            {
                _current = MemorySteps.Dequeue();
            }
            return(hasNext);
        }
        public void Update(params MemoryStep[] memorySteps)
        {
            foreach (var step in memorySteps)
            {
                if (Shapes.Contains(step))
                {
                    continue;
                }

                Shapes.Add(step);
                MemorySteps.Enqueue(step);
            }
        }
 public void Dispose()
 {
     MemorySteps.Clear();
     Shapes.Clear();
 }
 public MemoryStep NextStep() => MemorySteps.Dequeue();