public class org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup implements org.springframework.core.metrics.ApplicationStartup
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup
  super_class: java.lang.Object
{
  private java.time.Instant recordingStartTime;
    descriptor: Ljava/time/Instant;
    flags: (0x0002) ACC_PRIVATE

  private long recordingStartNanos;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long currentSequenceId;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private final java.util.Deque<java.lang.Long> currentSteps;
    descriptor: Ljava/util/Deque;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Deque<Ljava/lang/Long;>;

  private final java.util.concurrent.BlockingQueue<org.springframework.boot.context.metrics.buffering.BufferedStartupStep> recordedSteps;
    descriptor: Ljava/util/concurrent/BlockingQueue;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/BlockingQueue<Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;>;

  private java.util.function.Predicate<org.springframework.core.metrics.StartupStep> stepFilters;
    descriptor: Ljava/util/function/Predicate;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/function/Predicate<Lorg/springframework/core/metrics/StartupStep;>;

  public void <init>(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
        start local 1 // int capacity
         0: .line 69
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 56
            aload 0 /* this */
            lconst_0
            putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSequenceId:J
         2: .line 62
            aload 0 /* this */
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  org/springframework/boot/context/metrics/buffering/BufferingApplicationStartup.lambda$0(Lorg/springframework/core/metrics/StartupStep;)Z (6)
                  (Lorg/springframework/core/metrics/StartupStep;)Z
            putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.stepFilters:Ljava/util/function/Predicate;
         3: .line 70
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSteps:Ljava/util/Deque;
         4: .line 71
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSteps:Ljava/util/Deque;
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSequenceId:J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface java.util.Deque.offerFirst:(Ljava/lang/Object;)Z
            pop
         5: .line 72
            aload 0 /* this */
            new java.util.concurrent.LinkedBlockingQueue
            dup
            iload 1 /* capacity */
            invokespecial java.util.concurrent.LinkedBlockingQueue.<init>:(I)V
            putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordedSteps:Ljava/util/concurrent/BlockingQueue;
         6: .line 73
            aload 0 /* this */
            invokevirtual org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.startRecording:()V
         7: .line 74
            return
        end local 1 // int capacity
        end local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;
            0    8     1  capacity  I
    MethodParameters:
          Name  Flags
      capacity  

  public void startRecording();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
         0: .line 84
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordedSteps:Ljava/util/concurrent/BlockingQueue;
            invokeinterface java.util.concurrent.BlockingQueue.isEmpty:()Z
            ldc "Cannot restart recording once steps have been buffered."
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         1: .line 85
            aload 0 /* this */
            invokestatic java.time.Instant.now:()Ljava/time/Instant;
            putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordingStartTime:Ljava/time/Instant;
         2: .line 86
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.getCurrentTime:()J
            putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordingStartNanos:J
         3: .line 87
            return
        end local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;

  public void addFilter(java.util.function.Predicate<org.springframework.core.metrics.StartupStep>);
    descriptor: (Ljava/util/function/Predicate;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
        start local 1 // java.util.function.Predicate filter
         0: .line 96
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.stepFilters:Ljava/util/function/Predicate;
            aload 1 /* filter */
            invokeinterface java.util.function.Predicate.and:(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;
            putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.stepFilters:Ljava/util/function/Predicate;
         1: .line 97
            return
        end local 1 // java.util.function.Predicate filter
        end local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;
            0    2     1  filter  Ljava/util/function/Predicate<Lorg/springframework/core/metrics/StartupStep;>;
    Signature: (Ljava/util/function/Predicate<Lorg/springframework/core/metrics/StartupStep;>;)V
    MethodParameters:
        Name  Flags
      filter  

  public org.springframework.boot.context.metrics.buffering.StartupTimeline getBufferedTimeline();
    descriptor: ()Lorg/springframework/boot/context/metrics/buffering/StartupTimeline;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
         0: .line 108
            new org.springframework.boot.context.metrics.buffering.StartupTimeline
            dup
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordingStartTime:Ljava/time/Instant;
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordingStartNanos:J
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordedSteps:Ljava/util/concurrent/BlockingQueue;
            invokespecial org.springframework.boot.context.metrics.buffering.StartupTimeline.<init>:(Ljava/time/Instant;JLjava/util/Collection;)V
            areturn
        end local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;

  public org.springframework.boot.context.metrics.buffering.StartupTimeline drainBufferedTimeline();
    descriptor: ()Lorg/springframework/boot/context/metrics/buffering/StartupTimeline;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
         0: .line 119
            new java.util.ArrayList
            dup
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordedSteps:Ljava/util/concurrent/BlockingQueue;
            invokeinterface java.util.concurrent.BlockingQueue.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 1 /* steps */
        start local 1 // java.util.List steps
         1: .line 120
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordedSteps:Ljava/util/concurrent/BlockingQueue;
            aload 1 /* steps */
            invokeinterface java.util.concurrent.BlockingQueue.drainTo:(Ljava/util/Collection;)I
            pop
         2: .line 121
            new org.springframework.boot.context.metrics.buffering.StartupTimeline
            dup
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordingStartTime:Ljava/time/Instant;
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordingStartNanos:J
            aload 1 /* steps */
            invokespecial org.springframework.boot.context.metrics.buffering.StartupTimeline.<init>:(Ljava/time/Instant;JLjava/util/Collection;)V
            areturn
        end local 1 // java.util.List steps
        end local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;
            1    3     1  steps  Ljava/util/List<Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;>;

  public org.springframework.core.metrics.StartupStep start(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/springframework/core/metrics/StartupStep;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
        start local 1 // java.lang.String name
         0: .line 126
            new org.springframework.boot.context.metrics.buffering.BufferedStartupStep
            dup
            aload 0 /* this */
            dup
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSequenceId:J
            lconst_1
            ladd
            dup2_x1
            putfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSequenceId:J
            aload 1 /* name */
         1: .line 127
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSteps:Ljava/util/Deque;
            invokeinterface java.util.Deque.peekFirst:()Ljava/lang/Object;
            checkcast java.lang.Long
            aload 0 /* this */
            invokedynamic accept(Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;)Ljava/util/function/Consumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  org/springframework/boot/context/metrics/buffering/BufferingApplicationStartup.record(Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;)V (7)
                  (Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;)V
         2: .line 126
            invokespecial org.springframework.boot.context.metrics.buffering.BufferedStartupStep.<init>:(JLjava/lang/String;Ljava/lang/Long;Ljava/util/function/Consumer;)V
            astore 2 /* step */
        start local 2 // org.springframework.boot.context.metrics.buffering.BufferedStartupStep step
         3: .line 128
            aload 2 /* step */
            aload 0 /* this */
            invokevirtual org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.getCurrentTime:()J
            invokevirtual org.springframework.boot.context.metrics.buffering.BufferedStartupStep.recordStartTime:(J)V
         4: .line 129
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSteps:Ljava/util/Deque;
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSequenceId:J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface java.util.Deque.offerFirst:(Ljava/lang/Object;)Z
            pop
         5: .line 130
            aload 2 /* step */
            areturn
        end local 2 // org.springframework.boot.context.metrics.buffering.BufferedStartupStep step
        end local 1 // java.lang.String name
        end local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;
            0    6     1  name  Ljava/lang/String;
            3    6     2  step  Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;
    MethodParameters:
      Name  Flags
      name  

  private void record(org.springframework.boot.context.metrics.buffering.BufferedStartupStep);
    descriptor: (Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
        start local 1 // org.springframework.boot.context.metrics.buffering.BufferedStartupStep step
         0: .line 134
            aload 1 /* step */
            aload 0 /* this */
            invokevirtual org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.getCurrentTime:()J
            invokevirtual org.springframework.boot.context.metrics.buffering.BufferedStartupStep.recordEndTime:(J)V
         1: .line 135
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.stepFilters:Ljava/util/function/Predicate;
            aload 1 /* step */
            invokeinterface java.util.function.Predicate.test:(Ljava/lang/Object;)Z
            ifeq 3
         2: .line 136
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.recordedSteps:Ljava/util/concurrent/BlockingQueue;
            aload 1 /* step */
            invokeinterface java.util.concurrent.BlockingQueue.offer:(Ljava/lang/Object;)Z
            pop
         3: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup.currentSteps:Ljava/util/Deque;
            invokeinterface java.util.Deque.removeFirst:()Ljava/lang/Object;
            pop
         4: .line 139
            return
        end local 1 // org.springframework.boot.context.metrics.buffering.BufferedStartupStep step
        end local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;
            0    5     1  step  Lorg/springframework/boot/context/metrics/buffering/BufferedStartupStep;
    MethodParameters:
      Name  Flags
      step  

  private long getCurrentTime();
    descriptor: ()J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
         0: .line 142
            invokestatic java.lang.System.nanoTime:()J
            lreturn
        end local 0 // org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/boot/context/metrics/buffering/BufferingApplicationStartup;

  private static boolean lambda$0(org.springframework.core.metrics.StartupStep);
    descriptor: (Lorg/springframework/core/metrics/StartupStep;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.core.metrics.StartupStep step
         0: .line 62
            iconst_1
            ireturn
        end local 0 // org.springframework.core.metrics.StartupStep step
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  step  Lorg/springframework/core/metrics/StartupStep;
}
SourceFile: "BufferingApplicationStartup.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles