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