public abstract class org.eclipse.jdt.internal.core.search.processing.JobManager implements java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.eclipse.jdt.internal.core.search.processing.JobManager
  super_class: java.lang.Object
{
  protected org.eclipse.jdt.internal.core.search.processing.IJob[] awaitingJobs;
    descriptor: [Lorg/eclipse/jdt/internal/core/search/processing/IJob;
    flags: (0x0004) ACC_PROTECTED

  protected int jobStart;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

  protected int jobEnd;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

  protected boolean executing;
    descriptor: Z
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.Thread processingThread;
    descriptor: Ljava/lang/Thread;
    flags: (0x0004) ACC_PROTECTED

  protected org.eclipse.core.runtime.jobs.Job progressJob;
    descriptor: Lorg/eclipse/core/runtime/jobs/Job;
    flags: (0x0004) ACC_PROTECTED

  private int enableCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  public static boolean VERBOSE;
    descriptor: Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC

  public boolean activated;
    descriptor: Z
    flags: (0x0001) ACC_PUBLIC

  private int awaitingClients;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 37
            iconst_0
            putstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
         0: .line 21
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 24
            aload 0 /* this */
            bipush 10
            anewarray org.eclipse.jdt.internal.core.search.processing.IJob
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
         2: .line 25
            aload 0 /* this */
            iconst_0
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
         3: .line 26
            aload 0 /* this */
            iconst_m1
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
         4: .line 27
            aload 0 /* this */
            iconst_0
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.executing:Z
         5: .line 35
            aload 0 /* this */
            iconst_1
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.enableCount:I
         6: .line 39
            aload 0 /* this */
            iconst_0
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.activated:Z
         7: .line 41
            aload 0 /* this */
            iconst_0
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingClients:I
         8: .line 21
            return
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;

  public void activateProcessing();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
         0: .line 47
            aload 0 /* this */
            iconst_1
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.activated:Z
         1: .line 48
            return
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;

  public synchronized int awaitingJobsCount();
    descriptor: ()I
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
         0: .line 54
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.activated:Z
            ifeq 1
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            isub
            iconst_1
            iadd
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;

  public synchronized org.eclipse.jdt.internal.core.search.processing.IJob currentJob();
    descriptor: ()Lorg/eclipse/jdt/internal/core/search/processing/IJob;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
         0: .line 61
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.enableCount:I
            ifle 2
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            if_icmpgt 2
         1: .line 62
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            aaload
            areturn
         2: .line 63
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;

  public synchronized void disable();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
         0: .line 66
            aload 0 /* this */
            dup
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.enableCount:I
            iconst_1
            isub
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.enableCount:I
         1: .line 67
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 3
         2: .line 68
            ldc "DISABLING background indexing"
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
         3: .line 69
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;

  public void discardJobs(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
        start local 1 // java.lang.String jobFamily
         0: .line 76
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 2
         1: .line 77
            new java.lang.StringBuilder
            dup
            ldc "DISCARD   background job family - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* jobFamily */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
         2: .line 82
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         3: .line 83
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.currentJob:()Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            astore 2 /* currentJob */
        start local 2 // org.eclipse.jdt.internal.core.search.processing.IJob currentJob
         4: .line 84
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.disable:()V
         5: .line 82
            aload 3
            monitorexit
         6: goto 9
        end local 2 // org.eclipse.jdt.internal.core.search.processing.IJob currentJob
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager java.lang.String top org.eclipse.jdt.internal.core.search.processing.JobManager
      StackMap stack: java.lang.Throwable
         7: aload 3
            monitorexit
         8: athrow
        start local 2 // org.eclipse.jdt.internal.core.search.processing.IJob currentJob
         9: .line 86
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager java.lang.String org.eclipse.jdt.internal.core.search.processing.IJob
      StackMap stack:
            aload 2 /* currentJob */
            ifnull 18
            aload 1 /* jobFamily */
            ifnull 10
            aload 2 /* currentJob */
            aload 1 /* jobFamily */
            invokeinterface org.eclipse.jdt.internal.core.search.processing.IJob.belongsTo:(Ljava/lang/String;)Z
            ifeq 18
        10: .line 87
      StackMap locals:
      StackMap stack:
            aload 2 /* currentJob */
            invokeinterface org.eclipse.jdt.internal.core.search.processing.IJob.cancel:()V
        11: .line 90
            goto 17
        12: .line 92
      StackMap locals:
      StackMap stack:
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 14
        13: .line 93
            new java.lang.StringBuilder
            dup
            ldc "-> waiting end of current background job - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* currentJob */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        14: .line 94
      StackMap locals:
      StackMap stack:
            ldc 50
            invokestatic java.lang.Thread.sleep:(J)V
        15: .line 95
            goto 17
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        16: pop
        17: .line 90
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
            ifnull 18
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.executing:Z
            ifne 12
        18: .line 102
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 3 /* loc */
        start local 3 // int loc
        19: .line 103
            aload 0 /* this */
            dup
            astore 4
            monitorenter
        20: .line 104
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            istore 5 /* i */
        start local 5 // int i
        21: goto 32
        22: .line 105
      StackMap locals: int org.eclipse.jdt.internal.core.search.processing.JobManager int
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            iload 5 /* i */
            aaload
            astore 2 /* currentJob */
        23: .line 106
            aload 2 /* currentJob */
            ifnull 31
        24: .line 107
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            iload 5 /* i */
            aconst_null
            aastore
        25: .line 108
            aload 1 /* jobFamily */
            ifnull 28
            aload 2 /* currentJob */
            aload 1 /* jobFamily */
            invokeinterface org.eclipse.jdt.internal.core.search.processing.IJob.belongsTo:(Ljava/lang/String;)Z
            ifne 28
        26: .line 109
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            iinc 3 /* loc */ 1
            iload 3 /* loc */
            aload 2 /* currentJob */
            aastore
        27: .line 110
            goto 31
        28: .line 111
      StackMap locals:
      StackMap stack:
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 30
        29: .line 112
            new java.lang.StringBuilder
            dup
            ldc "-> discarding background job  - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* currentJob */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        30: .line 113
      StackMap locals:
      StackMap stack:
            aload 2 /* currentJob */
            invokeinterface org.eclipse.jdt.internal.core.search.processing.IJob.cancel:()V
        31: .line 104
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        32: iload 5 /* i */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            if_icmple 22
        end local 5 // int i
        33: .line 117
            aload 0 /* this */
            iconst_0
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
        34: .line 118
            aload 0 /* this */
            iload 3 /* loc */
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
        35: .line 103
            aload 4
            monitorexit
        36: goto 42
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager java.lang.String org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.jdt.internal.core.search.processing.JobManager
      StackMap stack: java.lang.Throwable
        37: aload 4
            monitorexit
        38: athrow
        end local 3 // int loc
        end local 2 // org.eclipse.jdt.internal.core.search.processing.IJob currentJob
        39: .line 120
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager java.lang.String
      StackMap stack: java.lang.Throwable
            astore 6
        40: .line 121
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.enable:()V
        41: .line 122
            aload 6
            athrow
        42: .line 121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.enable:()V
        43: .line 123
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 45
        44: .line 124
            new java.lang.StringBuilder
            dup
            ldc "DISCARD   DONE with background job family - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* jobFamily */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        45: .line 125
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String jobFamily
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   46     0        this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;
            0   46     1   jobFamily  Ljava/lang/String;
            4    7     2  currentJob  Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            9   39     2  currentJob  Lorg/eclipse/jdt/internal/core/search/processing/IJob;
           19   39     3         loc  I
           21   33     5           i  I
      Exception table:
        from    to  target  type
           3     6       7  any
           7     8       7  any
          12    15      16  Class java.lang.InterruptedException
          20    36      37  any
          37    38      37  any
           2    39      39  any
    MethodParameters:
           Name  Flags
      jobFamily  

  public synchronized void enable();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
         0: .line 127
            aload 0 /* this */
            dup
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.enableCount:I
            iconst_1
            iadd
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.enableCount:I
         1: .line 128
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 3
         2: .line 129
            ldc "ENABLING  background indexing"
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
         3: .line 130
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.lang.Object.notifyAll:()V
         4: .line 131
            return
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;

  protected synchronized boolean isJobWaiting(org.eclipse.jdt.internal.core.search.processing.IJob);
    descriptor: (Lorg/eclipse/jdt/internal/core/search/processing/IJob;)Z
    flags: (0x0024) ACC_PROTECTED, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
        start local 1 // org.eclipse.jdt.internal.core.search.processing.IJob request
         0: .line 133
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            istore 2 /* i */
        start local 2 // int i
         1: goto 4
         2: .line 134
      StackMap locals: int
      StackMap stack:
            aload 1 /* request */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            iload 2 /* i */
            aaload
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 3
            iconst_1
            ireturn
         3: .line 133
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ -1
      StackMap locals:
      StackMap stack:
         4: iload 2 /* i */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            if_icmpgt 2
        end local 2 // int i
         5: .line 135
            iconst_0
            ireturn
        end local 1 // org.eclipse.jdt.internal.core.search.processing.IJob request
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;
            0    6     1  request  Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            1    5     2        i  I
    MethodParameters:
         Name  Flags
      request  

  protected synchronized void moveToNextJob();
    descriptor: ()V
    flags: (0x0024) ACC_PROTECTED, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
         0: .line 144
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            if_icmpgt 5
         1: .line 145
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            aload 0 /* this */
            dup
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            dup_x1
            iconst_1
            iadd
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            aconst_null
            aastore
         2: .line 146
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            if_icmple 5
         3: .line 147
            aload 0 /* this */
            iconst_0
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
         4: .line 148
            aload 0 /* this */
            iconst_m1
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
         5: .line 151
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;

  protected void notifyIdle(long);
    descriptor: (J)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=3, args_size=2
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
        start local 1 // long idlingTime
         0: .line 157
            return
        end local 1 // long idlingTime
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;
            0    1     1  idlingTime  J
    MethodParameters:
            Name  Flags
      idlingTime  

  public boolean performConcurrentJob(org.eclipse.jdt.internal.core.search.processing.IJob, int, org.eclipse.core.runtime.IProgressMonitor);
    descriptor: (Lorg/eclipse/jdt/internal/core/search/processing/IJob;ILorg/eclipse/core/runtime/IProgressMonitor;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=22, args_size=4
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
        start local 1 // org.eclipse.jdt.internal.core.search.processing.IJob searchJob
        start local 2 // int waitingPolicy
        start local 3 // org.eclipse.core.runtime.IProgressMonitor monitor
         0: .line 174
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 2
         1: .line 175
            new java.lang.StringBuilder
            dup
            ldc "STARTING  concurrent job - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* searchJob */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
         2: .line 177
      StackMap locals:
      StackMap stack:
            aload 1 /* searchJob */
            invokeinterface org.eclipse.jdt.internal.core.search.processing.IJob.ensureReadyToRun:()V
         3: .line 179
            iconst_0
            istore 4 /* status */
        start local 4 // boolean status
         4: .line 181
            aload 3 /* monitor */
            invokestatic org.eclipse.core.runtime.SubMonitor.convert:(Lorg/eclipse/core/runtime/IProgressMonitor;)Lorg/eclipse/core/runtime/SubMonitor;
            astore 5 /* subMonitor */
        start local 5 // org.eclipse.core.runtime.SubMonitor subMonitor
         5: .line 182
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobsCount:()I
            ifle 93
         6: .line 183
            iload 2 /* waitingPolicy */
            tableswitch { // 1 - 3
                    1: 7
                    2: 23
                    3: 28
              default: 93
          }
         7: .line 186
      StackMap locals: int org.eclipse.core.runtime.SubMonitor
      StackMap stack:
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 9
         8: .line 187
            new java.lang.StringBuilder
            dup
            ldc "-> NOT READY - forcing immediate - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* searchJob */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
         9: .line 189
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.disable:()V
        10: .line 190
            aload 1 /* searchJob */
            aload 5 /* subMonitor */
            invokeinterface org.eclipse.jdt.internal.core.search.processing.IJob.execute:(Lorg/eclipse/core/runtime/IProgressMonitor;)Z
            istore 4 /* status */
        11: .line 191
            goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: astore 6
        13: .line 192
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.enable:()V
        14: .line 193
            aload 6
            athrow
        15: .line 192
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.enable:()V
        16: .line 194
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 18
        17: .line 195
            new java.lang.StringBuilder
            dup
            ldc "FINISHED  concurrent job - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* searchJob */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        18: .line 196
      StackMap locals:
      StackMap stack:
            iload 4 /* status */
            istore 21
        19: .line 267
            aload 3 /* monitor */
            invokestatic org.eclipse.core.runtime.SubMonitor.done:(Lorg/eclipse/core/runtime/IProgressMonitor;)V
        20: .line 268
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 22
        21: .line 269
            new java.lang.StringBuilder
            dup
            ldc "FINISHED  concurrent job - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* searchJob */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        22: .line 196
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int org.eclipse.core.runtime.SubMonitor top top top top top top top top top top top top top top top int
      StackMap stack:
            iload 21
            ireturn
        23: .line 199
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int org.eclipse.core.runtime.SubMonitor
      StackMap stack:
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 25
        24: .line 200
            new java.lang.StringBuilder
            dup
            ldc "-> NOT READY - cancelling - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* searchJob */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        25: .line 201
      StackMap locals:
      StackMap stack:
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 27
        26: .line 202
            new java.lang.StringBuilder
            dup
            ldc "CANCELED concurrent job - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* searchJob */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        27: .line 203
      StackMap locals:
      StackMap stack:
            new org.eclipse.core.runtime.OperationCanceledException
            dup
            invokespecial org.eclipse.core.runtime.OperationCanceledException.<init>:()V
            athrow
        28: .line 206
      StackMap locals:
      StackMap stack:
            sipush 1000
            istore 6 /* totalWork */
        start local 6 // int totalWork
        29: .line 207
            aload 5 /* subMonitor */
            bipush 10
            invokevirtual org.eclipse.core.runtime.SubMonitor.setWorkRemaining:(I)Lorg/eclipse/core/runtime/SubMonitor;
            bipush 8
            invokevirtual org.eclipse.core.runtime.SubMonitor.split:(I)Lorg/eclipse/core/runtime/SubMonitor;
            iload 6 /* totalWork */
            invokevirtual org.eclipse.core.runtime.SubMonitor.setWorkRemaining:(I)Lorg/eclipse/core/runtime/SubMonitor;
            astore 7 /* waitMonitor */
        start local 7 // org.eclipse.core.runtime.SubMonitor waitMonitor
        30: .line 210
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
            astore 8 /* t */
        start local 8 // java.lang.Thread t
        31: .line 211
            aload 8 /* t */
            ifnonnull 32
            iconst_m1
            goto 33
      StackMap locals: int org.eclipse.core.runtime.SubMonitor java.lang.Thread
      StackMap stack:
        32: aload 8 /* t */
            invokevirtual java.lang.Thread.getPriority:()I
      StackMap locals:
      StackMap stack: int
        33: istore 9 /* originalPriority */
        start local 9 // int originalPriority
        34: .line 213
            aload 8 /* t */
            ifnull 36
        35: .line 214
            aload 8 /* t */
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getPriority:()I
            invokevirtual java.lang.Thread.setPriority:(I)V
        36: .line 215
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            dup
            astore 10
            monitorenter
        37: .line 216
            aload 0 /* this */
            dup
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingClients:I
            iconst_1
            iadd
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingClients:I
        38: .line 215
            aload 10
            monitorexit
        39: goto 42
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int org.eclipse.core.runtime.SubMonitor int org.eclipse.core.runtime.SubMonitor java.lang.Thread int org.eclipse.jdt.internal.core.search.processing.JobManager
      StackMap stack: java.lang.Throwable
        40: aload 10
            monitorexit
        41: athrow
        42: .line 218
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 10 /* previousJob */
        start local 10 // org.eclipse.jdt.internal.core.search.processing.IJob previousJob
        43: .line 220
            iload 6 /* totalWork */
            istore 12 /* lastJobsCount */
        start local 12 // int lastJobsCount
        44: .line 221
            fconst_0
            fstore 13 /* lastWorked */
        start local 13 // float lastWorked
        45: .line 222
            fconst_0
            fstore 14 /* totalWorked */
        start local 14 // float totalWorked
        46: .line 223
            goto 72
        start local 11 // int awaitingJobsCount
        47: .line 224
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int org.eclipse.core.runtime.SubMonitor int org.eclipse.core.runtime.SubMonitor java.lang.Thread int org.eclipse.jdt.internal.core.search.processing.IJob int int float float
      StackMap stack:
            aload 7 /* waitMonitor */
            invokevirtual org.eclipse.core.runtime.SubMonitor.isCanceled:()Z
            ifne 48
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
            ifnonnull 49
        48: .line 225
      StackMap locals:
      StackMap stack:
            new org.eclipse.core.runtime.OperationCanceledException
            dup
            invokespecial org.eclipse.core.runtime.OperationCanceledException.<init>:()V
            athrow
        49: .line 226
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.currentJob:()Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            astore 15 /* currentJob */
        start local 15 // org.eclipse.jdt.internal.core.search.processing.IJob currentJob
        50: .line 228
            aload 15 /* currentJob */
            ifnull 67
            aload 15 /* currentJob */
            aload 10 /* previousJob */
            if_acmpeq 67
        51: .line 229
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 53
        52: .line 230
            new java.lang.StringBuilder
            dup
            ldc "-> NOT READY - waiting until ready - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* searchJob */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        53: .line 231
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.IJob
      StackMap stack:
            getstatic org.eclipse.jdt.internal.core.util.Messages.jobmanager_filesToIndex:Ljava/lang/String;
            aload 15 /* currentJob */
            invokeinterface org.eclipse.jdt.internal.core.search.processing.IJob.getJobFamily:()Ljava/lang/String;
            iload 11 /* awaitingJobsCount */
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Messages.bind:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/String;
            astore 16 /* indexing */
        start local 16 // java.lang.String indexing
        54: .line 232
            aload 7 /* waitMonitor */
            aload 16 /* indexing */
            invokevirtual org.eclipse.core.runtime.SubMonitor.subTask:(Ljava/lang/String;)V
        55: .line 234
            iload 11 /* awaitingJobsCount */
            iload 6 /* totalWork */
            if_icmpge 56
            fconst_1
            goto 57
      StackMap locals: java.lang.String
      StackMap stack:
        56: iload 6 /* totalWork */
            i2f
            iload 11 /* awaitingJobsCount */
            i2f
            fdiv
      StackMap locals:
      StackMap stack: float
        57: fstore 17 /* ratio */
        start local 17 // float ratio
        58: .line 235
            iload 12 /* lastJobsCount */
            iload 11 /* awaitingJobsCount */
            if_icmple 61
        59: .line 236
            fload 14 /* totalWorked */
            iload 12 /* lastJobsCount */
            iload 11 /* awaitingJobsCount */
            isub
            i2f
            fload 17 /* ratio */
            fmul
            fadd
            fstore 14 /* totalWorked */
        60: .line 237
            goto 62
        61: .line 239
      StackMap locals: float
      StackMap stack:
            fload 14 /* totalWorked */
            fload 17 /* ratio */
            fadd
            fstore 14 /* totalWorked */
        62: .line 241
      StackMap locals:
      StackMap stack:
            fload 14 /* totalWorked */
            fload 13 /* lastWorked */
            fsub
            fconst_1
            fcmpl
            iflt 65
        63: .line 242
            aload 7 /* waitMonitor */
            fload 14 /* totalWorked */
            fload 13 /* lastWorked */
            fsub
            f2i
            invokevirtual org.eclipse.core.runtime.SubMonitor.worked:(I)V
        64: .line 243
            fload 14 /* totalWorked */
            fstore 13 /* lastWorked */
        65: .line 245
      StackMap locals:
      StackMap stack:
            iload 11 /* awaitingJobsCount */
            istore 12 /* lastJobsCount */
        66: .line 246
            aload 15 /* currentJob */
            astore 10 /* previousJob */
        end local 17 // float ratio
        end local 16 // java.lang.String indexing
        67: .line 249
      StackMap locals:
      StackMap stack:
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 69
        68: .line 250
            new java.lang.StringBuilder
            dup
            ldc "-> GOING TO SLEEP - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* searchJob */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        69: .line 251
      StackMap locals:
      StackMap stack:
            ldc 50
            invokestatic java.lang.Thread.sleep:(J)V
        70: .line 252
            goto 72
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        71: pop
        end local 15 // org.eclipse.jdt.internal.core.search.processing.IJob currentJob
        end local 11 // int awaitingJobsCount
        72: .line 223
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int org.eclipse.core.runtime.SubMonitor int org.eclipse.core.runtime.SubMonitor java.lang.Thread int org.eclipse.jdt.internal.core.search.processing.IJob top int float float
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobsCount:()I
            dup
            istore 11 /* awaitingJobsCount */
        start local 11 // int awaitingJobsCount
        73: ifgt 47
        end local 14 // float totalWorked
        end local 13 // float lastWorked
        end local 12 // int lastJobsCount
        end local 11 // int awaitingJobsCount
        end local 10 // org.eclipse.jdt.internal.core.search.processing.IJob previousJob
        74: .line 256
            goto 85
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int org.eclipse.core.runtime.SubMonitor int org.eclipse.core.runtime.SubMonitor java.lang.Thread int
      StackMap stack: java.lang.Throwable
        75: astore 18
        76: .line 257
            aload 0 /* this */
            dup
            astore 19
            monitorenter
        77: .line 258
            aload 0 /* this */
            dup
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingClients:I
            iconst_1
            isub
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingClients:I
        78: .line 257
            aload 19
            monitorexit
        79: goto 82
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int org.eclipse.core.runtime.SubMonitor int org.eclipse.core.runtime.SubMonitor java.lang.Thread int top top top top top top top top java.lang.Throwable org.eclipse.jdt.internal.core.search.processing.JobManager
      StackMap stack: java.lang.Throwable
        80: aload 19
            monitorexit
        81: athrow
        82: .line 260
      StackMap locals:
      StackMap stack:
            aload 8 /* t */
            ifnull 84
            iload 9 /* originalPriority */
            iconst_m1
            if_icmple 84
            aload 8 /* t */
            invokevirtual java.lang.Thread.isAlive:()Z
            ifeq 84
        83: .line 261
            aload 8 /* t */
            iload 9 /* originalPriority */
            invokevirtual java.lang.Thread.setPriority:(I)V
        84: .line 262
      StackMap locals:
      StackMap stack:
            aload 18
            athrow
        85: .line 257
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int org.eclipse.core.runtime.SubMonitor int org.eclipse.core.runtime.SubMonitor java.lang.Thread int
      StackMap stack:
            aload 0 /* this */
            dup
            astore 19
            monitorenter
        86: .line 258
            aload 0 /* this */
            dup
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingClients:I
            iconst_1
            isub
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingClients:I
        87: .line 257
            aload 19
            monitorexit
        88: goto 91
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int org.eclipse.core.runtime.SubMonitor int org.eclipse.core.runtime.SubMonitor java.lang.Thread int top top top top top top top top top org.eclipse.jdt.internal.core.search.processing.JobManager
      StackMap stack: java.lang.Throwable
        89: aload 19
            monitorexit
        90: athrow
        91: .line 260
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int org.eclipse.core.runtime.SubMonitor int org.eclipse.core.runtime.SubMonitor java.lang.Thread int
      StackMap stack:
            aload 8 /* t */
            ifnull 93
            iload 9 /* originalPriority */
            iconst_m1
            if_icmple 93
            aload 8 /* t */
            invokevirtual java.lang.Thread.isAlive:()Z
            ifeq 93
        92: .line 261
            aload 8 /* t */
            iload 9 /* originalPriority */
            invokevirtual java.lang.Thread.setPriority:(I)V
        end local 9 // int originalPriority
        end local 8 // java.lang.Thread t
        end local 7 // org.eclipse.core.runtime.SubMonitor waitMonitor
        end local 6 // int totalWork
        93: .line 265
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int org.eclipse.core.runtime.SubMonitor
      StackMap stack:
            aload 1 /* searchJob */
            aload 5 /* subMonitor */
            invokeinterface org.eclipse.jdt.internal.core.search.processing.IJob.execute:(Lorg/eclipse/core/runtime/IProgressMonitor;)Z
            istore 4 /* status */
        end local 5 // org.eclipse.core.runtime.SubMonitor subMonitor
        94: .line 266
            goto 100
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int
      StackMap stack: java.lang.Throwable
        95: astore 20
        96: .line 267
            aload 3 /* monitor */
            invokestatic org.eclipse.core.runtime.SubMonitor.done:(Lorg/eclipse/core/runtime/IProgressMonitor;)V
        97: .line 268
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 99
        98: .line 269
            new java.lang.StringBuilder
            dup
            ldc "FINISHED  concurrent job - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* searchJob */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        99: .line 270
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int top top top top top top top top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 20
            athrow
       100: .line 267
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager org.eclipse.jdt.internal.core.search.processing.IJob int org.eclipse.core.runtime.IProgressMonitor int
      StackMap stack:
            aload 3 /* monitor */
            invokestatic org.eclipse.core.runtime.SubMonitor.done:(Lorg/eclipse/core/runtime/IProgressMonitor;)V
       101: .line 268
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 103
       102: .line 269
            new java.lang.StringBuilder
            dup
            ldc "FINISHED  concurrent job - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* searchJob */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
       103: .line 271
      StackMap locals:
      StackMap stack:
            iload 4 /* status */
            ireturn
        end local 4 // boolean status
        end local 3 // org.eclipse.core.runtime.IProgressMonitor monitor
        end local 2 // int waitingPolicy
        end local 1 // org.eclipse.jdt.internal.core.search.processing.IJob searchJob
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0  104     0               this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;
            0  104     1          searchJob  Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            0  104     2      waitingPolicy  I
            0  104     3            monitor  Lorg/eclipse/core/runtime/IProgressMonitor;
            4  104     4             status  Z
            5   94     5         subMonitor  Lorg/eclipse/core/runtime/SubMonitor;
           29   93     6          totalWork  I
           30   93     7        waitMonitor  Lorg/eclipse/core/runtime/SubMonitor;
           31   93     8                  t  Ljava/lang/Thread;
           34   93     9   originalPriority  I
           43   74    10        previousJob  Lorg/eclipse/jdt/internal/core/search/processing/IJob;
           47   72    11  awaitingJobsCount  I
           73   74    11  awaitingJobsCount  I
           44   74    12      lastJobsCount  I
           45   74    13         lastWorked  F
           46   74    14        totalWorked  F
           50   72    15         currentJob  Lorg/eclipse/jdt/internal/core/search/processing/IJob;
           54   67    16           indexing  Ljava/lang/String;
           58   67    17              ratio  F
      Exception table:
        from    to  target  type
           9    12      12  any
          37    39      40  any
          40    41      40  any
          67    70      71  Class java.lang.InterruptedException
          34    75      75  any
          77    79      80  any
          80    81      80  any
          86    88      89  any
          89    90      89  any
           4    19      95  any
          23    95      95  any
    MethodParameters:
               Name  Flags
      searchJob      
      waitingPolicy  
      monitor        

  public abstract java.lang.String processName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public synchronized void request(org.eclipse.jdt.internal.core.search.processing.IJob);
    descriptor: (Lorg/eclipse/jdt/internal/core/search/processing/IJob;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
        start local 1 // org.eclipse.jdt.internal.core.search.processing.IJob job
         0: .line 277
            aload 1 /* job */
            invokeinterface org.eclipse.jdt.internal.core.search.processing.IJob.ensureReadyToRun:()V
         1: .line 280
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            arraylength
            istore 2 /* size */
        start local 2 // int size
         2: .line 281
            aload 0 /* this */
            dup
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            iconst_1
            iadd
            dup_x1
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            iload 2 /* size */
            if_icmpne 14
         3: .line 282
            aload 0 /* this */
            dup
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            isub
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
         4: .line 283
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            bipush 50
            if_icmpge 12
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            if_icmpge 12
         5: .line 285
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            iconst_0
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 286
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            istore 3 /* i */
        start local 3 // int i
         7: goto 10
         8: .line 287
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            iload 3 /* i */
            aconst_null
            aastore
         9: .line 286
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* i */
            iload 2 /* size */
            if_icmplt 8
        end local 3 // int i
        11: .line 288
            goto 13
        12: .line 289
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            aload 0 /* this */
            iload 2 /* size */
            iconst_2
            imul
            anewarray org.eclipse.jdt.internal.core.search.processing.IJob
            dup_x1
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            iconst_0
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        13: .line 291
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
        14: .line 293
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            aload 1 /* job */
            aastore
        15: .line 294
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 18
        16: .line 295
            new java.lang.StringBuilder
            dup
            ldc "REQUEST   background job - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* job */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        17: .line 296
            new java.lang.StringBuilder
            dup
            ldc "AWAITING JOBS count: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobsCount:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        18: .line 298
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.lang.Object.notifyAll:()V
        19: .line 299
            return
        end local 2 // int size
        end local 1 // org.eclipse.jdt.internal.core.search.processing.IJob job
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   20     0  this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;
            0   20     1   job  Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            2   20     2  size  I
            7   11     3     i  I
    MethodParameters:
      Name  Flags
      job   

  public void reset();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
         0: .line 304
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 2
         1: .line 305
            ldc "Reset"
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
         2: .line 308
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         3: .line 309
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
            astore 1 /* thread */
        start local 1 // java.lang.Thread thread
         4: .line 308
            aload 2
            monitorexit
         5: goto 8
        end local 1 // java.lang.Thread thread
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager top org.eclipse.jdt.internal.core.search.processing.JobManager
      StackMap stack: java.lang.Throwable
         6: aload 2
            monitorexit
         7: athrow
        start local 1 // java.lang.Thread thread
         8: .line 312
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager java.lang.Thread
      StackMap stack:
            aload 1 /* thread */
            ifnull 11
         9: .line 313
            aload 0 /* this */
            aconst_null
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.discardJobs:(Ljava/lang/String;)V
        10: .line 314
            goto 21
        11: .line 315
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 2
            monitorenter
        12: .line 317
            aload 0 /* this */
            new java.lang.Thread
            dup
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.processName:()Ljava/lang/String;
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;Ljava/lang/String;)V
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
        13: .line 318
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
            iconst_1
            invokevirtual java.lang.Thread.setDaemon:(Z)V
        14: .line 320
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
            iconst_4
            invokevirtual java.lang.Thread.setPriority:(I)V
        15: .line 323
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            invokevirtual java.lang.Thread.setContextClassLoader:(Ljava/lang/ClassLoader;)V
        16: .line 324
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.start:()V
        17: .line 315
            aload 2
            monitorexit
        18: goto 21
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager java.lang.Thread org.eclipse.jdt.internal.core.search.processing.JobManager
      StackMap stack: java.lang.Throwable
        19: aload 2
            monitorexit
        20: athrow
        21: .line 327
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Thread thread
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   22     0    this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;
            4    6     1  thread  Ljava/lang/Thread;
            8   22     1  thread  Ljava/lang/Thread;
      Exception table:
        from    to  target  type
           3     5       6  any
           6     7       6  any
          12    18      19  any
          19    20      19  any

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=1
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
         0: .line 334
            ldc -1
            lstore 1 /* idlingStart */
        start local 1 // long idlingStart
         1: .line 335
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.activateProcessing:()V
         2: .line 360
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.progressJob:Lorg/eclipse/core/runtime/jobs/Job;
         3: .line 361
            goto 57
         4: .line 364
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         5: .line 366
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
            ifnonnull 7
            aload 4
            monitorexit
         6: goto 57
         7: .line 369
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager long top org.eclipse.jdt.internal.core.search.processing.JobManager
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.currentJob:()Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            dup
            astore 3 /* job */
        start local 3 // org.eclipse.jdt.internal.core.search.processing.IJob job
         8: ifnonnull 17
         9: .line 370
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.progressJob:Lorg/eclipse/core/runtime/jobs/Job;
            ifnull 12
        10: .line 371
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.progressJob:Lorg/eclipse/core/runtime/jobs/Job;
            invokevirtual org.eclipse.core.runtime.jobs.Job.cancel:()Z
            pop
        11: .line 372
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.progressJob:Lorg/eclipse/core/runtime/jobs/Job;
        12: .line 374
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager long org.eclipse.jdt.internal.core.search.processing.IJob org.eclipse.jdt.internal.core.search.processing.JobManager
      StackMap stack:
            lload 1 /* idlingStart */
            lconst_0
            lcmp
            ifge 14
        13: .line 375
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 1 /* idlingStart */
            goto 15
        14: .line 377
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic java.lang.System.currentTimeMillis:()J
            lload 1 /* idlingStart */
            lsub
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.notifyIdle:(J)V
        15: .line 378
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.lang.Object.wait:()V
        16: .line 379
            goto 18
        17: .line 380
      StackMap locals:
      StackMap stack:
            ldc -1
            lstore 1 /* idlingStart */
        18: .line 364
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        19: goto 22
        end local 3 // org.eclipse.jdt.internal.core.search.processing.IJob job
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager long top org.eclipse.jdt.internal.core.search.processing.JobManager
      StackMap stack: java.lang.Throwable
        20: aload 4
            monitorexit
        21: athrow
        start local 3 // org.eclipse.jdt.internal.core.search.processing.IJob job
        22: .line 383
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager long org.eclipse.jdt.internal.core.search.processing.IJob
      StackMap stack:
            aload 3 /* job */
            ifnonnull 26
        23: .line 384
            aload 0 /* this */
            invokestatic java.lang.System.currentTimeMillis:()J
            lload 1 /* idlingStart */
            lsub
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.notifyIdle:(J)V
        24: .line 386
            ldc 500
            invokestatic java.lang.Thread.sleep:(J)V
        25: .line 387
            goto 57
        26: .line 389
      StackMap locals:
      StackMap stack:
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 29
        27: .line 390
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobsCount:()I
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " awaiting jobs"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        28: .line 391
            new java.lang.StringBuilder
            dup
            ldc "STARTING background job - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* job */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        29: .line 394
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.executing:Z
        30: .line 395
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.progressJob:Lorg/eclipse/core/runtime/jobs/Job;
            ifnonnull 35
        31: .line 396
            aload 0 /* this */
            new org.eclipse.jdt.internal.core.search.processing.JobManager$1ProgressJob
            dup
            aload 0 /* this */
            getstatic org.eclipse.jdt.internal.core.util.Messages.jobmanager_indexing:Ljava/lang/String;
            ldc ""
            ldc ""
            invokestatic org.eclipse.jdt.internal.core.util.Messages.bind:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.eclipse.jdt.internal.core.search.processing.JobManager$1ProgressJob.<init>:(Lorg/eclipse/jdt/internal/core/search/processing/JobManager;Ljava/lang/String;)V
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.progressJob:Lorg/eclipse/core/runtime/jobs/Job;
        32: .line 397
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.progressJob:Lorg/eclipse/core/runtime/jobs/Job;
            bipush 30
            invokevirtual org.eclipse.core.runtime.jobs.Job.setPriority:(I)V
        33: .line 398
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.progressJob:Lorg/eclipse/core/runtime/jobs/Job;
            iconst_1
            invokevirtual org.eclipse.core.runtime.jobs.Job.setSystem:(Z)V
        34: .line 399
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.progressJob:Lorg/eclipse/core/runtime/jobs/Job;
            invokevirtual org.eclipse.core.runtime.jobs.Job.schedule:()V
        35: .line 401
      StackMap locals:
      StackMap stack:
            aload 3 /* job */
            aconst_null
            invokeinterface org.eclipse.jdt.internal.core.search.processing.IJob.execute:(Lorg/eclipse/core/runtime/IProgressMonitor;)Z
            pop
        36: .line 403
            goto 47
      StackMap locals:
      StackMap stack: java.lang.Throwable
        37: astore 4
        38: .line 404
            aload 0 /* this */
            iconst_0
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.executing:Z
        39: .line 405
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 41
        40: .line 406
            new java.lang.StringBuilder
            dup
            ldc "FINISHED background job - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* job */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        41: .line 407
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.moveToNextJob:()V
        42: .line 408
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingClients:I
            ifne 46
            aload 3 /* job */
            invokeinterface org.eclipse.jdt.internal.core.search.processing.IJob.waitNeeded:()Z
            ifeq 46
        43: .line 409
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 45
        44: .line 410
            new java.lang.StringBuilder
            dup
            ldc "WAITING after job - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* job */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        45: .line 412
      StackMap locals:
      StackMap stack:
            ldc 5
            invokestatic java.lang.Thread.sleep:(J)V
        46: .line 414
      StackMap locals:
      StackMap stack:
            aload 4
            athrow
        47: .line 404
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.executing:Z
        48: .line 405
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 50
        49: .line 406
            new java.lang.StringBuilder
            dup
            ldc "FINISHED background job - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* job */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        50: .line 407
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.moveToNextJob:()V
        51: .line 408
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingClients:I
            ifne 57
            aload 3 /* job */
            invokeinterface org.eclipse.jdt.internal.core.search.processing.IJob.waitNeeded:()Z
            ifeq 57
        52: .line 409
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 54
        53: .line 410
            new java.lang.StringBuilder
            dup
            ldc "WAITING after job - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* job */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
        54: .line 412
      StackMap locals:
      StackMap stack:
            ldc 5
            invokestatic java.lang.Thread.sleep:(J)V
        end local 3 // org.eclipse.jdt.internal.core.search.processing.IJob job
        55: .line 415
            goto 57
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager long
      StackMap stack: java.lang.InterruptedException
        56: pop
        57: .line 361
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
            ifnonnull 4
        58: .line 418
            goto 73
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
        59: astore 3 /* e */
        start local 3 // java.lang.RuntimeException e
        60: .line 419
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
            ifnull 65
        61: .line 421
            aload 3 /* e */
            ldc "Background Indexer Crash Recovery"
            invokestatic org.eclipse.jdt.internal.core.util.Util.log:(Ljava/lang/Throwable;Ljava/lang/String;)V
        62: .line 424
            aload 0 /* this */
            aconst_null
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.discardJobs:(Ljava/lang/String;)V
        63: .line 425
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
        64: .line 426
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.reset:()V
        65: .line 428
      StackMap locals: java.lang.RuntimeException
      StackMap stack:
            aload 3 /* e */
            athrow
        end local 3 // java.lang.RuntimeException e
        66: .line 429
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager long
      StackMap stack: java.lang.Error
            astore 3 /* e */
        start local 3 // java.lang.Error e
        67: .line 430
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
            ifnull 72
            aload 3 /* e */
            instanceof java.lang.ThreadDeath
            ifne 72
        68: .line 432
            aload 3 /* e */
            ldc "Background Indexer Crash Recovery"
            invokestatic org.eclipse.jdt.internal.core.util.Util.log:(Ljava/lang/Throwable;Ljava/lang/String;)V
        69: .line 435
            aload 0 /* this */
            aconst_null
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.discardJobs:(Ljava/lang/String;)V
        70: .line 436
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
        71: .line 437
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.reset:()V
        72: .line 439
      StackMap locals: java.lang.Error
      StackMap stack:
            aload 3 /* e */
            athrow
        end local 3 // java.lang.Error e
        73: .line 441
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long idlingStart
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   74     0         this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;
            1   74     1  idlingStart  J
            8   20     3          job  Lorg/eclipse/jdt/internal/core/search/processing/IJob;
           22   55     3          job  Lorg/eclipse/jdt/internal/core/search/processing/IJob;
           60   66     3            e  Ljava/lang/RuntimeException;
           67   73     3            e  Ljava/lang/Error;
      Exception table:
        from    to  target  type
           5     6      20  any
           7    19      20  any
          20    21      20  any
          29    37      37  any
           4     6      56  Class java.lang.InterruptedException
           7    25      56  Class java.lang.InterruptedException
          26    55      56  Class java.lang.InterruptedException
           2    58      59  Class java.lang.RuntimeException
           2    58      66  Class java.lang.Error

  public void shutdown();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
         0: .line 447
            getstatic org.eclipse.jdt.internal.core.search.processing.JobManager.VERBOSE:Z
            ifeq 2
         1: .line 448
            ldc "Shutdown"
            invokestatic org.eclipse.jdt.internal.core.util.Util.verbose:(Ljava/lang/String;)V
         2: .line 450
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.disable:()V
         3: .line 451
            aload 0 /* this */
            aconst_null
            invokevirtual org.eclipse.jdt.internal.core.search.processing.JobManager.discardJobs:(Ljava/lang/String;)V
         4: .line 452
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
            astore 1 /* thread */
        start local 1 // java.lang.Thread thread
         5: .line 454
            aload 1 /* thread */
            ifnull 14
         6: .line 455
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         7: .line 456
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jdt.internal.core.search.processing.JobManager.processingThread:Ljava/lang/Thread;
         8: .line 457
            aload 0 /* this */
            invokevirtual java.lang.Object.notifyAll:()V
         9: .line 455
            aload 2
            monitorexit
        10: goto 13
      StackMap locals: org.eclipse.jdt.internal.core.search.processing.JobManager java.lang.Thread org.eclipse.jdt.internal.core.search.processing.JobManager
      StackMap stack: java.lang.Throwable
        11: aload 2
            monitorexit
        12: athrow
        13: .line 460
      StackMap locals:
      StackMap stack:
            aload 1 /* thread */
            invokevirtual java.lang.Thread.join:()V
        14: .line 462
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.progressJob:Lorg/eclipse/core/runtime/jobs/Job;
            astore 2 /* job */
        start local 2 // org.eclipse.core.runtime.jobs.Job job
        15: .line 463
            aload 2 /* job */
            ifnull 20
        16: .line 464
            aload 2 /* job */
            invokevirtual org.eclipse.core.runtime.jobs.Job.cancel:()Z
            pop
        17: .line 465
            aload 2 /* job */
            invokevirtual org.eclipse.core.runtime.jobs.Job.join:()V
        end local 2 // org.eclipse.core.runtime.jobs.Job job
        18: .line 467
            goto 20
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        19: pop
        20: .line 470
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Thread thread
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   21     0    this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;
            5   21     1  thread  Ljava/lang/Thread;
           15   18     2     job  Lorg/eclipse/core/runtime/jobs/Job;
      Exception table:
        from    to  target  type
           7    10      11  any
          11    12      11  any
           5    18      19  Class java.lang.InterruptedException

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
         0: .line 473
            new java.lang.StringBuffer
            dup
            bipush 10
            invokespecial java.lang.StringBuffer.<init>:(I)V
            astore 1 /* buffer */
        start local 1 // java.lang.StringBuffer buffer
         1: .line 474
            aload 1 /* buffer */
            ldc "Enable count:"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.enableCount:I
            invokevirtual java.lang.StringBuffer.append:(I)Ljava/lang/StringBuffer;
            bipush 10
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
         2: .line 475
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobEnd:I
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            isub
            iconst_1
            iadd
            istore 2 /* numJobs */
        start local 2 // int numJobs
         3: .line 476
            aload 1 /* buffer */
            ldc "Jobs in queue:"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            iload 2 /* numJobs */
            invokevirtual java.lang.StringBuffer.append:(I)Ljava/lang/StringBuffer;
            bipush 10
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
         4: .line 477
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         5: goto 8
         6: .line 478
      StackMap locals: java.lang.StringBuffer int int
      StackMap stack:
            aload 1 /* buffer */
            iload 3 /* i */
            invokevirtual java.lang.StringBuffer.append:(I)Ljava/lang/StringBuffer;
            new java.lang.StringBuilder
            dup
            ldc " - job["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "]: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.awaitingJobs:[Lorg/eclipse/jdt/internal/core/search/processing/IJob;
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.processing.JobManager.jobStart:I
            iload 3 /* i */
            iadd
            aaload
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/Object;)Ljava/lang/StringBuffer;
            bipush 10
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
         7: .line 477
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 3 /* i */
            iload 2 /* numJobs */
            if_icmpge 9
            iload 3 /* i */
            bipush 15
            if_icmplt 6
        end local 3 // int i
         9: .line 480
      StackMap locals:
      StackMap stack:
            aload 1 /* buffer */
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            areturn
        end local 2 // int numJobs
        end local 1 // java.lang.StringBuffer buffer
        end local 0 // org.eclipse.jdt.internal.core.search.processing.JobManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Lorg/eclipse/jdt/internal/core/search/processing/JobManager;
            1   10     1   buffer  Ljava/lang/StringBuffer;
            3   10     2  numJobs  I
            5    9     3        i  I
}
SourceFile: "JobManager.java"
NestMembers:
  org.eclipse.jdt.internal.core.search.processing.JobManager$1ProgressJob
InnerClasses:
  ProgressJob = org.eclipse.jdt.internal.core.search.processing.JobManager$1ProgressJob