final class com.google.common.util.concurrent.AbstractService$StateSnapshot extends java.lang.Object
{
final com.google.common.util.concurrent.Service$State state;
final boolean shutdownWhenStartupFinishes;
final java.lang.Throwable failure;
void <init>(com.google.common.util.concurrent.Service$State)
{
com.google.common.util.concurrent.AbstractService$StateSnapshot v;
com.google.common.util.concurrent.Service$State v;
v := @this: com.google.common.util.concurrent.AbstractService$StateSnapshot;
v := @parameter: com.google.common.util.concurrent.Service$State;
specialinvoke v.<com.google.common.util.concurrent.AbstractService$StateSnapshot: void <init>(com.google.common.util.concurrent.Service$State,boolean,java.lang.Throwable)>(v, 0, null);
return;
}
void <init>(com.google.common.util.concurrent.Service$State, boolean, java.lang.Throwable)
{
java.lang.Throwable v;
com.google.common.util.concurrent.AbstractService$StateSnapshot v;
com.google.common.util.concurrent.Service$State v, v, v;
boolean v, v, v, v, v;
v := @this: com.google.common.util.concurrent.AbstractService$StateSnapshot;
v := @parameter: com.google.common.util.concurrent.Service$State;
v := @parameter: boolean;
v := @parameter: java.lang.Throwable;
specialinvoke v.<java.lang.Object: void <init>()>();
if v == 0 goto label;
v = <com.google.common.util.concurrent.Service$State: com.google.common.util.concurrent.Service$State STARTING>;
if v != v goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object)>(v, "shutdownWhenStartupFinishes can only be set if state is STARTING. Got %s instead.", v);
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = <com.google.common.util.concurrent.Service$State: com.google.common.util.concurrent.Service$State FAILED>;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
staticinvoke <com.google.common.base.Preconditions: void checkArgument(boolean,java.lang.String,java.lang.Object,java.lang.Object)>(v, "A failure cause should be set if and only if the state is failed.  Got %s and %s instead.", v, v);
v.<com.google.common.util.concurrent.AbstractService$StateSnapshot: com.google.common.util.concurrent.Service$State state> = v;
v.<com.google.common.util.concurrent.AbstractService$StateSnapshot: boolean shutdownWhenStartupFinishes> = v;
v.<com.google.common.util.concurrent.AbstractService$StateSnapshot: java.lang.Throwable failure> = v;
return;
}
com.google.common.util.concurrent.Service$State externalState()
{
com.google.common.util.concurrent.Service$State v, v, v, v;
com.google.common.util.concurrent.AbstractService$StateSnapshot v;
boolean v;
v := @this: com.google.common.util.concurrent.AbstractService$StateSnapshot;
v = v.<com.google.common.util.concurrent.AbstractService$StateSnapshot: boolean shutdownWhenStartupFinishes>;
if v == 0 goto label;
v = v.<com.google.common.util.concurrent.AbstractService$StateSnapshot: com.google.common.util.concurrent.Service$State state>;
v = <com.google.common.util.concurrent.Service$State: com.google.common.util.concurrent.Service$State STARTING>;
if v != v goto label;
v = <com.google.common.util.concurrent.Service$State: com.google.common.util.concurrent.Service$State STOPPING>;
return v;
label:
v = v.<com.google.common.util.concurrent.AbstractService$StateSnapshot: com.google.common.util.concurrent.Service$State state>;
return v;
}
java.lang.Throwable failureCause()
{
java.lang.Throwable v;
com.google.common.util.concurrent.Service$State v, v, v;
com.google.common.util.concurrent.AbstractService$StateSnapshot v;
java.lang.Object v;
boolean v;
v := @this: com.google.common.util.concurrent.AbstractService$StateSnapshot;
v = v.<com.google.common.util.concurrent.AbstractService$StateSnapshot: com.google.common.util.concurrent.Service$State state>;
v = <com.google.common.util.concurrent.Service$State: com.google.common.util.concurrent.Service$State FAILED>;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v.<com.google.common.util.concurrent.AbstractService$StateSnapshot: com.google.common.util.concurrent.Service$State state>;
staticinvoke <com.google.common.base.Preconditions: void checkState(boolean,java.lang.String,java.lang.Object)>(v, "failureCause() is only valid if the service has failed, service is %s", v);
v = v.<com.google.common.util.concurrent.AbstractService$StateSnapshot: java.lang.Throwable failure>;
v = staticinvoke <java.util.Objects: java.lang.Object requireNonNull(java.lang.Object)>(v);
return v;
}
}