public abstract class jdk.jfr.internal.consumer.AbstractEventStream implements jdk.jfr.consumer.EventStream
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: jdk.jfr.internal.consumer.AbstractEventStream
  super_class: java.lang.Object
{
  private static final java.util.concurrent.atomic.AtomicLong counter;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.lang.Object terminated;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Runnable flushOperation;
    descriptor: Ljava/lang/Runnable;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.security.AccessControlContext accessControllerContext;
    descriptor: Ljava/security/AccessControlContext;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.jfr.internal.consumer.StreamConfiguration streamConfiguration;
    descriptor: Ljdk/jfr/internal/consumer/StreamConfiguration;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected final jdk.jfr.internal.PlatformRecording recording;
    descriptor: Ljdk/jfr/internal/PlatformRecording;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private final java.util.List<jdk.jfr.Configuration> configurations;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljdk/jfr/Configuration;>;

  private volatile java.lang.Thread thread;
    descriptor: Ljava/lang/Thread;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private jdk.jfr.internal.consumer.Dispatcher dispatcher;
    descriptor: Ljdk/jfr/internal/consumer/Dispatcher;
    flags: (0x0002) ACC_PRIVATE

  private volatile boolean closed;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 56
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
            putstatic jdk.jfr.internal.consumer.AbstractEventStream.counter:Ljava/util/concurrent/atomic/AtomicLong;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.security.AccessControlContext, jdk.jfr.internal.PlatformRecording, java.util.List<jdk.jfr.Configuration>);
    descriptor: (Ljava/security/AccessControlContext;Ljdk/jfr/internal/PlatformRecording;Ljava/util/List;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // java.security.AccessControlContext acc
        start local 2 // jdk.jfr.internal.PlatformRecording recording
        start local 3 // java.util.List configurations
         0: .line 70
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 58
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
         2: .line 59
            aload 0 /* this */
            aload 0 /* this */
            invokedynamic run(Ljdk/jfr/internal/consumer/AbstractEventStream;)Ljava/lang/Runnable;
              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:
                  ()V
                  jdk/jfr/internal/consumer/AbstractEventStream.lambda$0()V (7)
                  ()V
            putfield jdk.jfr.internal.consumer.AbstractEventStream.flushOperation:Ljava/lang/Runnable;
         3: .line 61
            aload 0 /* this */
            new jdk.jfr.internal.consumer.StreamConfiguration
            dup
            invokespecial jdk.jfr.internal.consumer.StreamConfiguration.<init>:()V
            putfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
         4: .line 71
            aload 0 /* this */
            aload 1 /* acc */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.AccessControlContext
            putfield jdk.jfr.internal.consumer.AbstractEventStream.accessControllerContext:Ljava/security/AccessControlContext;
         5: .line 72
            aload 0 /* this */
            aload 2 /* recording */
            putfield jdk.jfr.internal.consumer.AbstractEventStream.recording:Ljdk/jfr/internal/PlatformRecording;
         6: .line 73
            aload 0 /* this */
            aload 3 /* configurations */
            putfield jdk.jfr.internal.consumer.AbstractEventStream.configurations:Ljava/util/List;
         7: .line 74
            return
        end local 3 // java.util.List configurations
        end local 2 // jdk.jfr.internal.PlatformRecording recording
        end local 1 // java.security.AccessControlContext acc
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    8     1             acc  Ljava/security/AccessControlContext;
            0    8     2       recording  Ljdk/jfr/internal/PlatformRecording;
            0    8     3  configurations  Ljava/util/List<Ljdk/jfr/Configuration;>;
    Exceptions:
      throws java.io.IOException
    Signature: (Ljava/security/AccessControlContext;Ljdk/jfr/internal/PlatformRecording;Ljava/util/List<Ljdk/jfr/Configuration;>;)V
    MethodParameters:
                Name  Flags
      acc             
      recording       
      configurations  

  public abstract void start();
    descriptor: ()V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract void startAsync();
    descriptor: ()V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract void close();
    descriptor: ()V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  protected final jdk.jfr.internal.consumer.Dispatcher dispatcher();
    descriptor: ()Ljdk/jfr/internal/consumer/Dispatcher;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
         0: .line 86
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.hasChanged:()Z
            ifeq 8
         1: .line 87
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            dup
            astore 1
            monitorenter
         2: .line 88
            aload 0 /* this */
            new jdk.jfr.internal.consumer.Dispatcher
            dup
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            invokespecial jdk.jfr.internal.consumer.Dispatcher.<init>:(Ljdk/jfr/internal/consumer/StreamConfiguration;)V
            putfield jdk.jfr.internal.consumer.AbstractEventStream.dispatcher:Ljdk/jfr/internal/consumer/Dispatcher;
         3: .line 89
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            iconst_0
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.setChanged:(Z)V
         4: .line 87
            aload 1
            monitorexit
         5: goto 8
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream jdk.jfr.internal.consumer.StreamConfiguration
      StackMap stack: java.lang.Throwable
         6: aload 1
            monitorexit
         7: athrow
         8: .line 92
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.dispatcher:Ljdk/jfr/internal/consumer/Dispatcher;
            areturn
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Ljdk/jfr/internal/consumer/AbstractEventStream;
      Exception table:
        from    to  target  type
           2     5       6  any
           6     7       6  any

  public final void setOrdered(boolean);
    descriptor: (Z)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // boolean ordered
         0: .line 97
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            iload 1 /* ordered */
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.setOrdered:(Z)V
         1: .line 98
            return
        end local 1 // boolean ordered
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    2     1  ordered  Z
    MethodParameters:
         Name  Flags
      ordered  

  public final void setReuse(boolean);
    descriptor: (Z)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // boolean reuse
         0: .line 102
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            iload 1 /* reuse */
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.setReuse:(Z)V
         1: .line 103
            return
        end local 1 // boolean reuse
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    2     1  reuse  Z
    MethodParameters:
       Name  Flags
      reuse  

  public final void setStartTime(java.time.Instant);
    descriptor: (Ljava/time/Instant;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // java.time.Instant startTime
         0: .line 107
            aload 1 /* startTime */
            invokestatic java.util.Objects.nonNull:(Ljava/lang/Object;)Z
            pop
         1: .line 108
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            dup
            astore 2
            monitorenter
         2: .line 109
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            getfield jdk.jfr.internal.consumer.StreamConfiguration.started:Z
            ifeq 4
         3: .line 110
            new java.lang.IllegalStateException
            dup
            ldc "Stream is already started"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 112
      StackMap locals: jdk.jfr.internal.consumer.StreamConfiguration
      StackMap stack:
            aload 1 /* startTime */
            getstatic java.time.Instant.EPOCH:Ljava/time/Instant;
            invokevirtual java.time.Instant.isBefore:(Ljava/time/Instant;)Z
            ifeq 6
         5: .line 113
            getstatic java.time.Instant.EPOCH:Ljava/time/Instant;
            astore 1 /* startTime */
         6: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            aload 1 /* startTime */
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.setStartTime:(Ljava/time/Instant;)V
         7: .line 108
            aload 2
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        11: .line 117
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.time.Instant startTime
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0   12     1  startTime  Ljava/time/Instant;
      Exception table:
        from    to  target  type
           2     8       9  any
           9    10       9  any
    MethodParameters:
           Name  Flags
      startTime  

  public final void setEndTime(java.time.Instant);
    descriptor: (Ljava/time/Instant;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // java.time.Instant endTime
         0: .line 121
            aload 1 /* endTime */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 122
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            dup
            astore 2
            monitorenter
         2: .line 123
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            getfield jdk.jfr.internal.consumer.StreamConfiguration.started:Z
            ifeq 4
         3: .line 124
            new java.lang.IllegalStateException
            dup
            ldc "Stream is already started"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 126
      StackMap locals: jdk.jfr.internal.consumer.StreamConfiguration
      StackMap stack:
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            aload 1 /* endTime */
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.setEndTime:(Ljava/time/Instant;)V
         5: .line 122
            aload 2
            monitorexit
         6: goto 9
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: aload 2
            monitorexit
         8: athrow
         9: .line 128
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.time.Instant endTime
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0   10     1  endTime  Ljava/time/Instant;
      Exception table:
        from    to  target  type
           2     6       7  any
           7     8       7  any
    MethodParameters:
         Name  Flags
      endTime  

  public final void onEvent(java.util.function.Consumer<jdk.jfr.consumer.RecordedEvent>);
    descriptor: (Ljava/util/function/Consumer;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // java.util.function.Consumer action
         0: .line 132
            aload 1 /* action */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 133
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            aload 1 /* action */
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.addEventAction:(Ljava/util/function/Consumer;)V
         2: .line 134
            return
        end local 1 // java.util.function.Consumer action
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    3     1  action  Ljava/util/function/Consumer<Ljdk/jfr/consumer/RecordedEvent;>;
    Signature: (Ljava/util/function/Consumer<Ljdk/jfr/consumer/RecordedEvent;>;)V
    MethodParameters:
        Name  Flags
      action  

  public final void onEvent(java.lang.String, java.util.function.Consumer<jdk.jfr.consumer.RecordedEvent>);
    descriptor: (Ljava/lang/String;Ljava/util/function/Consumer;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // java.lang.String eventName
        start local 2 // java.util.function.Consumer action
         0: .line 138
            aload 1 /* eventName */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 139
            aload 2 /* action */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 140
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            aload 1 /* eventName */
            aload 2 /* action */
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.addEventAction:(Ljava/lang/String;Ljava/util/function/Consumer;)V
         3: .line 141
            return
        end local 2 // java.util.function.Consumer action
        end local 1 // java.lang.String eventName
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    4     1  eventName  Ljava/lang/String;
            0    4     2     action  Ljava/util/function/Consumer<Ljdk/jfr/consumer/RecordedEvent;>;
    Signature: (Ljava/lang/String;Ljava/util/function/Consumer<Ljdk/jfr/consumer/RecordedEvent;>;)V
    MethodParameters:
           Name  Flags
      eventName  
      action     

  public final void onFlush(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // java.lang.Runnable action
         0: .line 145
            aload 1 /* action */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 146
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            aload 1 /* action */
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.addFlushAction:(Ljava/lang/Runnable;)V
         2: .line 147
            return
        end local 1 // java.lang.Runnable action
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    3     1  action  Ljava/lang/Runnable;
    MethodParameters:
        Name  Flags
      action  

  public final void onClose(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // java.lang.Runnable action
         0: .line 151
            aload 1 /* action */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 152
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            aload 1 /* action */
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.addCloseAction:(Ljava/lang/Runnable;)V
         2: .line 153
            return
        end local 1 // java.lang.Runnable action
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    3     1  action  Ljava/lang/Runnable;
    MethodParameters:
        Name  Flags
      action  

  public final void onError(java.util.function.Consumer<java.lang.Throwable>);
    descriptor: (Ljava/util/function/Consumer;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // java.util.function.Consumer action
         0: .line 157
            aload 1 /* action */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 158
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            aload 1 /* action */
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.addErrorAction:(Ljava/util/function/Consumer;)V
         2: .line 159
            return
        end local 1 // java.util.function.Consumer action
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    3     1  action  Ljava/util/function/Consumer<Ljava/lang/Throwable;>;
    Signature: (Ljava/util/function/Consumer<Ljava/lang/Throwable;>;)V
    MethodParameters:
        Name  Flags
      action  

  public final boolean remove(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // java.lang.Object action
         0: .line 163
            aload 1 /* action */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 164
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            aload 1 /* action */
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.remove:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.Object action
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    2     1  action  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      action  

  public final void awaitTermination();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
         0: .line 169
            aload 0 /* this */
            lconst_0
            invokestatic java.time.Duration.ofMillis:(J)Ljava/time/Duration;
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.awaitTermination:(Ljava/time/Duration;)V
         1: .line 170
            return
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/jfr/internal/consumer/AbstractEventStream;
    Exceptions:
      throws java.lang.InterruptedException

  public final void awaitTermination(java.time.Duration);
    descriptor: (Ljava/time/Duration;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=12, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // java.time.Duration timeout
         0: .line 174
            aload 1 /* timeout */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 175
            aload 1 /* timeout */
            invokevirtual java.time.Duration.isNegative:()Z
            ifeq 3
         2: .line 176
            new java.lang.IllegalArgumentException
            dup
            ldc "timeout value is negative"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 179
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 2 /* base */
        start local 2 // long base
         4: .line 180
            lconst_0
            lstore 4 /* now */
        start local 4 // long now
         5: .line 184
            aload 1 /* timeout */
            invokevirtual java.time.Duration.getSeconds:()J
            sipush 1000
            invokestatic java.lang.Math.multiplyExact:(JI)J
            lstore 6 /* millis */
        start local 6 // long millis
         6: .line 185
            goto 9
        end local 6 // long millis
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream java.time.Duration long long
      StackMap stack: java.lang.ArithmeticException
         7: pop
         8: .line 186
            ldc 9223372036854775807
            lstore 6 /* millis */
        start local 6 // long millis
         9: .line 188
      StackMap locals: long
      StackMap stack:
            aload 1 /* timeout */
            invokevirtual java.time.Duration.toNanosPart:()I
            istore 8 /* nanos */
        start local 8 // int nanos
        10: .line 189
            iload 8 /* nanos */
            ifne 29
            lload 6 /* millis */
            lconst_0
            lcmp
            ifne 29
        11: .line 190
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        12: .line 191
            goto 14
        13: .line 192
      StackMap locals: int java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            lconst_0
            invokevirtual java.lang.Object.wait:(J)V
        14: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.isClosed:()Z
            ifeq 13
        15: .line 190
            aload 9
            monitorexit
        16: goto 30
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: aload 9
            monitorexit
        18: athrow
        19: .line 197
      StackMap locals:
      StackMap stack:
            lload 6 /* millis */
            lload 4 /* now */
            lsub
            lstore 9 /* delay */
        start local 9 // long delay
        20: .line 198
            lload 9 /* delay */
            lconst_0
            lcmp
            ifgt 22
        21: .line 199
            goto 30
        22: .line 201
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            dup
            astore 11
            monitorenter
        23: .line 202
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            lload 9 /* delay */
            iload 8 /* nanos */
            invokevirtual java.lang.Object.wait:(JI)V
        24: .line 201
            aload 11
            monitorexit
        25: goto 28
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream java.time.Duration long long long int long java.lang.Object
      StackMap stack: java.lang.Throwable
        26: aload 11
            monitorexit
        27: athrow
        28: .line 204
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            lload 2 /* base */
            lsub
            lstore 4 /* now */
        end local 9 // long delay
        29: .line 196
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.isClosed:()Z
            ifeq 19
        30: .line 207
      StackMap locals:
      StackMap stack:
            return
        end local 8 // int nanos
        end local 6 // long millis
        end local 4 // long now
        end local 2 // long base
        end local 1 // java.time.Duration timeout
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   31     0     this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0   31     1  timeout  Ljava/time/Duration;
            4   31     2     base  J
            5   31     4      now  J
            6    7     6   millis  J
            9   31     6   millis  J
           10   31     8    nanos  I
           20   29     9    delay  J
      Exception table:
        from    to  target  type
           5     6       7  Class java.lang.ArithmeticException
          12    16      17  any
          17    18      17  any
          23    25      26  any
          26    27      26  any
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
         Name  Flags
      timeout  

  protected abstract void process();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException

  protected final void setClosed(boolean);
    descriptor: (Z)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // boolean closed
         0: .line 212
            aload 0 /* this */
            iload 1 /* closed */
            putfield jdk.jfr.internal.consumer.AbstractEventStream.closed:Z
         1: .line 213
            return
        end local 1 // boolean closed
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    2     1  closed  Z
    MethodParameters:
        Name  Flags
      closed  

  protected final boolean isClosed();
    descriptor: ()Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
         0: .line 216
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.closed:Z
            ireturn
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jfr/internal/consumer/AbstractEventStream;

  public final void startAsync(long);
    descriptor: (J)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // long startNanos
         0: .line 220
            aload 0 /* this */
            lload 1 /* startNanos */
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.startInternal:(J)V
         1: .line 221
            aload 0 /* this */
            invokedynamic run(Ljdk/jfr/internal/consumer/AbstractEventStream;)Ljava/lang/Runnable;
              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:
                  ()V
                  jdk/jfr/internal/consumer/AbstractEventStream.lambda$1()V (7)
                  ()V
            astore 3 /* r */
        start local 3 // java.lang.Runnable r
         2: .line 222
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.nextThreadName:()Ljava/lang/String;
            aload 3 /* r */
            invokestatic jdk.jfr.internal.SecuritySupport.createThreadWitNoPermissions:(Ljava/lang/String;Ljava/lang/Runnable;)Ljava/lang/Thread;
            putfield jdk.jfr.internal.consumer.AbstractEventStream.thread:Ljava/lang/Thread;
         3: .line 223
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.thread:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.start:()V
         4: .line 224
            return
        end local 3 // java.lang.Runnable r
        end local 1 // long startNanos
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    5     1  startNanos  J
            2    5     3           r  Ljava/lang/Runnable;
    MethodParameters:
            Name  Flags
      startNanos  

  public final void start(long);
    descriptor: (J)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // long startNanos
         0: .line 227
            aload 0 /* this */
            lload 1 /* startNanos */
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.startInternal:(J)V
         1: .line 228
            aload 0 /* this */
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            putfield jdk.jfr.internal.consumer.AbstractEventStream.thread:Ljava/lang/Thread;
         2: .line 229
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.accessControllerContext:Ljava/security/AccessControlContext;
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.run:(Ljava/security/AccessControlContext;)V
         3: .line 230
            return
        end local 1 // long startNanos
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    4     1  startNanos  J
    MethodParameters:
            Name  Flags
      startNanos  

  protected final java.lang.Runnable getFlushOperation();
    descriptor: ()Ljava/lang/Runnable;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
         0: .line 233
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.flushOperation:Ljava/lang/Runnable;
            areturn
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jfr/internal/consumer/AbstractEventStream;

  protected final void onFlush();
    descriptor: ()V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
         0: .line 238
            aload 0 /* this */
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.getFlushOperation:()Ljava/lang/Runnable;
            astore 1 /* r */
        start local 1 // java.lang.Runnable r
         1: .line 239
            aload 1 /* r */
            ifnull 3
         2: .line 240
            aload 1 /* r */
            invokeinterface java.lang.Runnable.run:()V
         3: .line 242
      StackMap locals: java.lang.Runnable
      StackMap stack:
            return
        end local 1 // java.lang.Runnable r
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            1    4     1     r  Ljava/lang/Runnable;

  private void startInternal(long);
    descriptor: (J)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // long startNanos
         0: .line 245
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            dup
            astore 3
            monitorenter
         1: .line 246
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            getfield jdk.jfr.internal.consumer.StreamConfiguration.started:Z
            ifeq 3
         2: .line 247
            new java.lang.IllegalStateException
            dup
            ldc "Event stream can only be started once"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 249
      StackMap locals: jdk.jfr.internal.consumer.StreamConfiguration
      StackMap stack:
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.recording:Ljdk/jfr/internal/PlatformRecording;
            ifnull 5
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            getfield jdk.jfr.internal.consumer.StreamConfiguration.startTime:Ljava/time/Instant;
            ifnonnull 5
         4: .line 250
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            lload 1 /* startNanos */
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.setStartNanos:(J)V
         5: .line 252
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            iconst_1
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.setStarted:(Z)V
         6: .line 245
            aload 3
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 3
            monitorexit
         9: athrow
        10: .line 254
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long startNanos
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0   11     1  startNanos  J
      Exception table:
        from    to  target  type
           1     7       8  any
           8     9       8  any
    MethodParameters:
            Name  Flags
      startNanos  

  private void execute();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
         0: .line 258
            aload 0 /* this */
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.process:()V
         1: .line 259
            goto 39
      StackMap locals:
      StackMap stack: java.io.IOException
         2: pop
         3: .line 265
            getstatic jdk.jfr.internal.LogTag.JFR_SYSTEM_STREAMING:Ljdk/jfr/internal/LogTag;
            getstatic jdk.jfr.internal.LogLevel.DEBUG:Ljdk/jfr/internal/LogLevel;
            ldc "Execution of stream ended."
            invokestatic jdk.jfr.internal.Logger.log:(Ljdk/jfr/internal/LogTag;Ljdk/jfr/internal/LogLevel;Ljava/lang/String;)V
         4: .line 267
            aload 0 /* this */
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.close:()V
         5: .line 268
            goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: astore 2
         7: .line 269
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         8: .line 270
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
         9: .line 269
            aload 3
            monitorexit
        10: goto 13
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream top java.lang.Throwable java.lang.Object
      StackMap stack: java.lang.Throwable
        11: aload 3
            monitorexit
        12: athrow
        13: .line 272
      StackMap locals:
      StackMap stack:
            aload 2
            athrow
        14: .line 269
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream
      StackMap stack:
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
        15: .line 270
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
        16: .line 269
            aload 3
            monitorexit
        17: goto 56
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream top top java.lang.Object
      StackMap stack: java.lang.Throwable
        18: aload 3
            monitorexit
        19: athrow
        20: .line 264
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream
      StackMap stack: java.lang.Throwable
            astore 1
        21: .line 265
            getstatic jdk.jfr.internal.LogTag.JFR_SYSTEM_STREAMING:Ljdk/jfr/internal/LogTag;
            getstatic jdk.jfr.internal.LogLevel.DEBUG:Ljdk/jfr/internal/LogLevel;
            ldc "Execution of stream ended."
            invokestatic jdk.jfr.internal.Logger.log:(Ljdk/jfr/internal/LogTag;Ljdk/jfr/internal/LogLevel;Ljava/lang/String;)V
        22: .line 267
            aload 0 /* this */
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.close:()V
        23: .line 268
            goto 32
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream java.lang.Throwable
      StackMap stack: java.lang.Throwable
        24: astore 2
        25: .line 269
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
        26: .line 270
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
        27: .line 269
            aload 3
            monitorexit
        28: goto 31
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream java.lang.Throwable java.lang.Throwable java.lang.Object
      StackMap stack: java.lang.Throwable
        29: aload 3
            monitorexit
        30: athrow
        31: .line 272
      StackMap locals:
      StackMap stack:
            aload 2
            athrow
        32: .line 269
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
        33: .line 270
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
        34: .line 269
            aload 3
            monitorexit
        35: goto 38
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream java.lang.Throwable top java.lang.Object
      StackMap stack: java.lang.Throwable
        36: aload 3
            monitorexit
        37: athrow
        38: .line 273
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream java.lang.Throwable
      StackMap stack:
            aload 1
            athrow
        39: .line 265
      StackMap locals:
      StackMap stack:
            getstatic jdk.jfr.internal.LogTag.JFR_SYSTEM_STREAMING:Ljdk/jfr/internal/LogTag;
            getstatic jdk.jfr.internal.LogLevel.DEBUG:Ljdk/jfr/internal/LogLevel;
            ldc "Execution of stream ended."
            invokestatic jdk.jfr.internal.Logger.log:(Ljdk/jfr/internal/LogTag;Ljdk/jfr/internal/LogLevel;Ljava/lang/String;)V
        40: .line 267
            aload 0 /* this */
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.close:()V
        41: .line 268
            goto 50
      StackMap locals:
      StackMap stack: java.lang.Throwable
        42: astore 2
        43: .line 269
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
        44: .line 270
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
        45: .line 269
            aload 3
            monitorexit
        46: goto 49
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream top java.lang.Throwable java.lang.Object
      StackMap stack: java.lang.Throwable
        47: aload 3
            monitorexit
        48: athrow
        49: .line 272
      StackMap locals:
      StackMap stack:
            aload 2
            athrow
        50: .line 269
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream
      StackMap stack:
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
        51: .line 270
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.terminated:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
        52: .line 269
            aload 3
            monitorexit
        53: goto 56
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream top top java.lang.Object
      StackMap stack: java.lang.Throwable
        54: aload 3
            monitorexit
        55: athrow
        56: .line 274
      StackMap locals: jdk.jfr.internal.consumer.AbstractEventStream
      StackMap stack:
            return
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   57     0  this  Ljdk/jfr/internal/consumer/AbstractEventStream;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException
           4     6       6  any
           8    10      11  any
          11    12      11  any
          15    17      18  any
          18    19      18  any
           0     3      20  any
          22    24      24  any
          26    28      29  any
          29    30      29  any
          33    35      36  any
          36    37      36  any
          40    42      42  any
          44    46      47  any
          47    48      47  any
          51    53      54  any
          54    55      54  any

  private void run(java.security.AccessControlContext);
    descriptor: (Ljava/security/AccessControlContext;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // java.security.AccessControlContext accessControlContext
         0: .line 277
            new jdk.jfr.internal.consumer.AbstractEventStream$1
            dup
            aload 0 /* this */
            invokespecial jdk.jfr.internal.consumer.AbstractEventStream$1.<init>:(Ljdk/jfr/internal/consumer/AbstractEventStream;)V
         1: .line 283
            aload 1 /* accessControlContext */
         2: .line 277
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;
            pop
         3: .line 284
            return
        end local 1 // java.security.AccessControlContext accessControlContext
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    4     0                  this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    4     1  accessControlContext  Ljava/security/AccessControlContext;
    MethodParameters:
                      Name  Flags
      accessControlContext  

  private java.lang.String nextThreadName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
         0: .line 287
            new java.lang.StringBuilder
            dup
            ldc "JFR Event Stream "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic jdk.jfr.internal.consumer.AbstractEventStream.counter:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jfr/internal/consumer/AbstractEventStream;

  public void onMetadata(java.util.function.Consumer<jdk.jfr.consumer.MetadataEvent>);
    descriptor: (Ljava/util/function/Consumer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // java.util.function.Consumer action
         0: .line 292
            aload 1 /* action */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 293
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            dup
            astore 2
            monitorenter
         2: .line 294
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            getfield jdk.jfr.internal.consumer.StreamConfiguration.started:Z
            ifeq 4
         3: .line 295
            new java.lang.IllegalStateException
            dup
            ldc "Stream is already started"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 293
      StackMap locals: jdk.jfr.internal.consumer.StreamConfiguration
      StackMap stack:
            aload 2
            monitorexit
         5: goto 8
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: aload 2
            monitorexit
         7: athrow
         8: .line 298
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.streamConfiguration:Ljdk/jfr/internal/consumer/StreamConfiguration;
            aload 1 /* action */
            invokevirtual jdk.jfr.internal.consumer.StreamConfiguration.addMetadataAction:(Ljava/util/function/Consumer;)V
         9: .line 299
            return
        end local 1 // java.util.function.Consumer action
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0    this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0   10     1  action  Ljava/util/function/Consumer<Ljdk/jfr/consumer/MetadataEvent;>;
      Exception table:
        from    to  target  type
           2     5       6  any
           6     7       6  any
    Signature: (Ljava/util/function/Consumer<Ljdk/jfr/consumer/MetadataEvent;>;)V
    MethodParameters:
        Name  Flags
      action  

  protected final void onMetadata(jdk.jfr.internal.consumer.ChunkParser);
    descriptor: (Ljdk/jfr/internal/consumer/ChunkParser;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
        start local 1 // jdk.jfr.internal.consumer.ChunkParser parser
         0: .line 302
            aload 1 /* parser */
            invokevirtual jdk.jfr.internal.consumer.ChunkParser.hasStaleMetadata:()Z
            ifeq 8
         1: .line 303
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.dispatcher:Ljdk/jfr/internal/consumer/Dispatcher;
            invokevirtual jdk.jfr.internal.consumer.Dispatcher.hasMetadataHandler:()Z
            ifeq 8
         2: .line 304
            aload 1 /* parser */
            invokevirtual jdk.jfr.internal.consumer.ChunkParser.getEventTypes:()Ljava/util/List;
            astore 2 /* ce */
        start local 2 // java.util.List ce
         3: .line 305
            aload 1 /* parser */
            invokevirtual jdk.jfr.internal.consumer.ChunkParser.getPreviousEventTypes:()Ljava/util/List;
            astore 3 /* pe */
        start local 3 // java.util.List pe
         4: .line 306
            aload 2 /* ce */
            aload 3 /* pe */
            if_acmpeq 7
         5: .line 307
            invokestatic jdk.jfr.internal.consumer.JdkJfrConsumer.instance:()Ljdk/jfr/internal/consumer/JdkJfrConsumer;
            aload 3 /* pe */
            aload 2 /* ce */
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.configurations:Ljava/util/List;
            invokevirtual jdk.jfr.internal.consumer.JdkJfrConsumer.newMetadataEvent:(Ljava/util/List;Ljava/util/List;Ljava/util/List;)Ljdk/jfr/consumer/MetadataEvent;
            astore 4 /* me */
        start local 4 // jdk.jfr.consumer.MetadataEvent me
         6: .line 308
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.dispatcher:Ljdk/jfr/internal/consumer/Dispatcher;
            aload 4 /* me */
            invokevirtual jdk.jfr.internal.consumer.Dispatcher.runMetadataActions:(Ljdk/jfr/consumer/MetadataEvent;)V
        end local 4 // jdk.jfr.consumer.MetadataEvent me
         7: .line 310
      StackMap locals: java.util.List java.util.List
      StackMap stack:
            aload 1 /* parser */
            iconst_0
            invokevirtual jdk.jfr.internal.consumer.ChunkParser.setStaleMetadata:(Z)V
        end local 3 // java.util.List pe
        end local 2 // java.util.List ce
         8: .line 313
      StackMap locals:
      StackMap stack:
            return
        end local 1 // jdk.jfr.internal.consumer.ChunkParser parser
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Ljdk/jfr/internal/consumer/AbstractEventStream;
            0    9     1  parser  Ljdk/jfr/internal/consumer/ChunkParser;
            3    8     2      ce  Ljava/util/List<Ljdk/jfr/EventType;>;
            4    8     3      pe  Ljava/util/List<Ljdk/jfr/EventType;>;
            6    7     4      me  Ljdk/jfr/consumer/MetadataEvent;
    MethodParameters:
        Name  Flags
      parser  

  private void lambda$0();
    descriptor: ()V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
         0: .line 59
            aload 0 /* this */
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.dispatcher:()Ljdk/jfr/internal/consumer/Dispatcher;
            invokevirtual jdk.jfr.internal.consumer.Dispatcher.runFlushActions:()V
            return
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jfr/internal/consumer/AbstractEventStream;

  private void lambda$1();
    descriptor: ()V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
         0: .line 221
            aload 0 /* this */
            aload 0 /* this */
            getfield jdk.jfr.internal.consumer.AbstractEventStream.accessControllerContext:Ljava/security/AccessControlContext;
            invokevirtual jdk.jfr.internal.consumer.AbstractEventStream.run:(Ljava/security/AccessControlContext;)V
            return
        end local 0 // jdk.jfr.internal.consumer.AbstractEventStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jfr/internal/consumer/AbstractEventStream;
}
SourceFile: "AbstractEventStream.java"
NestMembers:
  jdk.jfr.internal.consumer.AbstractEventStream$1
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  jdk.jfr.internal.consumer.AbstractEventStream$1