public class org.eclipse.core.internal.jobs.InternalWorker extends java.lang.Thread
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.eclipse.core.internal.jobs.InternalWorker
  super_class: java.lang.Thread
{
  private final org.eclipse.core.internal.jobs.JobManager manager;
    descriptor: Lorg/eclipse/core/internal/jobs/JobManager;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean canceled;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  void <init>(org.eclipse.core.internal.jobs.JobManager);
    descriptor: (Lorg/eclipse/core/internal/jobs/JobManager;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.core.internal.jobs.InternalWorker this
        start local 1 // org.eclipse.core.internal.jobs.JobManager manager
         0: .line 31
            aload 0 /* this */
            ldc "Worker-JM"
            invokespecial java.lang.Thread.<init>:(Ljava/lang/String;)V
         1: .line 32
            aload 0 /* this */
            aload 1 /* manager */
            putfield org.eclipse.core.internal.jobs.InternalWorker.manager:Lorg/eclipse/core/internal/jobs/JobManager;
         2: .line 33
            return
        end local 1 // org.eclipse.core.internal.jobs.JobManager manager
        end local 0 // org.eclipse.core.internal.jobs.InternalWorker this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/eclipse/core/internal/jobs/InternalWorker;
            0    3     1  manager  Lorg/eclipse/core/internal/jobs/JobManager;
    MethodParameters:
         Name  Flags
      manager  

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=1
        start local 0 // org.eclipse.core.internal.jobs.InternalWorker this
         0: .line 42
            iconst_0
            istore 1 /* timeout */
        start local 1 // int timeout
         1: .line 43
            aload 0 /* this */
            getfield org.eclipse.core.internal.jobs.InternalWorker.manager:Lorg/eclipse/core/internal/jobs/JobManager;
            getfield org.eclipse.core.internal.jobs.JobManager.monitorStack:Ljava/util/List;
            dup
            astore 2
            monitorenter
         2: .line 44
            goto 21
         3: .line 45
      StackMap locals: int java.util.List
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.core.internal.jobs.InternalWorker.manager:Lorg/eclipse/core/internal/jobs/JobManager;
            getfield org.eclipse.core.internal.jobs.JobManager.monitorStack:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 6
         4: .line 46
            iconst_0
            istore 1 /* timeout */
         5: .line 47
            goto 7
         6: .line 48
      StackMap locals:
      StackMap stack:
            sipush 250
            istore 1 /* timeout */
         7: .line 50
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         8: goto 17
         9: .line 51
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.core.internal.jobs.InternalWorker.manager:Lorg/eclipse/core/internal/jobs/JobManager;
            getfield org.eclipse.core.internal.jobs.JobManager.monitorStack:Ljava/util/List;
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.Object[]
            astore 4 /* o */
        start local 4 // java.lang.Object[] o
        10: .line 52
            aload 4 /* o */
            iconst_1
            aaload
            checkcast org.eclipse.core.runtime.IProgressMonitor
            astore 5 /* monitor */
        start local 5 // org.eclipse.core.runtime.IProgressMonitor monitor
        11: .line 53
            aload 5 /* monitor */
            invokeinterface org.eclipse.core.runtime.IProgressMonitor.isCanceled:()Z
            ifeq 16
        12: .line 54
            aload 4 /* o */
            iconst_0
            aaload
            checkcast org.eclipse.core.runtime.jobs.Job
            astore 6 /* job */
        start local 6 // org.eclipse.core.runtime.jobs.Job job
        13: .line 55
            aload 6 /* job */
            invokevirtual org.eclipse.core.runtime.jobs.Job.getThread:()Ljava/lang/Thread;
            astore 7 /* t */
        start local 7 // java.lang.Thread t
        14: .line 56
            aload 7 /* t */
            ifnull 16
        15: .line 57
            aload 7 /* t */
            invokevirtual java.lang.Thread.interrupt:()V
        end local 7 // java.lang.Thread t
        end local 6 // org.eclipse.core.runtime.jobs.Job job
        end local 5 // org.eclipse.core.runtime.IProgressMonitor monitor
        end local 4 // java.lang.Object[] o
        16: .line 50
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 3 /* i */
            aload 0 /* this */
            getfield org.eclipse.core.internal.jobs.InternalWorker.manager:Lorg/eclipse/core/internal/jobs/JobManager;
            getfield org.eclipse.core.internal.jobs.JobManager.monitorStack:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            if_icmplt 9
        end local 3 // int i
        18: .line 62
            aload 0 /* this */
            getfield org.eclipse.core.internal.jobs.InternalWorker.manager:Lorg/eclipse/core/internal/jobs/JobManager;
            getfield org.eclipse.core.internal.jobs.JobManager.monitorStack:Ljava/util/List;
            iload 1 /* timeout */
            i2l
            invokevirtual java.lang.Object.wait:(J)V
        19: .line 63
            goto 21
      StackMap locals: org.eclipse.core.internal.jobs.InternalWorker int java.util.List
      StackMap stack: java.lang.InterruptedException
        20: pop
        21: .line 44
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.core.internal.jobs.InternalWorker.canceled:Z
            ifeq 3
        22: .line 43
            aload 2
            monitorexit
        23: goto 26
      StackMap locals:
      StackMap stack: java.lang.Throwable
        24: aload 2
            monitorexit
        25: athrow
        26: .line 68
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int timeout
        end local 0 // org.eclipse.core.internal.jobs.InternalWorker this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   27     0     this  Lorg/eclipse/core/internal/jobs/InternalWorker;
            1   27     1  timeout  I
            8   18     3        i  I
           10   16     4        o  [Ljava/lang/Object;
           11   16     5  monitor  Lorg/eclipse/core/runtime/IProgressMonitor;
           13   16     6      job  Lorg/eclipse/core/runtime/jobs/Job;
           14   16     7        t  Ljava/lang/Thread;
      Exception table:
        from    to  target  type
          18    19      20  Class java.lang.InterruptedException
           2    23      24  any
          24    25      24  any

  void cancel();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.eclipse.core.internal.jobs.InternalWorker this
         0: .line 74
            aload 0 /* this */
            getfield org.eclipse.core.internal.jobs.InternalWorker.manager:Lorg/eclipse/core/internal/jobs/JobManager;
            getfield org.eclipse.core.internal.jobs.JobManager.monitorStack:Ljava/util/List;
            dup
            astore 1
            monitorenter
         1: .line 75
            aload 0 /* this */
            iconst_1
            putfield org.eclipse.core.internal.jobs.InternalWorker.canceled:Z
         2: .line 76
            aload 0 /* this */
            getfield org.eclipse.core.internal.jobs.InternalWorker.manager:Lorg/eclipse/core/internal/jobs/JobManager;
            getfield org.eclipse.core.internal.jobs.JobManager.monitorStack:Ljava/util/List;
            invokevirtual java.lang.Object.notifyAll:()V
         3: .line 74
            aload 1
            monitorexit
         4: goto 7
      StackMap locals: org.eclipse.core.internal.jobs.InternalWorker java.util.List
      StackMap stack: java.lang.Throwable
         5: aload 1
            monitorexit
         6: athrow
         7: .line 78
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.eclipse.core.internal.jobs.InternalWorker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/eclipse/core/internal/jobs/InternalWorker;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any
}
SourceFile: "InternalWorker.java"