class org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier implements reactor.core.CoreSubscriber<T>, org.reactivestreams.Subscription, org.reactivestreams.Publisher<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier
  super_class: java.lang.Object
{
  private final org.springframework.http.server.reactive.ChannelSendOperator<T>.WriteCompletionBarrier writeCompletionBarrier;
    descriptor: Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteCompletionBarrier;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/springframework/http/server/reactive/ChannelSendOperator<TT;>.WriteCompletionBarrier;

  private org.reactivestreams.Subscription subscription;
    descriptor: Lorg/reactivestreams/Subscription;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private T item;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Signature: TT;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private java.lang.Throwable error;
    descriptor: Ljava/lang/Throwable;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private boolean completed;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

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

  private org.springframework.http.server.reactive.ChannelSendOperator$State state;
    descriptor: Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lorg/springframework/http/server/reactive/ChannelSendOperator$State;

  private org.reactivestreams.Subscriber<? super T> writeSubscriber;
    descriptor: Lorg/reactivestreams/Subscriber;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lorg/reactivestreams/Subscriber<-TT;>;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  final org.springframework.http.server.reactive.ChannelSendOperator this$0;
    descriptor: Lorg/springframework/http/server/reactive/ChannelSendOperator;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(reactor.core.CoreSubscriber<? super java.lang.Void>);
    descriptor: (Lorg/springframework/http/server/reactive/ChannelSendOperator;Lreactor/core/CoreSubscriber;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
        start local 2 // reactor.core.CoreSubscriber completionSubscriber
         0: .line 152
            aload 0 /* this */
            aload 1
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.this$0:Lorg/springframework/http/server/reactive/ChannelSendOperator;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 139
            aload 0 /* this */
            iconst_0
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.completed:Z
         2: .line 145
            aload 0 /* this */
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.NEW:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
         3: .line 153
            aload 0 /* this */
            new org.springframework.http.server.reactive.ChannelSendOperator$WriteCompletionBarrier
            dup
            aload 1
            aload 2 /* completionSubscriber */
            aload 0 /* this */
            invokespecial org.springframework.http.server.reactive.ChannelSendOperator$WriteCompletionBarrier.<init>:(Lorg/springframework/http/server/reactive/ChannelSendOperator;Lreactor/core/CoreSubscriber;Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteBarrier;)V
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeCompletionBarrier:Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteCompletionBarrier;
         4: .line 154
            return
        end local 2 // reactor.core.CoreSubscriber completionSubscriber
        end local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    5     0                  this  Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteBarrier;
            0    5     2  completionSubscriber  Lreactor/core/CoreSubscriber<-Ljava/lang/Void;>;
    Signature: (Lreactor/core/CoreSubscriber<-Ljava/lang/Void;>;)V
    MethodParameters:
                      Name  Flags
      this$0                final
      completionSubscriber  

  public final void onSubscribe(org.reactivestreams.Subscription);
    descriptor: (Lorg/reactivestreams/Subscription;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
        start local 1 // org.reactivestreams.Subscription s
         0: .line 161
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.subscription:Lorg/reactivestreams/Subscription;
            aload 1 /* s */
            invokestatic reactor.core.publisher.Operators.validate:(Lorg/reactivestreams/Subscription;Lorg/reactivestreams/Subscription;)Z
            ifeq 4
         1: .line 162
            aload 0 /* this */
            aload 1 /* s */
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.subscription:Lorg/reactivestreams/Subscription;
         2: .line 163
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeCompletionBarrier:Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteCompletionBarrier;
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteCompletionBarrier.connect:()V
         3: .line 164
            aload 1 /* s */
            lconst_1
            invokeinterface org.reactivestreams.Subscription.request:(J)V
         4: .line 166
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.reactivestreams.Subscription s
        end local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteBarrier;
            0    5     1     s  Lorg/reactivestreams/Subscription;
    MethodParameters:
      Name  Flags
      s     

  public final void onNext();
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
        start local 1 // java.lang.Object item
         0: .line 170
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.READY_TO_WRITE:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            if_acmpne 3
         1: .line 171
            aload 0 /* this */
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.requiredWriteSubscriber:()Lorg/reactivestreams/Subscriber;
            aload 1 /* item */
            invokeinterface org.reactivestreams.Subscriber.onNext:(Ljava/lang/Object;)V
         2: .line 172
            return
         3: .line 175
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         4: .line 176
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.READY_TO_WRITE:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            if_acmpne 7
         5: .line 177
            aload 0 /* this */
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.requiredWriteSubscriber:()Lorg/reactivestreams/Subscriber;
            aload 1 /* item */
            invokeinterface org.reactivestreams.Subscriber.onNext:(Ljava/lang/Object;)V
         6: .line 178
            goto 15
         7: .line 179
      StackMap locals: org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.NEW:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            if_acmpne 12
         8: .line 180
            aload 0 /* this */
            aload 1 /* item */
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.item:Ljava/lang/Object;
         9: .line 181
            aload 0 /* this */
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.FIRST_SIGNAL_RECEIVED:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
        10: .line 182
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.this$0:Lorg/springframework/http/server/reactive/ChannelSendOperator;
            getfield org.springframework.http.server.reactive.ChannelSendOperator.writeFunction:Ljava/util/function/Function;
            aload 0 /* this */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.reactivestreams.Publisher
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeCompletionBarrier:Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteCompletionBarrier;
            invokeinterface org.reactivestreams.Publisher.subscribe:(Lorg/reactivestreams/Subscriber;)V
        11: .line 183
            goto 15
        12: .line 185
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.subscription:Lorg/reactivestreams/Subscription;
            ifnull 14
        13: .line 186
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.subscription:Lorg/reactivestreams/Subscription;
            invokeinterface org.reactivestreams.Subscription.cancel:()V
        14: .line 188
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeCompletionBarrier:Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteCompletionBarrier;
            new java.lang.IllegalStateException
            dup
            ldc "Unexpected item."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteCompletionBarrier.onError:(Ljava/lang/Throwable;)V
        15: .line 175
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        16: goto 19
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: aload 2
            monitorexit
        18: athrow
        19: .line 191
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Object item
        end local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   20     0  this  Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteBarrier;
            0   20     1  item  TT;
      Exception table:
        from    to  target  type
           4    16      17  any
          17    18      17  any
    Signature: (TT;)V
    MethodParameters:
      Name  Flags
      item  

  private org.reactivestreams.Subscriber<? super T> requiredWriteSubscriber();
    descriptor: ()Lorg/reactivestreams/Subscriber;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
         0: .line 194
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeSubscriber:Lorg/reactivestreams/Subscriber;
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ldc "No write subscriber"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         3: .line 195
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeSubscriber:Lorg/reactivestreams/Subscriber;
            areturn
        end local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteBarrier;
    Signature: ()Lorg/reactivestreams/Subscriber<-TT;>;

  public final void onError(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
        start local 1 // java.lang.Throwable ex
         0: .line 200
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.READY_TO_WRITE:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            if_acmpne 3
         1: .line 201
            aload 0 /* this */
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.requiredWriteSubscriber:()Lorg/reactivestreams/Subscriber;
            aload 1 /* ex */
            invokeinterface org.reactivestreams.Subscriber.onError:(Ljava/lang/Throwable;)V
         2: .line 202
            return
         3: .line 204
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         4: .line 205
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.READY_TO_WRITE:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            if_acmpne 7
         5: .line 206
            aload 0 /* this */
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.requiredWriteSubscriber:()Lorg/reactivestreams/Subscriber;
            aload 1 /* ex */
            invokeinterface org.reactivestreams.Subscriber.onError:(Ljava/lang/Throwable;)V
         6: .line 207
            goto 12
         7: .line 208
      StackMap locals: org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.NEW:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            if_acmpne 11
         8: .line 209
            aload 0 /* this */
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.FIRST_SIGNAL_RECEIVED:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
         9: .line 210
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeCompletionBarrier:Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteCompletionBarrier;
            aload 1 /* ex */
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteCompletionBarrier.onError:(Ljava/lang/Throwable;)V
        10: .line 211
            goto 12
        11: .line 213
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ex */
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.error:Ljava/lang/Throwable;
        12: .line 204
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        13: goto 16
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: aload 2
            monitorexit
        15: athrow
        16: .line 216
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Throwable ex
        end local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteBarrier;
            0   17     1    ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4    13      14  any
          14    15      14  any
    MethodParameters:
      Name  Flags
      ex    

  public final void onComplete();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
         0: .line 220
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.READY_TO_WRITE:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            if_acmpne 3
         1: .line 221
            aload 0 /* this */
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.requiredWriteSubscriber:()Lorg/reactivestreams/Subscriber;
            invokeinterface org.reactivestreams.Subscriber.onComplete:()V
         2: .line 222
            return
         3: .line 224
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         4: .line 225
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.READY_TO_WRITE:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            if_acmpne 7
         5: .line 226
            aload 0 /* this */
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.requiredWriteSubscriber:()Lorg/reactivestreams/Subscriber;
            invokeinterface org.reactivestreams.Subscriber.onComplete:()V
         6: .line 227
            goto 13
         7: .line 228
      StackMap locals: org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.NEW:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            if_acmpne 12
         8: .line 229
            aload 0 /* this */
            iconst_1
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.completed:Z
         9: .line 230
            aload 0 /* this */
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.FIRST_SIGNAL_RECEIVED:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
        10: .line 231
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.this$0:Lorg/springframework/http/server/reactive/ChannelSendOperator;
            getfield org.springframework.http.server.reactive.ChannelSendOperator.writeFunction:Ljava/util/function/Function;
            aload 0 /* this */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.reactivestreams.Publisher
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeCompletionBarrier:Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteCompletionBarrier;
            invokeinterface org.reactivestreams.Publisher.subscribe:(Lorg/reactivestreams/Subscriber;)V
        11: .line 232
            goto 13
        12: .line 234
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.completed:Z
        13: .line 224
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        14: goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: aload 1
            monitorexit
        16: athrow
        17: .line 237
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   18     0  this  Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteBarrier;
      Exception table:
        from    to  target  type
           4    14      15  any
          15    16      15  any

  public reactor.util.context.Context currentContext();
    descriptor: ()Lreactor/util/context/Context;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
         0: .line 241
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeCompletionBarrier:Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteCompletionBarrier;
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteCompletionBarrier.currentContext:()Lreactor/util/context/Context;
            areturn
        end local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteBarrier;

  public void request(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
        start local 1 // long n
         0: .line 249
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.subscription:Lorg/reactivestreams/Subscription;
            astore 3 /* s */
        start local 3 // org.reactivestreams.Subscription s
         1: .line 250
            aload 3 /* s */
            ifnonnull 3
         2: .line 251
            return
         3: .line 253
      StackMap locals: org.reactivestreams.Subscription
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.READY_TO_WRITE:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            if_acmpne 6
         4: .line 254
            aload 3 /* s */
            lload 1 /* n */
            invokeinterface org.reactivestreams.Subscription.request:(J)V
         5: .line 255
            return
         6: .line 257
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         7: .line 258
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeSubscriber:Lorg/reactivestreams/Subscriber;
            ifnull 26
         8: .line 259
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.EMITTING_CACHED_SIGNALS:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            if_acmpne 12
         9: .line 260
            aload 0 /* this */
            lload 1 /* n */
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.demandBeforeReadyToWrite:J
        10: .line 261
            aload 4
            monitorexit
        11: return
        12: .line 264
      StackMap locals: org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier
      StackMap stack:
            aload 0 /* this */
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.EMITTING_CACHED_SIGNALS:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
        13: .line 265
            aload 0 /* this */
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.emitCachedSignals:()Z
            ifeq 17
        14: .line 274
            aload 0 /* this */
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.READY_TO_WRITE:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
        15: .line 266
            aload 4
            monitorexit
        16: return
        17: .line 268
      StackMap locals:
      StackMap stack:
            lload 1 /* n */
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.demandBeforeReadyToWrite:J
            ladd
            lconst_1
            lsub
            lstore 1 /* n */
        18: .line 269
            lload 1 /* n */
            lconst_0
            lcmp
            ifne 25
        19: .line 274
            aload 0 /* this */
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.READY_TO_WRITE:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
        20: .line 270
            aload 4
            monitorexit
        21: return
        22: .line 273
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        23: .line 274
            aload 0 /* this */
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.READY_TO_WRITE:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
        24: .line 275
            aload 5
            athrow
        25: .line 274
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.springframework.http.server.reactive.ChannelSendOperator$State.READY_TO_WRITE:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.state:Lorg/springframework/http/server/reactive/ChannelSendOperator$State;
        26: .line 257
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        27: goto 30
      StackMap locals:
      StackMap stack: java.lang.Throwable
        28: aload 4
            monitorexit
        29: athrow
        30: .line 278
      StackMap locals:
      StackMap stack:
            aload 3 /* s */
            lload 1 /* n */
            invokeinterface org.reactivestreams.Subscription.request:(J)V
        31: .line 279
            return
        end local 3 // org.reactivestreams.Subscription s
        end local 1 // long n
        end local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   32     0  this  Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteBarrier;
            0   32     1     n  J
            1   32     3     s  Lorg/reactivestreams/Subscription;
      Exception table:
        from    to  target  type
          12    14      22  any
          17    19      22  any
           7    11      28  any
          12    16      28  any
          17    21      28  any
          22    27      28  any
          28    29      28  any
    MethodParameters:
      Name  Flags
      n     

  private boolean emitCachedSignals();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
         0: .line 282
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.item:Ljava/lang/Object;
            ifnull 2
         1: .line 283
            aload 0 /* this */
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.requiredWriteSubscriber:()Lorg/reactivestreams/Subscriber;
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.item:Ljava/lang/Object;
            invokeinterface org.reactivestreams.Subscriber.onNext:(Ljava/lang/Object;)V
         2: .line 285
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.error:Ljava/lang/Throwable;
            ifnull 5
         3: .line 286
            aload 0 /* this */
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.requiredWriteSubscriber:()Lorg/reactivestreams/Subscriber;
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.error:Ljava/lang/Throwable;
            invokeinterface org.reactivestreams.Subscriber.onError:(Ljava/lang/Throwable;)V
         4: .line 287
            iconst_1
            ireturn
         5: .line 289
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.completed:Z
            ifeq 8
         6: .line 290
            aload 0 /* this */
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.requiredWriteSubscriber:()Lorg/reactivestreams/Subscriber;
            invokeinterface org.reactivestreams.Subscriber.onComplete:()V
         7: .line 291
            iconst_1
            ireturn
         8: .line 293
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteBarrier;

  public void cancel();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
         0: .line 298
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.subscription:Lorg/reactivestreams/Subscription;
            astore 1 /* s */
        start local 1 // org.reactivestreams.Subscription s
         1: .line 299
            aload 1 /* s */
            ifnull 4
         2: .line 300
            aload 0 /* this */
            aconst_null
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.subscription:Lorg/reactivestreams/Subscription;
         3: .line 301
            aload 1 /* s */
            invokeinterface org.reactivestreams.Subscription.cancel:()V
         4: .line 303
      StackMap locals: org.reactivestreams.Subscription
      StackMap stack:
            return
        end local 1 // org.reactivestreams.Subscription s
        end local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteBarrier;
            1    5     1     s  Lorg/reactivestreams/Subscription;

  public void subscribe(org.reactivestreams.Subscriber<? super T>);
    descriptor: (Lorg/reactivestreams/Subscriber;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
        start local 1 // org.reactivestreams.Subscriber writeSubscriber
         0: .line 310
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         1: .line 311
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeSubscriber:Lorg/reactivestreams/Subscriber;
            ifnonnull 2
            iconst_1
            goto 3
      StackMap locals: org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "Only one write subscriber supported"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         4: .line 312
            aload 0 /* this */
            aload 1 /* writeSubscriber */
            putfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeSubscriber:Lorg/reactivestreams/Subscriber;
         5: .line 313
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.error:Ljava/lang/Throwable;
            ifnonnull 6
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.completed:Z
            ifeq 9
         6: .line 314
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeSubscriber:Lorg/reactivestreams/Subscriber;
            invokestatic reactor.core.publisher.Operators.emptySubscription:()Lorg/reactivestreams/Subscription;
            invokeinterface org.reactivestreams.Subscriber.onSubscribe:(Lorg/reactivestreams/Subscription;)V
         7: .line 315
            aload 0 /* this */
            invokevirtual org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.emitCachedSignals:()Z
            pop
         8: .line 316
            goto 10
         9: .line 318
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier.writeSubscriber:Lorg/reactivestreams/Subscriber;
            aload 0 /* this */
            invokeinterface org.reactivestreams.Subscriber.onSubscribe:(Lorg/reactivestreams/Subscription;)V
        10: .line 310
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        11: goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: aload 2
            monitorexit
        13: athrow
        14: .line 321
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.reactivestreams.Subscriber writeSubscriber
        end local 0 // org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   15     0             this  Lorg/springframework/http/server/reactive/ChannelSendOperator$WriteBarrier;
            0   15     1  writeSubscriber  Lorg/reactivestreams/Subscriber<-TT;>;
      Exception table:
        from    to  target  type
           1    11      12  any
          12    13      12  any
    Signature: (Lorg/reactivestreams/Subscriber<-TT;>;)V
    MethodParameters:
                 Name  Flags
      writeSubscriber  
}
Signature: Ljava/lang/Object;Lreactor/core/CoreSubscriber<TT;>;Lorg/reactivestreams/Subscription;Lorg/reactivestreams/Publisher<TT;>;
SourceFile: "ChannelSendOperator.java"
NestHost: org.springframework.http.server.reactive.ChannelSendOperator
InnerClasses:
  private final State = org.springframework.http.server.reactive.ChannelSendOperator$State of org.springframework.http.server.reactive.ChannelSendOperator
  private WriteBarrier = org.springframework.http.server.reactive.ChannelSendOperator$WriteBarrier of org.springframework.http.server.reactive.ChannelSendOperator
  private WriteCompletionBarrier = org.springframework.http.server.reactive.ChannelSendOperator$WriteCompletionBarrier of org.springframework.http.server.reactive.ChannelSendOperator