Generic Object pooling API with several implementations.
         The org.apache.commons.pool2 package defines a simple
         interface for a pool of object instances, and a handful of base
         classes that may be useful when creating pool implementations.
         The API supports pooling of unique objects which can be requested
         via a key as well as pools where all objects are equivalent.
      
         The org.apache.commons.pool2.impl package contains
         several pool implementations.
         {@link org.apache.commons.pool2.impl.GenericObjectPool
         GenericObjectPool} has many configuration options and can support
         a limited set of objects such as would be useful in a database
         connection pool.
         {@link org.apache.commons.pool2.impl.SoftReferenceObjectPool
         SoftReferenceObjectPool} has no limit on the number of objects in the
         pool, but the garbage collector can remove idle objects from the pool
         as needed.  There is also a keyed version of
         {@link org.apache.commons.pool2.impl.GenericObjectPool
         GenericObjectPool},
         {@link org.apache.commons.pool2.impl.GenericKeyedObjectPool
         GenericKeyedObjectPool}