namespace ChatTwo.Util; internal class Lender { private readonly Func _ctor; private readonly List _items = new(); private int _counter; internal Lender(Func ctor) { _ctor = ctor; } internal void ResetCounter() { _counter = 0; } internal T Borrow() { if (_items.Count <= _counter) { _items.Add(_ctor()); } return _items[_counter++]; } }