public final class com.google.common.util.concurrent.ServiceManager
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.google.common.util.concurrent.ServiceManager
  super_class: java.lang.Object
{
  private static final java.util.logging.Logger logger;
    descriptor: Ljava/util/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final com.google.common.util.concurrent.ListenerCallQueue$Event<com.google.common.util.concurrent.ServiceManager$Listener> HEALTHY_EVENT;
    descriptor: Lcom/google/common/util/concurrent/ListenerCallQueue$Event;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lcom/google/common/util/concurrent/ListenerCallQueue$Event<Lcom/google/common/util/concurrent/ServiceManager$Listener;>;

  private static final com.google.common.util.concurrent.ListenerCallQueue$Event<com.google.common.util.concurrent.ServiceManager$Listener> STOPPED_EVENT;
    descriptor: Lcom/google/common/util/concurrent/ListenerCallQueue$Event;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lcom/google/common/util/concurrent/ListenerCallQueue$Event<Lcom/google/common/util/concurrent/ServiceManager$Listener;>;

  private final com.google.common.util.concurrent.ServiceManager$ServiceManagerState state;
    descriptor: Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.google.common.collect.ImmutableList<com.google.common.util.concurrent.Service> services;
    descriptor: Lcom/google/common/collect/ImmutableList;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/google/common/collect/ImmutableList<Lcom/google/common/util/concurrent/Service;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 125
            ldc Lcom/google/common/util/concurrent/ServiceManager;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.util.logging.Logger.getLogger:(Ljava/lang/String;)Ljava/util/logging/Logger;
            putstatic com.google.common.util.concurrent.ServiceManager.logger:Ljava/util/logging/Logger;
         1: .line 127
            new com.google.common.util.concurrent.ServiceManager$1
            dup
            invokespecial com.google.common.util.concurrent.ServiceManager$1.<init>:()V
         2: .line 126
            putstatic com.google.common.util.concurrent.ServiceManager.HEALTHY_EVENT:Lcom/google/common/util/concurrent/ListenerCallQueue$Event;
         3: .line 139
            new com.google.common.util.concurrent.ServiceManager$2
            dup
            invokespecial com.google.common.util.concurrent.ServiceManager$2.<init>:()V
         4: .line 138
            putstatic com.google.common.util.concurrent.ServiceManager.STOPPED_EVENT:Lcom/google/common/util/concurrent/ListenerCallQueue$Event;
         5: .line 149
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.Iterable<? extends com.google.common.util.concurrent.Service>);
    descriptor: (Ljava/lang/Iterable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // com.google.common.util.concurrent.ServiceManager this
        start local 1 // java.lang.Iterable services
         0: .line 204
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 205
            aload 1 /* services */
            invokestatic com.google.common.collect.ImmutableList.copyOf:(Ljava/lang/Iterable;)Lcom/google/common/collect/ImmutableList;
            astore 2 /* copy */
        start local 2 // com.google.common.collect.ImmutableList copy
         2: .line 206
            aload 2 /* copy */
            invokevirtual com.google.common.collect.ImmutableList.isEmpty:()Z
            ifeq 9
         3: .line 209
            getstatic com.google.common.util.concurrent.ServiceManager.logger:Ljava/util/logging/Logger;
         4: .line 210
            getstatic java.util.logging.Level.WARNING:Ljava/util/logging/Level;
         5: .line 211
            ldc "ServiceManager configured with no services.  Is your application configured properly?"
         6: .line 212
            new com.google.common.util.concurrent.ServiceManager$EmptyServiceManagerWarning
            dup
            invokespecial com.google.common.util.concurrent.ServiceManager$EmptyServiceManagerWarning.<init>:()V
         7: .line 209
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
         8: .line 213
            new com.google.common.util.concurrent.ServiceManager$NoOpService
            dup
            invokespecial com.google.common.util.concurrent.ServiceManager$NoOpService.<init>:()V
            invokestatic com.google.common.collect.ImmutableList.of:(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;
            astore 2 /* copy */
         9: .line 215
      StackMap locals: com.google.common.util.concurrent.ServiceManager java.lang.Iterable com.google.common.collect.ImmutableList
      StackMap stack:
            aload 0 /* this */
            new com.google.common.util.concurrent.ServiceManager$ServiceManagerState
            dup
            aload 2 /* copy */
            invokespecial com.google.common.util.concurrent.ServiceManager$ServiceManagerState.<init>:(Lcom/google/common/collect/ImmutableCollection;)V
            putfield com.google.common.util.concurrent.ServiceManager.state:Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;
        10: .line 216
            aload 0 /* this */
            aload 2 /* copy */
            putfield com.google.common.util.concurrent.ServiceManager.services:Lcom/google/common/collect/ImmutableList;
        11: .line 217
            new java.lang.ref.WeakReference
            dup
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.state:Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
            astore 3 /* stateReference */
        start local 3 // java.lang.ref.WeakReference stateReference
        12: .line 218
            aload 2 /* copy */
            invokevirtual com.google.common.collect.ImmutableList.iterator:()Ljava/util/Iterator;
            astore 5
            goto 18
      StackMap locals: com.google.common.util.concurrent.ServiceManager java.lang.Iterable com.google.common.collect.ImmutableList java.lang.ref.WeakReference top java.util.Iterator
      StackMap stack:
        13: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.util.concurrent.Service
            astore 4 /* service */
        start local 4 // com.google.common.util.concurrent.Service service
        14: .line 219
            aload 4 /* service */
            new com.google.common.util.concurrent.ServiceManager$ServiceListener
            dup
            aload 4 /* service */
            aload 3 /* stateReference */
            invokespecial com.google.common.util.concurrent.ServiceManager$ServiceListener.<init>:(Lcom/google/common/util/concurrent/Service;Ljava/lang/ref/WeakReference;)V
            invokestatic com.google.common.util.concurrent.MoreExecutors.directExecutor:()Ljava/util/concurrent/Executor;
            invokeinterface com.google.common.util.concurrent.Service.addListener:(Lcom/google/common/util/concurrent/Service$Listener;Ljava/util/concurrent/Executor;)V
        15: .line 222
            aload 4 /* service */
            invokeinterface com.google.common.util.concurrent.Service.state:()Lcom/google/common/util/concurrent/Service$State;
            getstatic com.google.common.util.concurrent.Service$State.NEW:Lcom/google/common/util/concurrent/Service$State;
            if_acmpne 16
            iconst_1
            goto 17
      StackMap locals: com.google.common.util.concurrent.ServiceManager java.lang.Iterable com.google.common.collect.ImmutableList java.lang.ref.WeakReference com.google.common.util.concurrent.Service java.util.Iterator
      StackMap stack:
        16: iconst_0
      StackMap locals:
      StackMap stack: int
        17: ldc "Can only manage NEW services, %s"
            aload 4 /* service */
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;Ljava/lang/Object;)V
        end local 4 // com.google.common.util.concurrent.Service service
        18: .line 218
      StackMap locals: com.google.common.util.concurrent.ServiceManager java.lang.Iterable com.google.common.collect.ImmutableList java.lang.ref.WeakReference top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        19: .line 226
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.state:Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;
            invokevirtual com.google.common.util.concurrent.ServiceManager$ServiceManagerState.markReady:()V
        20: .line 227
            return
        end local 3 // java.lang.ref.WeakReference stateReference
        end local 2 // com.google.common.collect.ImmutableList copy
        end local 1 // java.lang.Iterable services
        end local 0 // com.google.common.util.concurrent.ServiceManager this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   21     0            this  Lcom/google/common/util/concurrent/ServiceManager;
            0   21     1        services  Ljava/lang/Iterable<+Lcom/google/common/util/concurrent/Service;>;
            2   21     2            copy  Lcom/google/common/collect/ImmutableList<Lcom/google/common/util/concurrent/Service;>;
           12   21     3  stateReference  Ljava/lang/ref/WeakReference<Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;>;
           14   18     4         service  Lcom/google/common/util/concurrent/Service;
    Signature: (Ljava/lang/Iterable<+Lcom/google/common/util/concurrent/Service;>;)V
    MethodParameters:
          Name  Flags
      services  

  public void addListener(com.google.common.util.concurrent.ServiceManager$Listener, java.util.concurrent.Executor);
    descriptor: (Lcom/google/common/util/concurrent/ServiceManager$Listener;Ljava/util/concurrent/Executor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.google.common.util.concurrent.ServiceManager this
        start local 1 // com.google.common.util.concurrent.ServiceManager$Listener listener
        start local 2 // java.util.concurrent.Executor executor
         0: .line 253
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.state:Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;
            aload 1 /* listener */
            aload 2 /* executor */
            invokevirtual com.google.common.util.concurrent.ServiceManager$ServiceManagerState.addListener:(Lcom/google/common/util/concurrent/ServiceManager$Listener;Ljava/util/concurrent/Executor;)V
         1: .line 254
            return
        end local 2 // java.util.concurrent.Executor executor
        end local 1 // com.google.common.util.concurrent.ServiceManager$Listener listener
        end local 0 // com.google.common.util.concurrent.ServiceManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/google/common/util/concurrent/ServiceManager;
            0    2     1  listener  Lcom/google/common/util/concurrent/ServiceManager$Listener;
            0    2     2  executor  Ljava/util/concurrent/Executor;
    MethodParameters:
          Name  Flags
      listener  
      executor  

  public void addListener(com.google.common.util.concurrent.ServiceManager$Listener);
    descriptor: (Lcom/google/common/util/concurrent/ServiceManager$Listener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.google.common.util.concurrent.ServiceManager this
        start local 1 // com.google.common.util.concurrent.ServiceManager$Listener listener
         0: .line 273
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.state:Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;
            aload 1 /* listener */
            invokestatic com.google.common.util.concurrent.MoreExecutors.directExecutor:()Ljava/util/concurrent/Executor;
            invokevirtual com.google.common.util.concurrent.ServiceManager$ServiceManagerState.addListener:(Lcom/google/common/util/concurrent/ServiceManager$Listener;Ljava/util/concurrent/Executor;)V
         1: .line 274
            return
        end local 1 // com.google.common.util.concurrent.ServiceManager$Listener listener
        end local 0 // com.google.common.util.concurrent.ServiceManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/google/common/util/concurrent/ServiceManager;
            0    2     1  listener  Lcom/google/common/util/concurrent/ServiceManager$Listener;
    MethodParameters:
          Name  Flags
      listener  

  public com.google.common.util.concurrent.ServiceManager startAsync();
    descriptor: ()Lcom/google/common/util/concurrent/ServiceManager;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // com.google.common.util.concurrent.ServiceManager this
         0: .line 286
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.services:Lcom/google/common/collect/ImmutableList;
            invokevirtual com.google.common.collect.ImmutableList.iterator:()Ljava/util/Iterator;
            astore 2
            goto 6
      StackMap locals: com.google.common.util.concurrent.ServiceManager top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.util.concurrent.Service
            astore 1 /* service */
        start local 1 // com.google.common.util.concurrent.Service service
         2: .line 287
            aload 1 /* service */
            invokeinterface com.google.common.util.concurrent.Service.state:()Lcom/google/common/util/concurrent/Service$State;
            astore 3 /* state */
        start local 3 // com.google.common.util.concurrent.Service$State state
         3: .line 288
            aload 3 /* state */
            getstatic com.google.common.util.concurrent.Service$State.NEW:Lcom/google/common/util/concurrent/Service$State;
            if_acmpne 4
            iconst_1
            goto 5
      StackMap locals: com.google.common.util.concurrent.ServiceManager com.google.common.util.concurrent.Service java.util.Iterator com.google.common.util.concurrent.Service$State
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: ldc "Service %s is %s, cannot start it."
            aload 1 /* service */
            aload 3 /* state */
            invokestatic com.google.common.base.Preconditions.checkState:(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 3 // com.google.common.util.concurrent.Service$State state
        end local 1 // com.google.common.util.concurrent.Service service
         6: .line 286
      StackMap locals: com.google.common.util.concurrent.ServiceManager top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         7: .line 290
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.services:Lcom/google/common/collect/ImmutableList;
            invokevirtual com.google.common.collect.ImmutableList.iterator:()Ljava/util/Iterator;
            astore 2
            goto 14
      StackMap locals:
      StackMap stack:
         8: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.util.concurrent.Service
            astore 1 /* service */
        start local 1 // com.google.common.util.concurrent.Service service
         9: .line 292
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.state:Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;
            aload 1 /* service */
            invokevirtual com.google.common.util.concurrent.ServiceManager$ServiceManagerState.tryStartTiming:(Lcom/google/common/util/concurrent/Service;)V
        10: .line 293
            aload 1 /* service */
            invokeinterface com.google.common.util.concurrent.Service.startAsync:()Lcom/google/common/util/concurrent/Service;
            pop
        11: .line 294
            goto 14
      StackMap locals: com.google.common.util.concurrent.ServiceManager com.google.common.util.concurrent.Service java.util.Iterator
      StackMap stack: java.lang.IllegalStateException
        12: astore 3 /* e */
        start local 3 // java.lang.IllegalStateException e
        13: .line 299
            getstatic com.google.common.util.concurrent.ServiceManager.logger:Ljava/util/logging/Logger;
            getstatic java.util.logging.Level.WARNING:Ljava/util/logging/Level;
            new java.lang.StringBuilder
            dup
            ldc "Unable to start Service "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* service */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 3 /* e */
            invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 3 // java.lang.IllegalStateException e
        end local 1 // com.google.common.util.concurrent.Service service
        14: .line 290
      StackMap locals: com.google.common.util.concurrent.ServiceManager top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        15: .line 302
            aload 0 /* this */
            areturn
        end local 0 // com.google.common.util.concurrent.ServiceManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   16     0     this  Lcom/google/common/util/concurrent/ServiceManager;
            2    6     1  service  Lcom/google/common/util/concurrent/Service;
            3    6     3    state  Lcom/google/common/util/concurrent/Service$State;
            9   14     1  service  Lcom/google/common/util/concurrent/Service;
           13   14     3        e  Ljava/lang/IllegalStateException;
      Exception table:
        from    to  target  type
           9    11      12  Class java.lang.IllegalStateException
    RuntimeInvisibleAnnotations: 
      com.google.errorprone.annotations.CanIgnoreReturnValue()

  public void awaitHealthy();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.ServiceManager this
         0: .line 314
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.state:Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;
            invokevirtual com.google.common.util.concurrent.ServiceManager$ServiceManagerState.awaitHealthy:()V
         1: .line 315
            return
        end local 0 // com.google.common.util.concurrent.ServiceManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/util/concurrent/ServiceManager;

  public void awaitHealthy(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.google.common.util.concurrent.ServiceManager this
        start local 1 // long timeout
        start local 3 // java.util.concurrent.TimeUnit unit
         0: .line 329
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.state:Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;
            lload 1 /* timeout */
            aload 3 /* unit */
            invokevirtual com.google.common.util.concurrent.ServiceManager$ServiceManagerState.awaitHealthy:(JLjava/util/concurrent/TimeUnit;)V
         1: .line 330
            return
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 1 // long timeout
        end local 0 // com.google.common.util.concurrent.ServiceManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/google/common/util/concurrent/ServiceManager;
            0    2     1  timeout  J
            0    2     3     unit  Ljava/util/concurrent/TimeUnit;
    Exceptions:
      throws java.util.concurrent.TimeoutException
    MethodParameters:
         Name  Flags
      timeout  
      unit     

  public com.google.common.util.concurrent.ServiceManager stopAsync();
    descriptor: ()Lcom/google/common/util/concurrent/ServiceManager;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // com.google.common.util.concurrent.ServiceManager this
         0: .line 340
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.services:Lcom/google/common/collect/ImmutableList;
            invokevirtual com.google.common.collect.ImmutableList.iterator:()Ljava/util/Iterator;
            astore 2
            goto 3
      StackMap locals: com.google.common.util.concurrent.ServiceManager top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.util.concurrent.Service
            astore 1 /* service */
        start local 1 // com.google.common.util.concurrent.Service service
         2: .line 341
            aload 1 /* service */
            invokeinterface com.google.common.util.concurrent.Service.stopAsync:()Lcom/google/common/util/concurrent/Service;
            pop
        end local 1 // com.google.common.util.concurrent.Service service
         3: .line 340
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 343
            aload 0 /* this */
            areturn
        end local 0 // com.google.common.util.concurrent.ServiceManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lcom/google/common/util/concurrent/ServiceManager;
            2    3     1  service  Lcom/google/common/util/concurrent/Service;
    RuntimeInvisibleAnnotations: 
      com.google.errorprone.annotations.CanIgnoreReturnValue()

  public void awaitStopped();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.ServiceManager this
         0: .line 352
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.state:Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;
            invokevirtual com.google.common.util.concurrent.ServiceManager$ServiceManagerState.awaitStopped:()V
         1: .line 353
            return
        end local 0 // com.google.common.util.concurrent.ServiceManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/util/concurrent/ServiceManager;

  public void awaitStopped(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.google.common.util.concurrent.ServiceManager this
        start local 1 // long timeout
        start local 3 // java.util.concurrent.TimeUnit unit
         0: .line 365
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.state:Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;
            lload 1 /* timeout */
            aload 3 /* unit */
            invokevirtual com.google.common.util.concurrent.ServiceManager$ServiceManagerState.awaitStopped:(JLjava/util/concurrent/TimeUnit;)V
         1: .line 366
            return
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 1 // long timeout
        end local 0 // com.google.common.util.concurrent.ServiceManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/google/common/util/concurrent/ServiceManager;
            0    2     1  timeout  J
            0    2     3     unit  Ljava/util/concurrent/TimeUnit;
    Exceptions:
      throws java.util.concurrent.TimeoutException
    MethodParameters:
         Name  Flags
      timeout  
      unit     

  public boolean isHealthy();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // com.google.common.util.concurrent.ServiceManager this
         0: .line 375
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.services:Lcom/google/common/collect/ImmutableList;
            invokevirtual com.google.common.collect.ImmutableList.iterator:()Ljava/util/Iterator;
            astore 2
            goto 4
      StackMap locals: com.google.common.util.concurrent.ServiceManager top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.common.util.concurrent.Service
            astore 1 /* service */
        start local 1 // com.google.common.util.concurrent.Service service
         2: .line 376
            aload 1 /* service */
            invokeinterface com.google.common.util.concurrent.Service.isRunning:()Z
            ifne 4
         3: .line 377
            iconst_0
            ireturn
        end local 1 // com.google.common.util.concurrent.Service service
         4: .line 375
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 380
            iconst_1
            ireturn
        end local 0 // com.google.common.util.concurrent.ServiceManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lcom/google/common/util/concurrent/ServiceManager;
            2    4     1  service  Lcom/google/common/util/concurrent/Service;

  public com.google.common.collect.ImmutableMultimap<com.google.common.util.concurrent.Service$State, com.google.common.util.concurrent.Service> servicesByState();
    descriptor: ()Lcom/google/common/collect/ImmutableMultimap;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.ServiceManager this
         0: .line 390
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.state:Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;
            invokevirtual com.google.common.util.concurrent.ServiceManager$ServiceManagerState.servicesByState:()Lcom/google/common/collect/ImmutableMultimap;
            areturn
        end local 0 // com.google.common.util.concurrent.ServiceManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/util/concurrent/ServiceManager;
    Signature: ()Lcom/google/common/collect/ImmutableMultimap<Lcom/google/common/util/concurrent/Service$State;Lcom/google/common/util/concurrent/Service;>;

  public com.google.common.collect.ImmutableMap<com.google.common.util.concurrent.Service, java.lang.Long> startupTimes();
    descriptor: ()Lcom/google/common/collect/ImmutableMap;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.ServiceManager this
         0: .line 401
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.state:Lcom/google/common/util/concurrent/ServiceManager$ServiceManagerState;
            invokevirtual com.google.common.util.concurrent.ServiceManager$ServiceManagerState.startupTimes:()Lcom/google/common/collect/ImmutableMap;
            areturn
        end local 0 // com.google.common.util.concurrent.ServiceManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/util/concurrent/ServiceManager;
    Signature: ()Lcom/google/common/collect/ImmutableMap<Lcom/google/common/util/concurrent/Service;Ljava/lang/Long;>;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.ServiceManager this
         0: .line 406
            ldc Lcom/google/common/util/concurrent/ServiceManager;
            invokestatic com.google.common.base.MoreObjects.toStringHelper:(Ljava/lang/Class;)Lcom/google/common/base/MoreObjects$ToStringHelper;
         1: .line 407
            ldc "services"
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ServiceManager.services:Lcom/google/common/collect/ImmutableList;
            ldc Lcom/google/common/util/concurrent/ServiceManager$NoOpService;
            invokestatic com.google.common.base.Predicates.instanceOf:(Ljava/lang/Class;)Lcom/google/common/base/Predicate;
            invokestatic com.google.common.base.Predicates.not:(Lcom/google/common/base/Predicate;)Lcom/google/common/base/Predicate;
            invokestatic com.google.common.collect.Collections2.filter:(Ljava/util/Collection;Lcom/google/common/base/Predicate;)Ljava/util/Collection;
            invokevirtual com.google.common.base.MoreObjects$ToStringHelper.add:(Ljava/lang/String;Ljava/lang/Object;)Lcom/google/common/base/MoreObjects$ToStringHelper;
         2: .line 408
            invokevirtual com.google.common.base.MoreObjects$ToStringHelper.toString:()Ljava/lang/String;
         3: .line 406
            areturn
        end local 0 // com.google.common.util.concurrent.ServiceManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/google/common/util/concurrent/ServiceManager;
}
SourceFile: "ServiceManager.java"
NestMembers:
  com.google.common.util.concurrent.ServiceManager$1  com.google.common.util.concurrent.ServiceManager$2  com.google.common.util.concurrent.ServiceManager$EmptyServiceManagerWarning  com.google.common.util.concurrent.ServiceManager$FailedService  com.google.common.util.concurrent.ServiceManager$Listener  com.google.common.util.concurrent.ServiceManager$NoOpService  com.google.common.util.concurrent.ServiceManager$ServiceListener  com.google.common.util.concurrent.ServiceManager$ServiceManagerState  com.google.common.util.concurrent.ServiceManager$ServiceManagerState$1  com.google.common.util.concurrent.ServiceManager$ServiceManagerState$2  com.google.common.util.concurrent.ServiceManager$ServiceManagerState$AwaitHealthGuard  com.google.common.util.concurrent.ServiceManager$ServiceManagerState$StoppedGuard
InnerClasses:
  public final ToStringHelper = com.google.common.base.MoreObjects$ToStringHelper of com.google.common.base.MoreObjects
  abstract Event = com.google.common.util.concurrent.ListenerCallQueue$Event of com.google.common.util.concurrent.ListenerCallQueue
  public abstract Listener = com.google.common.util.concurrent.Service$Listener of com.google.common.util.concurrent.Service
  public abstract State = com.google.common.util.concurrent.Service$State of com.google.common.util.concurrent.Service
  com.google.common.util.concurrent.ServiceManager$1
  com.google.common.util.concurrent.ServiceManager$2
  private final EmptyServiceManagerWarning = com.google.common.util.concurrent.ServiceManager$EmptyServiceManagerWarning of com.google.common.util.concurrent.ServiceManager
  private final FailedService = com.google.common.util.concurrent.ServiceManager$FailedService of com.google.common.util.concurrent.ServiceManager
  public abstract Listener = com.google.common.util.concurrent.ServiceManager$Listener of com.google.common.util.concurrent.ServiceManager
  private final NoOpService = com.google.common.util.concurrent.ServiceManager$NoOpService of com.google.common.util.concurrent.ServiceManager
  private final ServiceListener = com.google.common.util.concurrent.ServiceManager$ServiceListener of com.google.common.util.concurrent.ServiceManager
  private final ServiceManagerState = com.google.common.util.concurrent.ServiceManager$ServiceManagerState of com.google.common.util.concurrent.ServiceManager
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
      com.google.common.annotations.GwtIncompatible()