public override object Clone()
        {
            var clone   = new ListStack <T>();
            var current = _top;

            HandleRest();
            return(clone);

            void HandleRest()
            {
                if (current != null)
                {
                    var value = current.Value;
                    current = current.Next;
                    HandleRest();
                    clone.Push(value);
                }
            }
        }
 public ListStackIterator(ListStack <T> stack)
 {
     _stack = stack;
     Reset();
 }