private void Destroy(PooledObject <T> target) { target.Invalidate(); idleObjects.Remove(target); allObjects.Remove(target.TheObject); try { factory.DestroyObject(target.TheObject); } finally { Interlocked.Decrement(ref createCount); } }