public final class com.google.common.util.concurrent.MoreExecutors extends java.lang.Object
{
private void <init>()
{
com.google.common.util.concurrent.MoreExecutors v;
v := @this: com.google.common.util.concurrent.MoreExecutors;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public static java.util.concurrent.ExecutorService getExitingExecutorService(java.util.concurrent.ThreadPoolExecutor, java.time.Duration)
{
java.util.concurrent.TimeUnit v;
java.util.concurrent.ThreadPoolExecutor v;
java.time.Duration v;
long v;
java.util.concurrent.ExecutorService v;
v := @parameter: java.util.concurrent.ThreadPoolExecutor;
v := @parameter: java.time.Duration;
v = staticinvoke <com.google.common.util.concurrent.Internal: long toNanosSaturated(java.time.Duration)>(v);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
v = staticinvoke <com.google.common.util.concurrent.MoreExecutors: java.util.concurrent.ExecutorService getExitingExecutorService(java.util.concurrent.ThreadPoolExecutor,long,java.util.concurrent.TimeUnit)>(v, v, v);
return v;
}
public static java.util.concurrent.ExecutorService getExitingExecutorService(java.util.concurrent.ThreadPoolExecutor, long, java.util.concurrent.TimeUnit)
{
java.util.concurrent.TimeUnit v;
com.google.common.util.concurrent.MoreExecutors$Application v;
java.util.concurrent.ThreadPoolExecutor v;
long v;
java.util.concurrent.ExecutorService v;
v := @parameter: java.util.concurrent.ThreadPoolExecutor;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = new com.google.common.util.concurrent.MoreExecutors$Application;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$Application: void <init>()>();
v = virtualinvoke v.<com.google.common.util.concurrent.MoreExecutors$Application: java.util.concurrent.ExecutorService getExitingExecutorService(java.util.concurrent.ThreadPoolExecutor,long,java.util.concurrent.TimeUnit)>(v, v, v);
return v;
}
public static java.util.concurrent.ExecutorService getExitingExecutorService(java.util.concurrent.ThreadPoolExecutor)
{
com.google.common.util.concurrent.MoreExecutors$Application v;
java.util.concurrent.ThreadPoolExecutor v;
java.util.concurrent.ExecutorService v;
v := @parameter: java.util.concurrent.ThreadPoolExecutor;
v = new com.google.common.util.concurrent.MoreExecutors$Application;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$Application: void <init>()>();
v = virtualinvoke v.<com.google.common.util.concurrent.MoreExecutors$Application: java.util.concurrent.ExecutorService getExitingExecutorService(java.util.concurrent.ThreadPoolExecutor)>(v);
return v;
}
public static java.util.concurrent.ScheduledExecutorService getExitingScheduledExecutorService(java.util.concurrent.ScheduledThreadPoolExecutor, java.time.Duration)
{
java.util.concurrent.TimeUnit v;
java.time.Duration v;
java.util.concurrent.ScheduledExecutorService v;
java.util.concurrent.ScheduledThreadPoolExecutor v;
long v;
v := @parameter: java.util.concurrent.ScheduledThreadPoolExecutor;
v := @parameter: java.time.Duration;
v = staticinvoke <com.google.common.util.concurrent.Internal: long toNanosSaturated(java.time.Duration)>(v);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
v = staticinvoke <com.google.common.util.concurrent.MoreExecutors: java.util.concurrent.ScheduledExecutorService getExitingScheduledExecutorService(java.util.concurrent.ScheduledThreadPoolExecutor,long,java.util.concurrent.TimeUnit)>(v, v, v);
return v;
}
public static java.util.concurrent.ScheduledExecutorService getExitingScheduledExecutorService(java.util.concurrent.ScheduledThreadPoolExecutor, long, java.util.concurrent.TimeUnit)
{
java.util.concurrent.TimeUnit v;
com.google.common.util.concurrent.MoreExecutors$Application v;
java.util.concurrent.ScheduledExecutorService v;
java.util.concurrent.ScheduledThreadPoolExecutor v;
long v;
v := @parameter: java.util.concurrent.ScheduledThreadPoolExecutor;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = new com.google.common.util.concurrent.MoreExecutors$Application;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$Application: void <init>()>();
v = virtualinvoke v.<com.google.common.util.concurrent.MoreExecutors$Application: java.util.concurrent.ScheduledExecutorService getExitingScheduledExecutorService(java.util.concurrent.ScheduledThreadPoolExecutor,long,java.util.concurrent.TimeUnit)>(v, v, v);
return v;
}
public static java.util.concurrent.ScheduledExecutorService getExitingScheduledExecutorService(java.util.concurrent.ScheduledThreadPoolExecutor)
{
java.util.concurrent.ScheduledExecutorService v;
com.google.common.util.concurrent.MoreExecutors$Application v;
java.util.concurrent.ScheduledThreadPoolExecutor v;
v := @parameter: java.util.concurrent.ScheduledThreadPoolExecutor;
v = new com.google.common.util.concurrent.MoreExecutors$Application;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$Application: void <init>()>();
v = virtualinvoke v.<com.google.common.util.concurrent.MoreExecutors$Application: java.util.concurrent.ScheduledExecutorService getExitingScheduledExecutorService(java.util.concurrent.ScheduledThreadPoolExecutor)>(v);
return v;
}
public static void addDelayedShutdownHook(java.util.concurrent.ExecutorService, java.time.Duration)
{
java.util.concurrent.TimeUnit v;
java.time.Duration v;
long v;
java.util.concurrent.ExecutorService v;
v := @parameter: java.util.concurrent.ExecutorService;
v := @parameter: java.time.Duration;
v = staticinvoke <com.google.common.util.concurrent.Internal: long toNanosSaturated(java.time.Duration)>(v);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
staticinvoke <com.google.common.util.concurrent.MoreExecutors: void addDelayedShutdownHook(java.util.concurrent.ExecutorService,long,java.util.concurrent.TimeUnit)>(v, v, v);
return;
}
public static void addDelayedShutdownHook(java.util.concurrent.ExecutorService, long, java.util.concurrent.TimeUnit)
{
java.util.concurrent.TimeUnit v;
com.google.common.util.concurrent.MoreExecutors$Application v;
long v;
java.util.concurrent.ExecutorService v;
v := @parameter: java.util.concurrent.ExecutorService;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = new com.google.common.util.concurrent.MoreExecutors$Application;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$Application: void <init>()>();
virtualinvoke v.<com.google.common.util.concurrent.MoreExecutors$Application: void addDelayedShutdownHook(java.util.concurrent.ExecutorService,long,java.util.concurrent.TimeUnit)>(v, v, v);
return;
}
private static void useDaemonThreadFactory(java.util.concurrent.ThreadPoolExecutor)
{
com.google.common.util.concurrent.ThreadFactoryBuilder v, v, v;
java.util.concurrent.ThreadPoolExecutor v;
java.util.concurrent.ThreadFactory v, v;
v := @parameter: java.util.concurrent.ThreadPoolExecutor;
v = new com.google.common.util.concurrent.ThreadFactoryBuilder;
specialinvoke v.<com.google.common.util.concurrent.ThreadFactoryBuilder: void <init>()>();
v = virtualinvoke v.<com.google.common.util.concurrent.ThreadFactoryBuilder: com.google.common.util.concurrent.ThreadFactoryBuilder setDaemon(boolean)>(1);
v = virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: java.util.concurrent.ThreadFactory getThreadFactory()>();
v = virtualinvoke v.<com.google.common.util.concurrent.ThreadFactoryBuilder: com.google.common.util.concurrent.ThreadFactoryBuilder setThreadFactory(java.util.concurrent.ThreadFactory)>(v);
v = virtualinvoke v.<com.google.common.util.concurrent.ThreadFactoryBuilder: java.util.concurrent.ThreadFactory build()>();
virtualinvoke v.<java.util.concurrent.ThreadPoolExecutor: void setThreadFactory(java.util.concurrent.ThreadFactory)>(v);
return;
}
public static com.google.common.util.concurrent.ListeningExecutorService newDirectExecutorService()
{
com.google.common.util.concurrent.MoreExecutors$DirectExecutorService v;
v = new com.google.common.util.concurrent.MoreExecutors$DirectExecutorService;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$DirectExecutorService: void <init>()>();
return v;
}
public static java.util.concurrent.Executor directExecutor()
{
com.google.common.util.concurrent.DirectExecutor v;
v = <com.google.common.util.concurrent.DirectExecutor: com.google.common.util.concurrent.DirectExecutor INSTANCE>;
return v;
}
public static java.util.concurrent.Executor newSequentialExecutor(java.util.concurrent.Executor)
{
com.google.common.util.concurrent.SequentialExecutor v;
java.util.concurrent.Executor v;
v := @parameter: java.util.concurrent.Executor;
v = new com.google.common.util.concurrent.SequentialExecutor;
specialinvoke v.<com.google.common.util.concurrent.SequentialExecutor: void <init>(java.util.concurrent.Executor)>(v);
return v;
}
public static com.google.common.util.concurrent.ListeningExecutorService listeningDecorator(java.util.concurrent.ExecutorService)
{
com.google.common.util.concurrent.MoreExecutors$ScheduledListeningDecorator v;
com.google.common.util.concurrent.MoreExecutors$ListeningDecorator v;
java.util.concurrent.ExecutorService v;
boolean v, v;
v := @parameter: java.util.concurrent.ExecutorService;
v = v instanceof com.google.common.util.concurrent.ListeningExecutorService;
if v != 0 goto label;
v = v instanceof java.util.concurrent.ScheduledExecutorService;
if v == 0 goto label;
v = new com.google.common.util.concurrent.MoreExecutors$ScheduledListeningDecorator;
v = v;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$ScheduledListeningDecorator: void <init>(java.util.concurrent.ScheduledExecutorService)>(v);
goto label;
label:
v = new com.google.common.util.concurrent.MoreExecutors$ListeningDecorator;
v = v;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$ListeningDecorator: void <init>(java.util.concurrent.ExecutorService)>(v);
label:
return v;
}
public static com.google.common.util.concurrent.ListeningScheduledExecutorService listeningDecorator(java.util.concurrent.ScheduledExecutorService)
{
java.util.concurrent.ScheduledExecutorService v;
com.google.common.util.concurrent.MoreExecutors$ScheduledListeningDecorator v;
boolean v;
v := @parameter: java.util.concurrent.ScheduledExecutorService;
v = v instanceof com.google.common.util.concurrent.ListeningScheduledExecutorService;
if v != 0 goto label;
v = new com.google.common.util.concurrent.MoreExecutors$ScheduledListeningDecorator;
v = v;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$ScheduledListeningDecorator: void <init>(java.util.concurrent.ScheduledExecutorService)>(v);
label:
return v;
}
static java.lang.Object invokeAnyImpl(com.google.common.util.concurrent.ListeningExecutorService, java.util.Collection, boolean, java.time.Duration) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException, java.util.concurrent.TimeoutException
{
java.util.concurrent.TimeUnit v;
java.time.Duration v;
java.util.Collection v;
java.lang.Object v;
long v;
boolean v;
com.google.common.util.concurrent.ListeningExecutorService v;
v := @parameter: com.google.common.util.concurrent.ListeningExecutorService;
v := @parameter: java.util.Collection;
v := @parameter: boolean;
v := @parameter: java.time.Duration;
v = staticinvoke <com.google.common.util.concurrent.Internal: long toNanosSaturated(java.time.Duration)>(v);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
v = staticinvoke <com.google.common.util.concurrent.MoreExecutors: java.lang.Object invokeAnyImpl(com.google.common.util.concurrent.ListeningExecutorService,java.util.Collection,boolean,long,java.util.concurrent.TimeUnit)>(v, v, v, v, v);
return v;
}
static java.lang.Object invokeAnyImpl(com.google.common.util.concurrent.ListeningExecutorService, java.util.Collection, boolean, long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException, java.util.concurrent.TimeoutException
{
java.util.concurrent.TimeoutException v;
boolean v, v, v, v;
java.util.Collection v;
java.util.concurrent.LinkedBlockingQueue v;
com.google.common.util.concurrent.ListeningExecutorService v;
java.lang.Throwable v;
com.google.common.util.concurrent.ListenableFuture v, v;
long v, v, v, v;
java.util.ArrayList v;
int v, v, v;
java.util.Iterator v, v, v;
java.lang.RuntimeException v;
java.util.concurrent.ExecutionException v, v, v, v;
java.util.concurrent.TimeUnit v, v;
java.lang.Object v, v, v, v, v, v;
v := @parameter: com.google.common.util.concurrent.ListeningExecutorService;
v := @parameter: java.util.Collection;
v := @parameter: boolean;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
v = interfaceinvoke v.<java.util.Collection: int size()>();
if v <= 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean)>(v);
v = staticinvoke <com.google.common.collect.Lists: java.util.ArrayList newArrayListWithCapacity(int)>(v);
v = staticinvoke <com.google.common.collect.Queues: java.util.concurrent.LinkedBlockingQueue newLinkedBlockingQueue()>();
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(v);
label:
v = null;
if v == 0 goto label;
staticinvoke <java.lang.System: long nanoTime()>();
goto label;
label:
v = interfaceinvoke v.<java.util.Collection: java.util.Iterator iterator()>();
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = staticinvoke <com.google.common.util.concurrent.MoreExecutors: com.google.common.util.concurrent.ListenableFuture submitAndAddQueueListener(com.google.common.util.concurrent.ListeningExecutorService,java.util.concurrent.Callable,java.util.concurrent.BlockingQueue)>(v, v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v - 1;
v = 1;
label:
v = interfaceinvoke v.<java.util.concurrent.BlockingQueue: java.lang.Object poll()>();
if v != null goto label;
if v <= 0 goto label;
v = v - 1;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = staticinvoke <com.google.common.util.concurrent.MoreExecutors: com.google.common.util.concurrent.ListenableFuture submitAndAddQueueListener(com.google.common.util.concurrent.ListeningExecutorService,java.util.concurrent.Callable,java.util.concurrent.BlockingQueue)>(v, v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = v + 1;
goto label;
label:
if v == 0 goto label;
if v == 0 goto label;
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
interfaceinvoke v.<java.util.concurrent.BlockingQueue: java.lang.Object poll(long,java.util.concurrent.TimeUnit)>(v, v);
v = new java.util.concurrent.TimeoutException;
specialinvoke v.<java.util.concurrent.TimeoutException: void <init>()>();
throw v;
label:
interfaceinvoke v.<java.util.concurrent.BlockingQueue: java.lang.Object take()>();
label:
if v == null goto label;
v = v - 1;
label:
v = interfaceinvoke v.<java.util.concurrent.Future: java.lang.Object get()>();
label:
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
interfaceinvoke v.<java.util.concurrent.Future: boolean cancel(boolean)>(1);
goto label;
label:
return v;
label:
v := @caughtexception;
v = v;
goto label;
label:
v := @caughtexception;
v = new java.util.concurrent.ExecutionException;
specialinvoke v.<java.util.concurrent.ExecutionException: void <init>(java.lang.Throwable)>(v);
v = v;
goto label;
label:
if v != null goto label;
v = new java.util.concurrent.ExecutionException;
specialinvoke v.<java.util.concurrent.ExecutionException: void <init>(java.lang.Throwable)>(null);
v = v;
label:
throw v;
label:
v := @caughtexception;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
interfaceinvoke v.<java.util.concurrent.Future: boolean cancel(boolean)>(1);
goto label;
label:
throw v;
catch java.util.concurrent.ExecutionException from label to label with label;
catch java.lang.RuntimeException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private static com.google.common.util.concurrent.ListenableFuture submitAndAddQueueListener(com.google.common.util.concurrent.ListeningExecutorService, java.util.concurrent.Callable, java.util.concurrent.BlockingQueue)
{
com.google.common.util.concurrent.MoreExecutors$1 v;
com.google.common.util.concurrent.ListenableFuture v;
java.util.concurrent.Executor v;
java.util.concurrent.BlockingQueue v;
java.util.concurrent.Callable v;
com.google.common.util.concurrent.ListeningExecutorService v;
v := @parameter: com.google.common.util.concurrent.ListeningExecutorService;
v := @parameter: java.util.concurrent.Callable;
v := @parameter: java.util.concurrent.BlockingQueue;
v = interfaceinvoke v.<com.google.common.util.concurrent.ListeningExecutorService: com.google.common.util.concurrent.ListenableFuture submit(java.util.concurrent.Callable)>(v);
v = new com.google.common.util.concurrent.MoreExecutors$1;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$1: void <init>(java.util.concurrent.BlockingQueue,com.google.common.util.concurrent.ListenableFuture)>(v, v);
v = staticinvoke <com.google.common.util.concurrent.MoreExecutors: java.util.concurrent.Executor directExecutor()>();
interfaceinvoke v.<com.google.common.util.concurrent.ListenableFuture: void addListener(java.lang.Runnable,java.util.concurrent.Executor)>(v, v);
return v;
}
public static java.util.concurrent.ThreadFactory platformThreadFactory()
{
java.lang.Throwable v;
java.lang.Object[] v;
java.lang.NoSuchMethodException v;
java.util.concurrent.ThreadFactory v;
java.lang.reflect.Method v;
boolean v;
java.lang.IllegalAccessException v;
java.lang.Class[] v;
java.lang.RuntimeException v, v, v, v;
java.lang.reflect.InvocationTargetException v;
java.lang.Class v;
java.lang.ClassNotFoundException v;
java.lang.Object v;
v = staticinvoke <com.google.common.util.concurrent.MoreExecutors: boolean isAppEngineWithApiClasses()>();
if v != 0 goto label;
v = staticinvoke <java.util.concurrent.Executors: java.util.concurrent.ThreadFactory defaultThreadFactory()>();
return v;
label:
v = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String)>("com.google.appengine.api.ThreadManager");
v = newarray (java.lang.Class)[0];
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method getMethod(java.lang.String,java.lang.Class[])>("currentRequestThreadFactory", v);
v = newarray (java.lang.Object)[0];
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Object invoke(java.lang.Object,java.lang.Object[])>(null, v);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String,java.lang.Throwable)>("Couldn\'t invoke ThreadManager.currentRequestThreadFactory", v);
throw v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String,java.lang.Throwable)>("Couldn\'t invoke ThreadManager.currentRequestThreadFactory", v);
throw v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String,java.lang.Throwable)>("Couldn\'t invoke ThreadManager.currentRequestThreadFactory", v);
throw v;
label:
v := @caughtexception;
v = virtualinvoke v.<java.lang.reflect.InvocationTargetException: java.lang.Throwable getCause()>();
v = staticinvoke <com.google.common.base.Throwables: java.lang.RuntimeException propagate(java.lang.Throwable)>(v);
throw v;
catch java.lang.IllegalAccessException from label to label with label;
catch java.lang.ClassNotFoundException from label to label with label;
catch java.lang.NoSuchMethodException from label to label with label;
catch java.lang.reflect.InvocationTargetException from label to label with label;
}
private static boolean isAppEngineWithApiClasses()
{
java.lang.IllegalAccessException v;
java.lang.Object[] v;
java.lang.NoSuchMethodException v;
java.lang.Class[] v;
java.lang.reflect.InvocationTargetException v;
java.lang.Class v;
java.lang.ClassNotFoundException v, v;
java.lang.Object v;
java.lang.String v;
java.lang.reflect.Method v;
boolean v;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("com.google.appengine.runtime.environment");
if v != null goto label;
return 0;
label:
staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String)>("com.google.appengine.api.utils.SystemProperty");
label:
goto label;
label:
v := @caughtexception;
return 0;
label:
v = staticinvoke <java.lang.Class: java.lang.Class forName(java.lang.String)>("com.google.apphosting.api.ApiProxy");
v = newarray (java.lang.Class)[0];
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method getMethod(java.lang.String,java.lang.Class[])>("getCurrentEnvironment", v);
v = newarray (java.lang.Object)[0];
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Object invoke(java.lang.Object,java.lang.Object[])>(null, v);
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
v := @caughtexception;
return 0;
label:
v := @caughtexception;
return 0;
label:
v := @caughtexception;
return 0;
label:
v := @caughtexception;
return 0;
catch java.lang.ClassNotFoundException from label to label with label;
catch java.lang.ClassNotFoundException from label to label with label;
catch java.lang.reflect.InvocationTargetException from label to label with label;
catch java.lang.IllegalAccessException from label to label with label;
catch java.lang.NoSuchMethodException from label to label with label;
}
static java.lang.Thread newThread(java.lang.String, java.lang.Runnable)
{
java.lang.Thread v;
java.lang.SecurityException v;
java.lang.String v;
java.util.concurrent.ThreadFactory v;
java.lang.Runnable v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Runnable;
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
v = staticinvoke <com.google.common.util.concurrent.MoreExecutors: java.util.concurrent.ThreadFactory platformThreadFactory()>();
v = interfaceinvoke v.<java.util.concurrent.ThreadFactory: java.lang.Thread newThread(java.lang.Runnable)>(v);
label:
virtualinvoke v.<java.lang.Thread: void setName(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
label:
return v;
catch java.lang.SecurityException from label to label with label;
}
static java.util.concurrent.Executor renamingDecorator(java.util.concurrent.Executor, com.google.common.base.Supplier)
{
com.google.common.base.Supplier v;
com.google.common.util.concurrent.MoreExecutors$2 v;
java.util.concurrent.Executor v;
v := @parameter: java.util.concurrent.Executor;
v := @parameter: com.google.common.base.Supplier;
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
v = new com.google.common.util.concurrent.MoreExecutors$2;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$2: void <init>(java.util.concurrent.Executor,com.google.common.base.Supplier)>(v, v);
return v;
}
static java.util.concurrent.ExecutorService renamingDecorator(java.util.concurrent.ExecutorService, com.google.common.base.Supplier)
{
com.google.common.base.Supplier v;
com.google.common.util.concurrent.MoreExecutors$3 v;
java.util.concurrent.ExecutorService v;
v := @parameter: java.util.concurrent.ExecutorService;
v := @parameter: com.google.common.base.Supplier;
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
v = new com.google.common.util.concurrent.MoreExecutors$3;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$3: void <init>(java.util.concurrent.ExecutorService,com.google.common.base.Supplier)>(v, v);
return v;
}
static java.util.concurrent.ScheduledExecutorService renamingDecorator(java.util.concurrent.ScheduledExecutorService, com.google.common.base.Supplier)
{
com.google.common.base.Supplier v;
java.util.concurrent.ScheduledExecutorService v;
com.google.common.util.concurrent.MoreExecutors$4 v;
v := @parameter: java.util.concurrent.ScheduledExecutorService;
v := @parameter: com.google.common.base.Supplier;
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
v = new com.google.common.util.concurrent.MoreExecutors$4;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$4: void <init>(java.util.concurrent.ScheduledExecutorService,com.google.common.base.Supplier)>(v, v);
return v;
}
public static boolean shutdownAndAwaitTermination(java.util.concurrent.ExecutorService, java.time.Duration)
{
java.util.concurrent.TimeUnit v;
java.time.Duration v;
long v;
java.util.concurrent.ExecutorService v;
boolean v;
v := @parameter: java.util.concurrent.ExecutorService;
v := @parameter: java.time.Duration;
v = staticinvoke <com.google.common.util.concurrent.Internal: long toNanosSaturated(java.time.Duration)>(v);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
v = staticinvoke <com.google.common.util.concurrent.MoreExecutors: boolean shutdownAndAwaitTermination(java.util.concurrent.ExecutorService,long,java.util.concurrent.TimeUnit)>(v, v, v);
return v;
}
public static boolean shutdownAndAwaitTermination(java.util.concurrent.ExecutorService, long, java.util.concurrent.TimeUnit)
{
long v, v, v;
java.util.concurrent.TimeUnit v, v, v;
java.lang.InterruptedException v;
java.lang.Thread v;
java.util.concurrent.ExecutorService v;
boolean v, v;
v := @parameter: java.util.concurrent.ExecutorService;
v := @parameter: long;
v := @parameter: java.util.concurrent.TimeUnit;
v = virtualinvoke v.<java.util.concurrent.TimeUnit: long toNanos(long)>(v);
v = v / 2L;
interfaceinvoke v.<java.util.concurrent.ExecutorService: void shutdown()>();
label:
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
v = interfaceinvoke v.<java.util.concurrent.ExecutorService: boolean awaitTermination(long,java.util.concurrent.TimeUnit)>(v, v);
if v != 0 goto label;
interfaceinvoke v.<java.util.concurrent.ExecutorService: java.util.List shutdownNow()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit NANOSECONDS>;
interfaceinvoke v.<java.util.concurrent.ExecutorService: boolean awaitTermination(long,java.util.concurrent.TimeUnit)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
virtualinvoke v.<java.lang.Thread: void interrupt()>();
interfaceinvoke v.<java.util.concurrent.ExecutorService: java.util.List shutdownNow()>();
label:
v = interfaceinvoke v.<java.util.concurrent.ExecutorService: boolean isTerminated()>();
return v;
catch java.lang.InterruptedException from label to label with label;
}
static java.util.concurrent.Executor rejectionPropagatingExecutor(java.util.concurrent.Executor, com.google.common.util.concurrent.AbstractFuture)
{
java.util.concurrent.Executor v, v;
com.google.common.util.concurrent.MoreExecutors$5 v;
com.google.common.util.concurrent.AbstractFuture v;
v := @parameter: java.util.concurrent.Executor;
v := @parameter: com.google.common.util.concurrent.AbstractFuture;
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
staticinvoke <com.google.common.base.Preconditions: java.lang.Object checkNotNull(java.lang.Object)>(v);
v = staticinvoke <com.google.common.util.concurrent.MoreExecutors: java.util.concurrent.Executor directExecutor()>();
if v != v goto label;
return v;
label:
v = new com.google.common.util.concurrent.MoreExecutors$5;
specialinvoke v.<com.google.common.util.concurrent.MoreExecutors$5: void <init>(java.util.concurrent.Executor,com.google.common.util.concurrent.AbstractFuture)>(v, v);
return v;
}
}