class org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup
  super_class: java.lang.Object
{
  private final int phase;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long timeout;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Map<java.lang.String, ? extends org.springframework.context.Lifecycle> lifecycleBeans;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;+Lorg/springframework/context/Lifecycle;>;

  private final boolean autoStartupOnly;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.List<org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember> members;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/springframework/context/support/DefaultLifecycleProcessor$LifecycleGroupMember;>;

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

  final org.springframework.context.support.DefaultLifecycleProcessor this$0;
    descriptor: Lorg/springframework/context/support/DefaultLifecycleProcessor;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  public void <init>(int, long, java.util.Map<java.lang.String, ? extends org.springframework.context.Lifecycle>, );
    descriptor: (Lorg/springframework/context/support/DefaultLifecycleProcessor;IJLjava/util/Map;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=6
        start local 0 // org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup this
        start local 2 // int phase
        start local 3 // long timeout
        start local 5 // java.util.Map lifecycleBeans
        start local 6 // boolean autoStartupOnly
         0: .line 336
            aload 0 /* this */
            aload 1
            putfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.this$0:Lorg/springframework/context/support/DefaultLifecycleProcessor;
         1: .line 335
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         2: .line 331
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.members:Ljava/util/List;
         3: .line 338
            aload 0 /* this */
            iload 2 /* phase */
            putfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.phase:I
         4: .line 339
            aload 0 /* this */
            lload 3 /* timeout */
            putfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.timeout:J
         5: .line 340
            aload 0 /* this */
            aload 5 /* lifecycleBeans */
            putfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.lifecycleBeans:Ljava/util/Map;
         6: .line 341
            aload 0 /* this */
            iload 6 /* autoStartupOnly */
            putfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.autoStartupOnly:Z
         7: .line 342
            return
        end local 6 // boolean autoStartupOnly
        end local 5 // java.util.Map lifecycleBeans
        end local 3 // long timeout
        end local 2 // int phase
        end local 0 // org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Lorg/springframework/context/support/DefaultLifecycleProcessor$LifecycleGroup;
            0    8     2            phase  I
            0    8     3          timeout  J
            0    8     5   lifecycleBeans  Ljava/util/Map<Ljava/lang/String;+Lorg/springframework/context/Lifecycle;>;
            0    8     6  autoStartupOnly  Z
    Signature: (IJLjava/util/Map<Ljava/lang/String;+Lorg/springframework/context/Lifecycle;>;Z)V
    MethodParameters:
                 Name  Flags
      this$0           final
      phase            
      timeout          
      lifecycleBeans   
      autoStartupOnly  

  public void add(java.lang.String, org.springframework.context.Lifecycle);
    descriptor: (Ljava/lang/String;Lorg/springframework/context/Lifecycle;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup this
        start local 1 // java.lang.String name
        start local 2 // org.springframework.context.Lifecycle bean
         0: .line 345
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.members:Ljava/util/List;
            new org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember
            dup
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.this$0:Lorg/springframework/context/support/DefaultLifecycleProcessor;
            aload 1 /* name */
            aload 2 /* bean */
            invokespecial org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember.<init>:(Lorg/springframework/context/support/DefaultLifecycleProcessor;Ljava/lang/String;Lorg/springframework/context/Lifecycle;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 346
            aload 2 /* bean */
            instanceof org.springframework.context.SmartLifecycle
            ifeq 3
         2: .line 347
            aload 0 /* this */
            dup
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.smartMemberCount:I
            iconst_1
            iadd
            putfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.smartMemberCount:I
         3: .line 349
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.springframework.context.Lifecycle bean
        end local 1 // java.lang.String name
        end local 0 // org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/springframework/context/support/DefaultLifecycleProcessor$LifecycleGroup;
            0    4     1  name  Ljava/lang/String;
            0    4     2  bean  Lorg/springframework/context/Lifecycle;
    MethodParameters:
      Name  Flags
      name  
      bean  

  public void start();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup this
         0: .line 352
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.members:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 2
         1: .line 353
            return
         2: .line 355
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.this$0:Lorg/springframework/context/support/DefaultLifecycleProcessor;
            getfield org.springframework.context.support.DefaultLifecycleProcessor.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 4
         3: .line 356
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.this$0:Lorg/springframework/context/support/DefaultLifecycleProcessor;
            getfield org.springframework.context.support.DefaultLifecycleProcessor.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Starting beans in phase "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.phase:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         4: .line 358
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.members:Ljava/util/List;
            invokestatic java.util.Collections.sort:(Ljava/util/List;)V
         5: .line 359
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.members:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2
            goto 8
      StackMap locals: org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup top java.util.Iterator
      StackMap stack:
         6: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember
            astore 1 /* member */
        start local 1 // org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember member
         7: .line 360
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.this$0:Lorg/springframework/context/support/DefaultLifecycleProcessor;
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.lifecycleBeans:Ljava/util/Map;
            aload 1 /* member */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember.name:Ljava/lang/String;
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.autoStartupOnly:Z
            invokevirtual org.springframework.context.support.DefaultLifecycleProcessor.doStart:(Ljava/util/Map;Ljava/lang/String;Z)V
        end local 1 // org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember member
         8: .line 359
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
         9: .line 362
            return
        end local 0 // org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0    this  Lorg/springframework/context/support/DefaultLifecycleProcessor$LifecycleGroup;
            7    8     1  member  Lorg/springframework/context/support/DefaultLifecycleProcessor$LifecycleGroupMember;

  public void stop();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup this
         0: .line 365
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.members:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 2
         1: .line 366
            return
         2: .line 368
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.this$0:Lorg/springframework/context/support/DefaultLifecycleProcessor;
            getfield org.springframework.context.support.DefaultLifecycleProcessor.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 4
         3: .line 369
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.this$0:Lorg/springframework/context/support/DefaultLifecycleProcessor;
            getfield org.springframework.context.support.DefaultLifecycleProcessor.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Stopping beans in phase "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.phase:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         4: .line 371
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.members:Ljava/util/List;
            invokestatic java.util.Collections.reverseOrder:()Ljava/util/Comparator;
            invokeinterface java.util.List.sort:(Ljava/util/Comparator;)V
         5: .line 372
            new java.util.concurrent.CountDownLatch
            dup
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.smartMemberCount:I
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            astore 1 /* latch */
        start local 1 // java.util.concurrent.CountDownLatch latch
         6: .line 373
            new java.util.LinkedHashSet
            dup
            invokespecial java.util.LinkedHashSet.<init>:()V
            invokestatic java.util.Collections.synchronizedSet:(Ljava/util/Set;)Ljava/util/Set;
            astore 2 /* countDownBeanNames */
        start local 2 // java.util.Set countDownBeanNames
         7: .line 374
            new java.util.HashSet
            dup
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.lifecycleBeans:Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            astore 3 /* lifecycleBeanNames */
        start local 3 // java.util.Set lifecycleBeanNames
         8: .line 375
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.members:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 15
      StackMap locals: org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup java.util.concurrent.CountDownLatch java.util.Set java.util.Set top java.util.Iterator
      StackMap stack:
         9: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember
            astore 4 /* member */
        start local 4 // org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember member
        10: .line 376
            aload 3 /* lifecycleBeanNames */
            aload 4 /* member */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember.name:Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 13
        11: .line 377
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.this$0:Lorg/springframework/context/support/DefaultLifecycleProcessor;
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.lifecycleBeans:Ljava/util/Map;
            aload 4 /* member */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember.name:Ljava/lang/String;
            aload 1 /* latch */
            aload 2 /* countDownBeanNames */
            invokevirtual org.springframework.context.support.DefaultLifecycleProcessor.doStop:(Ljava/util/Map;Ljava/lang/String;Ljava/util/concurrent/CountDownLatch;Ljava/util/Set;)V
        12: .line 378
            goto 15
        13: .line 379
      StackMap locals: org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup java.util.concurrent.CountDownLatch java.util.Set java.util.Set org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember java.util.Iterator
      StackMap stack:
            aload 4 /* member */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember.bean:Lorg/springframework/context/Lifecycle;
            instanceof org.springframework.context.SmartLifecycle
            ifeq 15
        14: .line 381
            aload 1 /* latch */
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
        end local 4 // org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember member
        15: .line 375
      StackMap locals: org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup java.util.concurrent.CountDownLatch java.util.Set java.util.Set top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        16: .line 385
            aload 1 /* latch */
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.timeout:J
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual java.util.concurrent.CountDownLatch.await:(JLjava/util/concurrent/TimeUnit;)Z
            pop
        17: .line 386
            aload 1 /* latch */
            invokevirtual java.util.concurrent.CountDownLatch.getCount:()J
            lconst_0
            lcmp
            ifle 27
            aload 2 /* countDownBeanNames */
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 27
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.this$0:Lorg/springframework/context/support/DefaultLifecycleProcessor;
            getfield org.springframework.context.support.DefaultLifecycleProcessor.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isInfoEnabled:()Z
            ifeq 27
        18: .line 387
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.this$0:Lorg/springframework/context/support/DefaultLifecycleProcessor;
            getfield org.springframework.context.support.DefaultLifecycleProcessor.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Failed to shut down "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* countDownBeanNames */
            invokeinterface java.util.Set.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bean"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: .line 388
            aload 2 /* countDownBeanNames */
            invokeinterface java.util.Set.size:()I
            iconst_1
            if_icmple 20
            ldc "s"
            goto 21
      StackMap locals: org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup java.util.concurrent.CountDownLatch java.util.Set java.util.Set
      StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder
        20: ldc ""
      StackMap locals: org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup java.util.concurrent.CountDownLatch java.util.Set java.util.Set
      StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder java.lang.String
        21: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " with phase value "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        22: .line 389
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.phase:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " within timeout of "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.timeout:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* countDownBeanNames */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        23: .line 387
            invokeinterface org.apache.commons.logging.Log.info:(Ljava/lang/Object;)V
        24: .line 391
            goto 27
        25: .line 392
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            pop
        26: .line 393
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        27: .line 395
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.Set lifecycleBeanNames
        end local 2 // java.util.Set countDownBeanNames
        end local 1 // java.util.concurrent.CountDownLatch latch
        end local 0 // org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   28     0                this  Lorg/springframework/context/support/DefaultLifecycleProcessor$LifecycleGroup;
            6   28     1               latch  Ljava/util/concurrent/CountDownLatch;
            7   28     2  countDownBeanNames  Ljava/util/Set<Ljava/lang/String;>;
            8   28     3  lifecycleBeanNames  Ljava/util/Set<Ljava/lang/String;>;
           10   15     4              member  Lorg/springframework/context/support/DefaultLifecycleProcessor$LifecycleGroupMember;
      Exception table:
        from    to  target  type
          16    24      25  Class java.lang.InterruptedException
}
SourceFile: "DefaultLifecycleProcessor.java"
NestHost: org.springframework.context.support.DefaultLifecycleProcessor
InnerClasses:
  private LifecycleGroup = org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup of org.springframework.context.support.DefaultLifecycleProcessor
  private LifecycleGroupMember = org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroupMember of org.springframework.context.support.DefaultLifecycleProcessor