class org.jruby.ext.timeout.Timeout$TimeoutTask implements java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.jruby.ext.timeout.Timeout$TimeoutTask
  super_class: java.lang.Object
{
  final org.jruby.RubyThread currentThread;
    descriptor: Lorg/jruby/RubyThread;
    flags: (0x0010) ACC_FINAL

  final java.util.concurrent.atomic.AtomicBoolean latch;
    descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
    flags: (0x0010) ACC_FINAL

  final org.jruby.RubyModule timeout;
    descriptor: Lorg/jruby/RubyModule;
    flags: (0x0010) ACC_FINAL

  final org.jruby.runtime.builtin.IRubyObject id;
    descriptor: Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0010) ACC_FINAL

  final org.jruby.runtime.builtin.IRubyObject exception;
    descriptor: Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0010) ACC_FINAL

  final org.jruby.RubyString message;
    descriptor: Lorg/jruby/RubyString;
    flags: (0x0010) ACC_FINAL

  private void <init>(org.jruby.RubyThread, org.jruby.RubyModule, java.util.concurrent.atomic.AtomicBoolean, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyString);
    descriptor: (Lorg/jruby/RubyThread;Lorg/jruby/RubyModule;Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyString;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=7, args_size=7
        start local 0 // org.jruby.ext.timeout.Timeout$TimeoutTask this
        start local 1 // org.jruby.RubyThread currentThread
        start local 2 // org.jruby.RubyModule timeout
        start local 3 // java.util.concurrent.atomic.AtomicBoolean latch
        start local 4 // org.jruby.runtime.builtin.IRubyObject id
        start local 5 // org.jruby.runtime.builtin.IRubyObject exception
        start local 6 // org.jruby.RubyString message
         0: .line 144
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 146
            aload 0 /* this */
            aload 1 /* currentThread */
            putfield org.jruby.ext.timeout.Timeout$TimeoutTask.currentThread:Lorg/jruby/RubyThread;
         2: .line 147
            aload 0 /* this */
            aload 2 /* timeout */
            putfield org.jruby.ext.timeout.Timeout$TimeoutTask.timeout:Lorg/jruby/RubyModule;
         3: .line 148
            aload 0 /* this */
            aload 3 /* latch */
            putfield org.jruby.ext.timeout.Timeout$TimeoutTask.latch:Ljava/util/concurrent/atomic/AtomicBoolean;
         4: .line 149
            aload 0 /* this */
            aload 4 /* id */
            putfield org.jruby.ext.timeout.Timeout$TimeoutTask.id:Lorg/jruby/runtime/builtin/IRubyObject;
         5: .line 150
            aload 0 /* this */
            aload 5 /* exception */
            putfield org.jruby.ext.timeout.Timeout$TimeoutTask.exception:Lorg/jruby/runtime/builtin/IRubyObject;
         6: .line 151
            aload 0 /* this */
            aload 6 /* message */
            putfield org.jruby.ext.timeout.Timeout$TimeoutTask.message:Lorg/jruby/RubyString;
         7: .line 152
            return
        end local 6 // org.jruby.RubyString message
        end local 5 // org.jruby.runtime.builtin.IRubyObject exception
        end local 4 // org.jruby.runtime.builtin.IRubyObject id
        end local 3 // java.util.concurrent.atomic.AtomicBoolean latch
        end local 2 // org.jruby.RubyModule timeout
        end local 1 // org.jruby.RubyThread currentThread
        end local 0 // org.jruby.ext.timeout.Timeout$TimeoutTask this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lorg/jruby/ext/timeout/Timeout$TimeoutTask;
            0    8     1  currentThread  Lorg/jruby/RubyThread;
            0    8     2        timeout  Lorg/jruby/RubyModule;
            0    8     3          latch  Ljava/util/concurrent/atomic/AtomicBoolean;
            0    8     4             id  Lorg/jruby/runtime/builtin/IRubyObject;
            0    8     5      exception  Lorg/jruby/runtime/builtin/IRubyObject;
            0    8     6        message  Lorg/jruby/RubyString;
    MethodParameters:
               Name  Flags
      currentThread  final
      timeout        final
      latch          final
      id             final
      exception      final
      message        final

  static org.jruby.ext.timeout.Timeout$TimeoutTask newAnonymousTask(org.jruby.RubyThread, org.jruby.RubyModule, java.util.concurrent.atomic.AtomicBoolean, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyString);
    descriptor: (Lorg/jruby/RubyThread;Lorg/jruby/RubyModule;Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyString;)Lorg/jruby/ext/timeout/Timeout$TimeoutTask;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=5, args_size=5
        start local 0 // org.jruby.RubyThread currentThread
        start local 1 // org.jruby.RubyModule timeout
        start local 2 // java.util.concurrent.atomic.AtomicBoolean latch
        start local 3 // org.jruby.runtime.builtin.IRubyObject id
        start local 4 // org.jruby.RubyString message
         0: .line 156
            new org.jruby.ext.timeout.Timeout$TimeoutTask
            dup
            aload 0 /* currentThread */
            aload 1 /* timeout */
            aload 2 /* latch */
            aload 3 /* id */
            aconst_null
            aload 4 /* message */
            invokespecial org.jruby.ext.timeout.Timeout$TimeoutTask.<init>:(Lorg/jruby/RubyThread;Lorg/jruby/RubyModule;Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyString;)V
            areturn
        end local 4 // org.jruby.RubyString message
        end local 3 // org.jruby.runtime.builtin.IRubyObject id
        end local 2 // java.util.concurrent.atomic.AtomicBoolean latch
        end local 1 // org.jruby.RubyModule timeout
        end local 0 // org.jruby.RubyThread currentThread
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0  currentThread  Lorg/jruby/RubyThread;
            0    1     1        timeout  Lorg/jruby/RubyModule;
            0    1     2          latch  Ljava/util/concurrent/atomic/AtomicBoolean;
            0    1     3             id  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     4        message  Lorg/jruby/RubyString;
    MethodParameters:
               Name  Flags
      currentThread  final
      timeout        final
      latch          final
      id             final
      message        final

  static org.jruby.ext.timeout.Timeout$TimeoutTask newTaskWithException(org.jruby.RubyThread, org.jruby.RubyModule, java.util.concurrent.atomic.AtomicBoolean, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyString);
    descriptor: (Lorg/jruby/RubyThread;Lorg/jruby/RubyModule;Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyString;)Lorg/jruby/ext/timeout/Timeout$TimeoutTask;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=5, args_size=5
        start local 0 // org.jruby.RubyThread currentThread
        start local 1 // org.jruby.RubyModule timeout
        start local 2 // java.util.concurrent.atomic.AtomicBoolean latch
        start local 3 // org.jruby.runtime.builtin.IRubyObject exception
        start local 4 // org.jruby.RubyString message
         0: .line 161
            new org.jruby.ext.timeout.Timeout$TimeoutTask
            dup
            aload 0 /* currentThread */
            aload 1 /* timeout */
            aload 2 /* latch */
            aconst_null
            aload 3 /* exception */
            aload 4 /* message */
            invokespecial org.jruby.ext.timeout.Timeout$TimeoutTask.<init>:(Lorg/jruby/RubyThread;Lorg/jruby/RubyModule;Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyString;)V
            areturn
        end local 4 // org.jruby.RubyString message
        end local 3 // org.jruby.runtime.builtin.IRubyObject exception
        end local 2 // java.util.concurrent.atomic.AtomicBoolean latch
        end local 1 // org.jruby.RubyModule timeout
        end local 0 // org.jruby.RubyThread currentThread
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0  currentThread  Lorg/jruby/RubyThread;
            0    1     1        timeout  Lorg/jruby/RubyModule;
            0    1     2          latch  Ljava/util/concurrent/atomic/AtomicBoolean;
            0    1     3      exception  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     4        message  Lorg/jruby/RubyString;
    MethodParameters:
               Name  Flags
      currentThread  final
      timeout        final
      latch          final
      exception      final
      message        final

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jruby.ext.timeout.Timeout$TimeoutTask this
         0: .line 165
            aload 0 /* this */
            getfield org.jruby.ext.timeout.Timeout$TimeoutTask.latch:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_0
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
            ifeq 5
         1: .line 166
            aload 0 /* this */
            getfield org.jruby.ext.timeout.Timeout$TimeoutTask.exception:Lorg/jruby/runtime/builtin/IRubyObject;
            ifnonnull 4
         2: .line 167
            aload 0 /* this */
            invokevirtual org.jruby.ext.timeout.Timeout$TimeoutTask.raiseAnonymous:()V
         3: .line 168
            goto 5
         4: .line 169
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.ext.timeout.Timeout$TimeoutTask.raiseException:()V
         5: .line 172
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.jruby.ext.timeout.Timeout$TimeoutTask this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/jruby/ext/timeout/Timeout$TimeoutTask;

  private void raiseAnonymous();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.jruby.ext.timeout.Timeout$TimeoutTask this
         0: .line 177
            aload 0 /* this */
            getfield org.jruby.ext.timeout.Timeout$TimeoutTask.timeout:Lorg/jruby/RubyModule;
            invokestatic org.jruby.ext.timeout.Timeout.getTimeoutError:(Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            aload 0 /* this */
            getfield org.jruby.ext.timeout.Timeout$TimeoutTask.timeout:Lorg/jruby/RubyModule;
            invokevirtual org.jruby.RubyModule.getRuntime:()Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            aload 0 /* this */
            getfield org.jruby.ext.timeout.Timeout$TimeoutTask.message:Lorg/jruby/RubyString;
            getstatic org.jruby.runtime.Block.NULL_BLOCK:Lorg/jruby/runtime/Block;
            invokevirtual org.jruby.RubyClass.newInstance:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
         1: .line 176
            astore 1 /* anonException */
        start local 1 // org.jruby.runtime.builtin.IRubyObject anonException
         2: .line 178
            aload 1 /* anonException */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getInternalVariables:()Lorg/jruby/runtime/builtin/InternalVariables;
            ldc "__identifier__"
            aload 0 /* this */
            getfield org.jruby.ext.timeout.Timeout$TimeoutTask.id:Lorg/jruby/runtime/builtin/IRubyObject;
            invokeinterface org.jruby.runtime.builtin.InternalVariables.setInternalVariable:(Ljava/lang/String;Ljava/lang/Object;)V
         3: .line 179
            aload 0 /* this */
            getfield org.jruby.ext.timeout.Timeout$TimeoutTask.currentThread:Lorg/jruby/RubyThread;
            aload 1 /* anonException */
            invokevirtual org.jruby.RubyThread.raise:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            pop
         4: .line 180
            return
        end local 1 // org.jruby.runtime.builtin.IRubyObject anonException
        end local 0 // org.jruby.ext.timeout.Timeout$TimeoutTask this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lorg/jruby/ext/timeout/Timeout$TimeoutTask;
            2    5     1  anonException  Lorg/jruby/runtime/builtin/IRubyObject;

  private void raiseException();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jruby.ext.timeout.Timeout$TimeoutTask this
         0: .line 183
            aload 0 /* this */
            getfield org.jruby.ext.timeout.Timeout$TimeoutTask.currentThread:Lorg/jruby/RubyThread;
            aload 0 /* this */
            getfield org.jruby.ext.timeout.Timeout$TimeoutTask.exception:Lorg/jruby/runtime/builtin/IRubyObject;
            aload 0 /* this */
            getfield org.jruby.ext.timeout.Timeout$TimeoutTask.message:Lorg/jruby/RubyString;
            invokevirtual org.jruby.RubyThread.raise:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyString;)Lorg/jruby/runtime/builtin/IRubyObject;
            pop
         1: .line 184
            return
        end local 0 // org.jruby.ext.timeout.Timeout$TimeoutTask this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jruby/ext/timeout/Timeout$TimeoutTask;
}
SourceFile: "Timeout.java"
NestHost: org.jruby.ext.timeout.Timeout
InnerClasses:
  private TimeoutTask = org.jruby.ext.timeout.Timeout$TimeoutTask of org.jruby.ext.timeout.Timeout