// Mark that we've already been async'd, so when the invocation comes around again we don't infinite loop
nextInvocation.getMetaData().addMetaData(INVOCATION_METADATA_TAG, INVOCATION_METADATA_ATTR,
INVOCATION_METADATA_VALUE);
// Make a new ID for the invocation
final AsyncInvocationId id = new AsyncInvocationIdUUIDImpl();
// Make the asynchronous task from the invocation
final Callable<Object> asyncTask = new AsyncAOPInvocationTask<Object>(nextInvocation, sc, id);
// Short-circuit the invocation into new Thread