class org.springframework.util.WeakReferenceMonitor$MonitoringProcess extends java.lang.Object implements java.lang.Runnable { private void () { org.springframework.util.WeakReferenceMonitor$MonitoringProcess v; v := @this: org.springframework.util.WeakReferenceMonitor$MonitoringProcess; specialinvoke v.()>(); return; } public void run() { java.lang.Throwable v, v; org.springframework.util.WeakReferenceMonitor$MonitoringProcess v; java.lang.ref.ReferenceQueue v; java.lang.ref.Reference v; org.springframework.util.WeakReferenceMonitor$ReleaseListener v; java.lang.InterruptedException v; org.apache.commons.logging.Log v, v, v; boolean v; v := @this: org.springframework.util.WeakReferenceMonitor$MonitoringProcess; v = ; interfaceinvoke v.("Starting reference monitor thread"); label: v = staticinvoke (); if v == 0 goto label; label: v = ; v = virtualinvoke v.(); v = staticinvoke (v); if v == null goto label; label: interfaceinvoke v.(); label: goto label; label: v := @caughtexception; v = ; interfaceinvoke v.("Reference release listener threw exception", v); label: goto label; label: v := @caughtexception; entermonitor class "Lorg/springframework/util/WeakReferenceMonitor;"; label: staticinvoke (null); exitmonitor class "Lorg/springframework/util/WeakReferenceMonitor;"; label: goto label; label: v := @caughtexception; exitmonitor class "Lorg/springframework/util/WeakReferenceMonitor;"; throw v; label: v = ; interfaceinvoke v.("Reference monitor thread interrupted", v); label: return; catch java.lang.Throwable from label to label with label; catch java.lang.InterruptedException from label to label with label; catch java.lang.Throwable from label to label with label; } }