// here is where we decide which thread pool implementation to use
// right now, our criteria is simple - if blocking is desired or if core threads can time out, use the queue executor instead
if (metaData.isAllowCoreTimeout() || "block".equals(policyName)) {
// use SimpleQueueExecutor
executorBuilder = BeanMetaDataBuilder.createBuilder(SimpleQueueExecutor.class.getName());
final RejectionPolicy rejectionPolicy;
final ValueMetaData handoffExecutorValue;
if ("abort".equals(policyName)) {
rejectionPolicy = RejectionPolicy.ABORT;
handoffExecutorValue = executorBuilder.createNull();
} else if ("block".equals(policyName)) {