code: protected <T> Callable<T> wrapTask(Callable<T> task) {
      // Preserve the MDC context of the caller thread.
      Map contextMap = MDC.getCopyOfContextMap();
      if (contextMap != null) {
        return new MDCCallableAdapter(task, contextMap);
      }
      return task;
    }
docs: Override this to customize how the background task is created.
  
  @param <T> the type of the Task
  @param task the Task to be wrapped
  @return the wrapped task