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);
            }
        }