core/src/main/java/org/springframework/security/concurrent/DelegatingSecurityContextCallable.java
public static <V> Callable<V> create(Callable<V> delegate,
			SecurityContext securityContext) {
		return securityContext == null ? new DelegatingSecurityContextCallable<>(
				delegate) : new DelegatingSecurityContextCallable<>(delegate,
				securityContext);
	}
public static <V> Callable<V> create(Callable<V> delegate,
			SecurityContext securityContext) {
		return securityContext == null ? new DelegatingSecurityContextCallable<>(
				delegate) : new DelegatingSecurityContextCallable<>(delegate,
				securityContext);
	}
public static < V > Callable < V > create ( Callable < V > delegate , SecurityContext securityContext ) { return securityContext == null ? new DelegatingSecurityContextCallable <> ( delegate ) : new DelegatingSecurityContextCallable <> ( delegate , securityContext ) ; }
Creates a {@link DelegatingSecurityContextCallable} and with the given
{@link Callable} and {@link SecurityContext}, but if the securityContext is null
will defaults to the current {@link SecurityContext} on the
{@link SecurityContextHolder}

@param delegate the delegate {@link DelegatingSecurityContextCallable} to run with
the specified {@link SecurityContext}. Cannot be null.
@param securityContext the {@link SecurityContext} to establish for the delegate
{@link Callable}. If null, defaults to {@link SecurityContextHolder#getContext()}
@return
Creates a { @link DelegatingSecurityContextCallable } and with the given { @link Callable } and { @link SecurityContext } but if the securityContext is null will defaults to the current { @link SecurityContext } on the { @link SecurityContextHolder }