* It's important to protect any shared resources used by the supplied closure from race conditions caused by multi-threaded access.
* Alternatively a DSL can be used to simplify the code. All collections/objects within the {@code withPool} block
* have a new {@code reduce(Closure cl)} method, which delegates to the {@code GParsPoolUtil} class.
*/
public static Object injectParallel(final Object collection, final Closure cl) {
return GParsPoolUtilHelper.createPA(collection, retrievePool()).reduce(new ClosureReducer(cl), null);
}