public void Dispose()
 {
     _enumerator?.Dispose();
     _src?.Dispose();
     Heap.Return(_src);
     Heap.Return(this);
     _src = default;
 }
            public IEnumerator <T> GetEnumerator()
            {
                var src = _src;

                _src = default;
                Heap.Return(this);
                return(Heap.Get <EnumeratorVal>().Init(src));
            }
 public IEnumerator <T> Init(PoolingListVal <T> src)
 {
     _src        = src;
     _enumerator = _src.GetEnumerator();
     return(this);
 }
 public IEnumerable <T> Init(PoolingListVal <T> src)
 {
     _src = src;
     return(this);
 }