With the recycling library you are able to pool any kind of object.
It works with factories, which you can manage on your own, or you can use the RecyclingYard to handle the factories.
A recyclable class should have a constructor without non-optional arguments!
If you want to pass arguments to your object, you can use a custom function, which is identified by a Metatag: [Recycle(on="revive")].
You can therefore pass any parameters/arguments to that function when you fabricate an object by a RecyclingFactory.
Use the Metatag [Recycle(on="dump")] for the same call at trashing an object at a RecyclingFactory.
This lib is useful if you want to avoid the using of the new operator.