class android.app.job.JobServiceEngine$JobHandler extends android.os.Handler
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: android.app.job.JobServiceEngine$JobHandler
  super_class: android.os.Handler
{
  final android.app.job.JobServiceEngine this$0;
    descriptor: Landroid/app/job/JobServiceEngine;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(android.app.job.JobServiceEngine, android.os.Looper);
    descriptor: (Landroid/app/job/JobServiceEngine;Landroid/os/Looper;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // android.app.job.JobServiceEngine$JobHandler this
        start local 2 // android.os.Looper looper
         0: .line 98
            aload 0 /* this */
            aload 1
            putfield android.app.job.JobServiceEngine$JobHandler.this$0:Landroid/app/job/JobServiceEngine;
         1: .line 99
            aload 0 /* this */
            aload 2 /* looper */
            invokespecial android.os.Handler.<init>:(Landroid/os/Looper;)V
         2: .line 100
            return
        end local 2 // android.os.Looper looper
        end local 0 // android.app.job.JobServiceEngine$JobHandler this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Landroid/app/job/JobServiceEngine$JobHandler;
            0    3     2  looper  Landroid/os/Looper;
    MethodParameters:
        Name  Flags
      this$0  final
      looper  

  public void handleMessage(android.os.Message);
    descriptor: (Landroid/os/Message;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // android.app.job.JobServiceEngine$JobHandler this
        start local 1 // android.os.Message msg
         0: .line 104
            aload 1 /* msg */
            getfield android.os.Message.obj:Ljava/lang/Object;
            checkcast android.app.job.JobParameters
            astore 2 /* params */
        start local 2 // android.app.job.JobParameters params
         1: .line 105
            aload 1 /* msg */
            getfield android.os.Message.what:I
            tableswitch { // 0 - 2
                    0: 2
                    1: 8
                    2: 14
              default: 26
          }
         2: .line 108
      StackMap locals: android.app.job.JobParameters
      StackMap stack:
            aload 0 /* this */
            getfield android.app.job.JobServiceEngine$JobHandler.this$0:Landroid/app/job/JobServiceEngine;
            aload 2 /* params */
            invokevirtual android.app.job.JobServiceEngine.onStartJob:(Landroid/app/job/JobParameters;)Z
            istore 3 /* workOngoing */
        start local 3 // boolean workOngoing
         3: .line 109
            aload 0 /* this */
            aload 2 /* params */
            iload 3 /* workOngoing */
            invokevirtual android.app.job.JobServiceEngine$JobHandler.ackStartMessage:(Landroid/app/job/JobParameters;Z)V
        end local 3 // boolean workOngoing
         4: .line 110
            goto 27
      StackMap locals:
      StackMap stack: java.lang.Exception
         5: astore 3 /* e */
        start local 3 // java.lang.Exception e
         6: .line 111
            ldc "JobServiceEngine"
            new java.lang.StringBuilder
            dup
            ldc "Error while executing job: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* params */
            invokevirtual android.app.job.JobParameters.getJobId:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         7: .line 112
            new java.lang.RuntimeException
            dup
            aload 3 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Exception e
         8: .line 117
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.app.job.JobServiceEngine$JobHandler.this$0:Landroid/app/job/JobServiceEngine;
            aload 2 /* params */
            invokevirtual android.app.job.JobServiceEngine.onStopJob:(Landroid/app/job/JobParameters;)Z
            istore 3 /* ret */
        start local 3 // boolean ret
         9: .line 118
            aload 0 /* this */
            aload 2 /* params */
            iload 3 /* ret */
            invokevirtual android.app.job.JobServiceEngine$JobHandler.ackStopMessage:(Landroid/app/job/JobParameters;Z)V
        end local 3 // boolean ret
        10: .line 119
            goto 27
      StackMap locals:
      StackMap stack: java.lang.Exception
        11: astore 3 /* e */
        start local 3 // java.lang.Exception e
        12: .line 120
            ldc "JobServiceEngine"
            ldc "Application unable to handle onStopJob."
            aload 3 /* e */
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        13: .line 121
            new java.lang.RuntimeException
            dup
            aload 3 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Exception e
        14: .line 125
      StackMap locals:
      StackMap stack:
            aload 1 /* msg */
            getfield android.os.Message.arg2:I
            iconst_1
            if_icmpne 15
            iconst_1
            goto 16
      StackMap locals:
      StackMap stack:
        15: iconst_0
      StackMap locals:
      StackMap stack: int
        16: istore 3 /* needsReschedule */
        start local 3 // boolean needsReschedule
        17: .line 126
            aload 2 /* params */
            invokevirtual android.app.job.JobParameters.getCallback:()Landroid/app/job/IJobCallback;
            astore 4 /* callback */
        start local 4 // android.app.job.IJobCallback callback
        18: .line 127
            aload 4 /* callback */
            ifnull 24
        19: .line 129
            aload 4 /* callback */
            aload 2 /* params */
            invokevirtual android.app.job.JobParameters.getJobId:()I
            iload 3 /* needsReschedule */
            invokeinterface android.app.job.IJobCallback.jobFinished:(IZ)V
        20: .line 130
            goto 27
      StackMap locals: android.app.job.JobServiceEngine$JobHandler android.os.Message android.app.job.JobParameters int android.app.job.IJobCallback
      StackMap stack: android.os.RemoteException
        21: pop
        22: .line 131
            ldc "JobServiceEngine"
            ldc "Error reporting job finish to system: binder has goneaway."
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        23: .line 134
            goto 27
        24: .line 135
      StackMap locals:
      StackMap stack:
            ldc "JobServiceEngine"
            ldc "finishJob() called for a nonexistent job id."
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        25: .line 137
            goto 27
        end local 4 // android.app.job.IJobCallback callback
        end local 3 // boolean needsReschedule
        26: .line 139
      StackMap locals:
      StackMap stack:
            ldc "JobServiceEngine"
            ldc "Unrecognised message received."
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        27: .line 142
      StackMap locals:
      StackMap stack:
            return
        end local 2 // android.app.job.JobParameters params
        end local 1 // android.os.Message msg
        end local 0 // android.app.job.JobServiceEngine$JobHandler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   28     0             this  Landroid/app/job/JobServiceEngine$JobHandler;
            0   28     1              msg  Landroid/os/Message;
            1   28     2           params  Landroid/app/job/JobParameters;
            3    4     3      workOngoing  Z
            6    8     3                e  Ljava/lang/Exception;
            9   10     3              ret  Z
           12   14     3                e  Ljava/lang/Exception;
           17   26     3  needsReschedule  Z
           18   26     4         callback  Landroid/app/job/IJobCallback;
      Exception table:
        from    to  target  type
           2     4       5  Class java.lang.Exception
           8    10      11  Class java.lang.Exception
          19    20      21  Class android.os.RemoteException
    MethodParameters:
      Name  Flags
      msg   

  private void ackStartMessage(android.app.job.JobParameters, boolean);
    descriptor: (Landroid/app/job/JobParameters;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // android.app.job.JobServiceEngine$JobHandler this
        start local 1 // android.app.job.JobParameters params
        start local 2 // boolean workOngoing
         0: .line 145
            aload 1 /* params */
            invokevirtual android.app.job.JobParameters.getCallback:()Landroid/app/job/IJobCallback;
            astore 3 /* callback */
        start local 3 // android.app.job.IJobCallback callback
         1: .line 146
            aload 1 /* params */
            invokevirtual android.app.job.JobParameters.getJobId:()I
            istore 4 /* jobId */
        start local 4 // int jobId
         2: .line 147
            aload 3 /* callback */
            ifnull 8
         3: .line 149
            aload 3 /* callback */
            iload 4 /* jobId */
            iload 2 /* workOngoing */
            invokeinterface android.app.job.IJobCallback.acknowledgeStartMessage:(IZ)V
         4: .line 150
            goto 10
      StackMap locals: android.app.job.JobServiceEngine$JobHandler android.app.job.JobParameters int android.app.job.IJobCallback int
      StackMap stack: android.os.RemoteException
         5: pop
         6: .line 151
            ldc "JobServiceEngine"
            ldc "System unreachable for starting job."
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         7: .line 153
            goto 10
         8: .line 154
      StackMap locals:
      StackMap stack:
            ldc "JobServiceEngine"
            iconst_3
            invokestatic android.util.Log.isLoggable:(Ljava/lang/String;I)Z
            ifeq 10
         9: .line 155
            ldc "JobServiceEngine"
            ldc "Attempting to ack a job that has already been processed."
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        10: .line 158
      StackMap locals:
      StackMap stack:
            return
        end local 4 // int jobId
        end local 3 // android.app.job.IJobCallback callback
        end local 2 // boolean workOngoing
        end local 1 // android.app.job.JobParameters params
        end local 0 // android.app.job.JobServiceEngine$JobHandler this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0         this  Landroid/app/job/JobServiceEngine$JobHandler;
            0   11     1       params  Landroid/app/job/JobParameters;
            0   11     2  workOngoing  Z
            1   11     3     callback  Landroid/app/job/IJobCallback;
            2   11     4        jobId  I
      Exception table:
        from    to  target  type
           3     4       5  Class android.os.RemoteException
    MethodParameters:
             Name  Flags
      params       
      workOngoing  

  private void ackStopMessage(android.app.job.JobParameters, boolean);
    descriptor: (Landroid/app/job/JobParameters;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // android.app.job.JobServiceEngine$JobHandler this
        start local 1 // android.app.job.JobParameters params
        start local 2 // boolean reschedule
         0: .line 161
            aload 1 /* params */
            invokevirtual android.app.job.JobParameters.getCallback:()Landroid/app/job/IJobCallback;
            astore 3 /* callback */
        start local 3 // android.app.job.IJobCallback callback
         1: .line 162
            aload 1 /* params */
            invokevirtual android.app.job.JobParameters.getJobId:()I
            istore 4 /* jobId */
        start local 4 // int jobId
         2: .line 163
            aload 3 /* callback */
            ifnull 8
         3: .line 165
            aload 3 /* callback */
            iload 4 /* jobId */
            iload 2 /* reschedule */
            invokeinterface android.app.job.IJobCallback.acknowledgeStopMessage:(IZ)V
         4: .line 166
            goto 10
      StackMap locals: android.app.job.JobServiceEngine$JobHandler android.app.job.JobParameters int android.app.job.IJobCallback int
      StackMap stack: android.os.RemoteException
         5: pop
         6: .line 167
            ldc "JobServiceEngine"
            ldc "System unreachable for stopping job."
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         7: .line 169
            goto 10
         8: .line 170
      StackMap locals:
      StackMap stack:
            ldc "JobServiceEngine"
            iconst_3
            invokestatic android.util.Log.isLoggable:(Ljava/lang/String;I)Z
            ifeq 10
         9: .line 171
            ldc "JobServiceEngine"
            ldc "Attempting to ack a job that has already been processed."
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        10: .line 174
      StackMap locals:
      StackMap stack:
            return
        end local 4 // int jobId
        end local 3 // android.app.job.IJobCallback callback
        end local 2 // boolean reschedule
        end local 1 // android.app.job.JobParameters params
        end local 0 // android.app.job.JobServiceEngine$JobHandler this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Landroid/app/job/JobServiceEngine$JobHandler;
            0   11     1      params  Landroid/app/job/JobParameters;
            0   11     2  reschedule  Z
            1   11     3    callback  Landroid/app/job/IJobCallback;
            2   11     4       jobId  I
      Exception table:
        from    to  target  type
           3     4       5  Class android.os.RemoteException
    MethodParameters:
            Name  Flags
      params      
      reschedule  
}
SourceFile: "JobServiceEngine.java"
NestHost: android.app.job.JobServiceEngine
InnerClasses:
  JobHandler = android.app.job.JobServiceEngine$JobHandler of android.app.job.JobServiceEngine