final class com.google.common.util.concurrent.AbstractService$StateSnapshot
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.google.common.util.concurrent.AbstractService$StateSnapshot
  super_class: java.lang.Object
{
  final com.google.common.util.concurrent.Service$State state;
    descriptor: Lcom/google/common/util/concurrent/Service$State;
    flags: (0x0010) ACC_FINAL

  final boolean shutdownWhenStartupFinishes;
    descriptor: Z
    flags: (0x0010) ACC_FINAL

  final java.lang.Throwable failure;
    descriptor: Ljava/lang/Throwable;
    flags: (0x0010) ACC_FINAL
    RuntimeVisibleTypeAnnotations: 
      FIELD
        org.checkerframework.checker.nullness.qual.Nullable()

  void <init>(com.google.common.util.concurrent.Service$State);
    descriptor: (Lcom/google/common/util/concurrent/Service$State;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.google.common.util.concurrent.AbstractService$StateSnapshot this
        start local 1 // com.google.common.util.concurrent.Service$State internalState
         0: .line 557
            aload 0 /* this */
            aload 1 /* internalState */
            iconst_0
            aconst_null
            invokespecial com.google.common.util.concurrent.AbstractService$StateSnapshot.<init>:(Lcom/google/common/util/concurrent/Service$State;ZLjava/lang/Throwable;)V
         1: .line 558
            return
        end local 1 // com.google.common.util.concurrent.Service$State internalState
        end local 0 // com.google.common.util.concurrent.AbstractService$StateSnapshot this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lcom/google/common/util/concurrent/AbstractService$StateSnapshot;
            0    2     1  internalState  Lcom/google/common/util/concurrent/Service$State;
    MethodParameters:
               Name  Flags
      internalState  

  void <init>(com.google.common.util.concurrent.Service$State, boolean, java.lang.Throwable);
    descriptor: (Lcom/google/common/util/concurrent/Service$State;ZLjava/lang/Throwable;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.google.common.util.concurrent.AbstractService$StateSnapshot this
        start local 1 // com.google.common.util.concurrent.Service$State internalState
        start local 2 // boolean shutdownWhenStartupFinishes
        start local 3 // java.lang.Throwable failure
         0: .line 560
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 563
            iload 2 /* shutdownWhenStartupFinishes */
            ifeq 2
            aload 1 /* internalState */
            getstatic com.google.common.util.concurrent.Service$State.STARTING:Lcom/google/common/util/concurrent/Service$State;
            if_acmpeq 2
            iconst_0
            goto 3
      StackMap locals: com.google.common.util.concurrent.AbstractService$StateSnapshot com.google.common.util.concurrent.Service$State int java.lang.Throwable
      StackMap stack:
         2: iconst_1
         3: .line 564
      StackMap locals:
      StackMap stack: int
            ldc "shutdownWhenStartupFinishes can only be set if state is STARTING. Got %s instead."
         4: .line 565
            aload 1 /* internalState */
         5: .line 562
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;)V
         6: .line 567
            aload 3 /* failure */
            ifnull 7
            iconst_1
            goto 8
      StackMap locals:
      StackMap stack:
         7: iconst_0
      StackMap locals:
      StackMap stack: int
         8: aload 1 /* internalState */
            getstatic com.google.common.util.concurrent.Service$State.FAILED:Lcom/google/common/util/concurrent/Service$State;
            if_acmpne 9
            iconst_1
            goto 10
      StackMap locals:
      StackMap stack: int
         9: iconst_0
      StackMap locals: com.google.common.util.concurrent.AbstractService$StateSnapshot com.google.common.util.concurrent.Service$State int java.lang.Throwable
      StackMap stack: int int
        10: ixor
            ifeq 11
            iconst_0
            goto 12
      StackMap locals:
      StackMap stack:
        11: iconst_1
        12: .line 568
      StackMap locals:
      StackMap stack: int
            ldc "A failure cause should be set if and only if the state is failed.  Got %s and %s instead."
        13: .line 570
            aload 1 /* internalState */
        14: .line 571
            aload 3 /* failure */
        15: .line 566
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        16: .line 572
            aload 0 /* this */
            aload 1 /* internalState */
            putfield com.google.common.util.concurrent.AbstractService$StateSnapshot.state:Lcom/google/common/util/concurrent/Service$State;
        17: .line 573
            aload 0 /* this */
            iload 2 /* shutdownWhenStartupFinishes */
            putfield com.google.common.util.concurrent.AbstractService$StateSnapshot.shutdownWhenStartupFinishes:Z
        18: .line 574
            aload 0 /* this */
            aload 3 /* failure */
            putfield com.google.common.util.concurrent.AbstractService$StateSnapshot.failure:Ljava/lang/Throwable;
        19: .line 575
            return
        end local 3 // java.lang.Throwable failure
        end local 2 // boolean shutdownWhenStartupFinishes
        end local 1 // com.google.common.util.concurrent.Service$State internalState
        end local 0 // com.google.common.util.concurrent.AbstractService$StateSnapshot this
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0   20     0                         this  Lcom/google/common/util/concurrent/AbstractService$StateSnapshot;
            0   20     1                internalState  Lcom/google/common/util/concurrent/Service$State;
            0   20     2  shutdownWhenStartupFinishes  Z
            0   20     3                      failure  Ljava/lang/Throwable;
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER
        org.checkerframework.checker.nullness.qual.Nullable()
    MethodParameters:
                             Name  Flags
      internalState                
      shutdownWhenStartupFinishes  
      failure                      

  com.google.common.util.concurrent.Service$State externalState();
    descriptor: ()Lcom/google/common/util/concurrent/Service$State;
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.AbstractService$StateSnapshot this
         0: .line 579
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractService$StateSnapshot.shutdownWhenStartupFinishes:Z
            ifeq 2
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractService$StateSnapshot.state:Lcom/google/common/util/concurrent/Service$State;
            getstatic com.google.common.util.concurrent.Service$State.STARTING:Lcom/google/common/util/concurrent/Service$State;
            if_acmpne 2
         1: .line 580
            getstatic com.google.common.util.concurrent.Service$State.STOPPING:Lcom/google/common/util/concurrent/Service$State;
            areturn
         2: .line 582
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractService$StateSnapshot.state:Lcom/google/common/util/concurrent/Service$State;
            areturn
        end local 0 // com.google.common.util.concurrent.AbstractService$StateSnapshot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/google/common/util/concurrent/AbstractService$StateSnapshot;

  java.lang.Throwable failureCause();
    descriptor: ()Ljava/lang/Throwable;
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.AbstractService$StateSnapshot this
         0: .line 589
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractService$StateSnapshot.state:Lcom/google/common/util/concurrent/Service$State;
            getstatic com.google.common.util.concurrent.Service$State.FAILED:Lcom/google/common/util/concurrent/Service$State;
            if_acmpne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
         2: .line 590
      StackMap locals:
      StackMap stack: int
            ldc "failureCause() is only valid if the service has failed, service is %s"
         3: .line 591
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractService$StateSnapshot.state:Lcom/google/common/util/concurrent/Service$State;
         4: .line 588
            invokestatic com.google.common.base.Preconditions.checkState:(ZLjava/lang/String;Ljava/lang/Object;)V
         5: .line 592
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractService$StateSnapshot.failure:Ljava/lang/Throwable;
            areturn
        end local 0 // com.google.common.util.concurrent.AbstractService$StateSnapshot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/google/common/util/concurrent/AbstractService$StateSnapshot;
}
SourceFile: "AbstractService.java"
NestHost: com.google.common.util.concurrent.AbstractService
InnerClasses:
  private final StateSnapshot = com.google.common.util.concurrent.AbstractService$StateSnapshot of com.google.common.util.concurrent.AbstractService
  public abstract State = com.google.common.util.concurrent.Service$State of com.google.common.util.concurrent.Service