final class com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher extends com.google.common.eventbus.Dispatcher
{
private final java.lang.ThreadLocal queue;
private final java.lang.ThreadLocal dispatching;
private void <init>()
{
com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher v;
com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$2 v;
com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$1 v;
v := @this: com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher;
specialinvoke v.<com.google.common.eventbus.Dispatcher: void <init>()>();
v = new com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$1;
specialinvoke v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$1: void <init>(com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher)>(v);
v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher: java.lang.ThreadLocal queue> = v;
v = new com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$2;
specialinvoke v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$2: void <init>(com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher)>(v);
v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher: java.lang.ThreadLocal dispatching> = v;
return;
}
void dispatch(java.lang.Object, java.util.Iterator)
{
java.lang.Throwable v;
java.lang.Boolean v;
boolean v, v;
java.lang.ThreadLocal v, v, v, v, v, v, v;
java.util.Iterator v, v, v;
com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher v;
com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event v;
java.lang.Object v, v, v, v, v, v;
v := @this: com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher;
v := @parameter: java.lang.Object;
v := @parameter: java.util.Iterator;
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 = v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher: java.lang.ThreadLocal queue>;
v = virtualinvoke v.<java.lang.ThreadLocal: java.lang.Object get()>();
v = new com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event;
specialinvoke v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event: void <init>(java.lang.Object,java.util.Iterator)>(v, v);
interfaceinvoke v.<java.util.Queue: boolean offer(java.lang.Object)>(v);
v = v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher: java.lang.ThreadLocal dispatching>;
v = virtualinvoke v.<java.lang.ThreadLocal: java.lang.Object get()>();
v = virtualinvoke v.<java.lang.Boolean: boolean booleanValue()>();
if v != 0 goto label;
v = v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher: java.lang.ThreadLocal dispatching>;
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(1);
virtualinvoke v.<java.lang.ThreadLocal: void set(java.lang.Object)>(v);
label:
v = interfaceinvoke v.<java.util.Queue: java.lang.Object poll()>();
if v == null goto label;
label:
v = v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event: java.util.Iterator subscribers>;
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event: java.util.Iterator subscribers>;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher$Event: java.lang.Object event>;
virtualinvoke v.<com.google.common.eventbus.Subscriber: void dispatchEvent(java.lang.Object)>(v);
goto label;
label:
v = v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher: java.lang.ThreadLocal dispatching>;
virtualinvoke v.<java.lang.ThreadLocal: void remove()>();
v = v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher: java.lang.ThreadLocal queue>;
virtualinvoke v.<java.lang.ThreadLocal: void remove()>();
goto label;
label:
v := @caughtexception;
v = v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher: java.lang.ThreadLocal dispatching>;
virtualinvoke v.<java.lang.ThreadLocal: void remove()>();
v = v.<com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher: java.lang.ThreadLocal queue>;
virtualinvoke v.<java.lang.ThreadLocal: void remove()>();
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
}