public class org.springframework.http.codec.EncoderHttpMessageWriter<T> implements org.springframework.http.codec.HttpMessageWriter<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.http.codec.EncoderHttpMessageWriter
  super_class: java.lang.Object
{
  private final org.springframework.core.codec.Encoder<T> encoder;
    descriptor: Lorg/springframework/core/codec/Encoder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/springframework/core/codec/Encoder<TT;>;

  private final java.util.List<org.springframework.http.MediaType> mediaTypes;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/springframework/http/MediaType;>;

  private final org.springframework.http.MediaType defaultMediaType;
    descriptor: Lorg/springframework/http/MediaType;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public void <init>(org.springframework.core.codec.Encoder<T>);
    descriptor: (Lorg/springframework/core/codec/Encoder;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
        start local 1 // org.springframework.core.codec.Encoder encoder
         0: .line 68
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 69
            aload 1 /* encoder */
            ldc "Encoder is required"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         2: .line 70
            aload 1 /* encoder */
            invokestatic org.springframework.http.codec.EncoderHttpMessageWriter.initLogger:(Lorg/springframework/core/codec/Encoder;)V
         3: .line 71
            aload 0 /* this */
            aload 1 /* encoder */
            putfield org.springframework.http.codec.EncoderHttpMessageWriter.encoder:Lorg/springframework/core/codec/Encoder;
         4: .line 72
            aload 0 /* this */
            aload 1 /* encoder */
            invokeinterface org.springframework.core.codec.Encoder.getEncodableMimeTypes:()Ljava/util/List;
            invokestatic org.springframework.http.MediaType.asMediaTypes:(Ljava/util/List;)Ljava/util/List;
            putfield org.springframework.http.codec.EncoderHttpMessageWriter.mediaTypes:Ljava/util/List;
         5: .line 73
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.http.codec.EncoderHttpMessageWriter.mediaTypes:Ljava/util/List;
            invokestatic org.springframework.http.codec.EncoderHttpMessageWriter.initDefaultMediaType:(Ljava/util/List;)Lorg/springframework/http/MediaType;
            putfield org.springframework.http.codec.EncoderHttpMessageWriter.defaultMediaType:Lorg/springframework/http/MediaType;
         6: .line 74
            return
        end local 1 // org.springframework.core.codec.Encoder encoder
        end local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/springframework/http/codec/EncoderHttpMessageWriter<TT;>;
            0    7     1  encoder  Lorg/springframework/core/codec/Encoder<TT;>;
    Signature: (Lorg/springframework/core/codec/Encoder<TT;>;)V
    MethodParameters:
         Name  Flags
      encoder  

  private static void initLogger(org.springframework.core.codec.Encoder<?>);
    descriptor: (Lorg/springframework/core/codec/Encoder;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.springframework.core.codec.Encoder encoder
         0: .line 77
            aload 0 /* encoder */
            instanceof org.springframework.core.codec.AbstractEncoder
            ifeq 4
         1: .line 78
            aload 0 /* encoder */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "org.springframework.core.codec"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 4
         2: .line 79
            aload 0 /* encoder */
            checkcast org.springframework.core.codec.AbstractEncoder
            invokevirtual org.springframework.core.codec.AbstractEncoder.getLogger:()Lorg/apache/commons/logging/Log;
            invokestatic org.springframework.http.HttpLogging.forLog:(Lorg/apache/commons/logging/Log;)Lorg/apache/commons/logging/Log;
            astore 1 /* logger */
        start local 1 // org.apache.commons.logging.Log logger
         3: .line 80
            aload 0 /* encoder */
            checkcast org.springframework.core.codec.AbstractEncoder
            aload 1 /* logger */
            invokevirtual org.springframework.core.codec.AbstractEncoder.setLogger:(Lorg/apache/commons/logging/Log;)V
        end local 1 // org.apache.commons.logging.Log logger
         4: .line 82
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.springframework.core.codec.Encoder encoder
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  encoder  Lorg/springframework/core/codec/Encoder<*>;
            3    4     1   logger  Lorg/apache/commons/logging/Log;
    Signature: (Lorg/springframework/core/codec/Encoder<*>;)V
    MethodParameters:
         Name  Flags
      encoder  

  private static org.springframework.http.MediaType initDefaultMediaType(java.util.List<org.springframework.http.MediaType>);
    descriptor: (Ljava/util/List;)Lorg/springframework/http/MediaType;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.List mediaTypes
         0: .line 86
            aload 0 /* mediaTypes */
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            invokedynamic test()Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  org/springframework/util/MimeType.isConcrete()Z (5)
                  (Lorg/springframework/http/MediaType;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
            invokeinterface java.util.stream.Stream.findFirst:()Ljava/util/Optional;
            aconst_null
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.http.MediaType
            areturn
        end local 0 // java.util.List mediaTypes
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  mediaTypes  Ljava/util/List<Lorg/springframework/http/MediaType;>;
    Signature: (Ljava/util/List<Lorg/springframework/http/MediaType;>;)Lorg/springframework/http/MediaType;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      mediaTypes  

  public org.springframework.core.codec.Encoder<T> getEncoder();
    descriptor: ()Lorg/springframework/core/codec/Encoder;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
         0: .line 94
            aload 0 /* this */
            getfield org.springframework.http.codec.EncoderHttpMessageWriter.encoder:Lorg/springframework/core/codec/Encoder;
            areturn
        end local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/http/codec/EncoderHttpMessageWriter<TT;>;
    Signature: ()Lorg/springframework/core/codec/Encoder<TT;>;

  public java.util.List<org.springframework.http.MediaType> getWritableMediaTypes();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
         0: .line 99
            aload 0 /* this */
            getfield org.springframework.http.codec.EncoderHttpMessageWriter.mediaTypes:Ljava/util/List;
            areturn
        end local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/http/codec/EncoderHttpMessageWriter<TT;>;
    Signature: ()Ljava/util/List<Lorg/springframework/http/MediaType;>;

  public boolean canWrite(org.springframework.core.ResolvableType, org.springframework.http.MediaType);
    descriptor: (Lorg/springframework/core/ResolvableType;Lorg/springframework/http/MediaType;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
        start local 1 // org.springframework.core.ResolvableType elementType
        start local 2 // org.springframework.http.MediaType mediaType
         0: .line 105
            aload 0 /* this */
            getfield org.springframework.http.codec.EncoderHttpMessageWriter.encoder:Lorg/springframework/core/codec/Encoder;
            aload 1 /* elementType */
            aload 2 /* mediaType */
            invokeinterface org.springframework.core.codec.Encoder.canEncode:(Lorg/springframework/core/ResolvableType;Lorg/springframework/util/MimeType;)Z
            ireturn
        end local 2 // org.springframework.http.MediaType mediaType
        end local 1 // org.springframework.core.ResolvableType elementType
        end local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/springframework/http/codec/EncoderHttpMessageWriter<TT;>;
            0    1     1  elementType  Lorg/springframework/core/ResolvableType;
            0    1     2    mediaType  Lorg/springframework/http/MediaType;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
             Name  Flags
      elementType  
      mediaType    

  public reactor.core.publisher.Mono<java.lang.Void> write(org.reactivestreams.Publisher<? extends T>, org.springframework.core.ResolvableType, org.springframework.http.MediaType, org.springframework.http.ReactiveHttpOutputMessage, java.util.Map<java.lang.String, java.lang.Object>);
    descriptor: (Lorg/reactivestreams/Publisher;Lorg/springframework/core/ResolvableType;Lorg/springframework/http/MediaType;Lorg/springframework/http/ReactiveHttpOutputMessage;Ljava/util/Map;)Lreactor/core/publisher/Mono;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=9, args_size=6
        start local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
        start local 1 // org.reactivestreams.Publisher inputStream
        start local 2 // org.springframework.core.ResolvableType elementType
        start local 3 // org.springframework.http.MediaType mediaType
        start local 4 // org.springframework.http.ReactiveHttpOutputMessage message
        start local 5 // java.util.Map hints
         0: .line 113
            aload 0 /* this */
            aload 4 /* message */
            aload 3 /* mediaType */
            invokevirtual org.springframework.http.codec.EncoderHttpMessageWriter.updateContentType:(Lorg/springframework/http/ReactiveHttpOutputMessage;Lorg/springframework/http/MediaType;)Lorg/springframework/http/MediaType;
            astore 6 /* contentType */
        start local 6 // org.springframework.http.MediaType contentType
         1: .line 115
            aload 0 /* this */
            getfield org.springframework.http.codec.EncoderHttpMessageWriter.encoder:Lorg/springframework/core/codec/Encoder;
         2: .line 116
            aload 1 /* inputStream */
            aload 4 /* message */
            invokeinterface org.springframework.http.ReactiveHttpOutputMessage.bufferFactory:()Lorg/springframework/core/io/buffer/DataBufferFactory;
            aload 2 /* elementType */
            aload 6 /* contentType */
            aload 5 /* hints */
         3: .line 115
            invokeinterface org.springframework.core.codec.Encoder.encode:(Lorg/reactivestreams/Publisher;Lorg/springframework/core/io/buffer/DataBufferFactory;Lorg/springframework/core/ResolvableType;Lorg/springframework/util/MimeType;Ljava/util/Map;)Lreactor/core/publisher/Flux;
            astore 7 /* body */
        start local 7 // reactor.core.publisher.Flux body
         4: .line 118
            aload 1 /* inputStream */
            instanceof reactor.core.publisher.Mono
            ifeq 10
         5: .line 119
            aload 4 /* message */
            invokeinterface org.springframework.http.ReactiveHttpOutputMessage.getHeaders:()Lorg/springframework/http/HttpHeaders;
            astore 8 /* headers */
        start local 8 // org.springframework.http.HttpHeaders headers
         6: .line 120
            aload 7 /* body */
            invokestatic reactor.core.publisher.Mono.from:(Lorg/reactivestreams/Publisher;)Lreactor/core/publisher/Mono;
         7: .line 121
            aload 8 /* headers */
            aload 4 /* message */
            invokedynamic get(Lorg/springframework/http/HttpHeaders;Lorg/springframework/http/ReactiveHttpOutputMessage;)Ljava/util/function/Supplier;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  org/springframework/http/codec/EncoderHttpMessageWriter.lambda$1(Lorg/springframework/http/HttpHeaders;Lorg/springframework/http/ReactiveHttpOutputMessage;)Lreactor/core/publisher/Mono; (6)
                  ()Lreactor/core/publisher/Mono;
            invokestatic reactor.core.publisher.Mono.defer:(Ljava/util/function/Supplier;)Lreactor/core/publisher/Mono;
            invokevirtual reactor.core.publisher.Mono.switchIfEmpty:(Lreactor/core/publisher/Mono;)Lreactor/core/publisher/Mono;
         8: .line 125
            aload 8 /* headers */
            aload 4 /* message */
            invokedynamic apply(Lorg/springframework/http/HttpHeaders;Lorg/springframework/http/ReactiveHttpOutputMessage;)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  org/springframework/http/codec/EncoderHttpMessageWriter.lambda$2(Lorg/springframework/http/HttpHeaders;Lorg/springframework/http/ReactiveHttpOutputMessage;Lorg/springframework/core/io/buffer/DataBuffer;)Lreactor/core/publisher/Mono; (6)
                  (Lorg/springframework/core/io/buffer/DataBuffer;)Lreactor/core/publisher/Mono;
            invokevirtual reactor.core.publisher.Mono.flatMap:(Ljava/util/function/Function;)Lreactor/core/publisher/Mono;
         9: .line 120
            areturn
        end local 8 // org.springframework.http.HttpHeaders headers
        10: .line 131
      StackMap locals: org.springframework.http.MediaType reactor.core.publisher.Flux
      StackMap stack:
            aload 0 /* this */
            aload 6 /* contentType */
            invokevirtual org.springframework.http.codec.EncoderHttpMessageWriter.isStreamingMediaType:(Lorg/springframework/http/MediaType;)Z
            ifeq 12
        11: .line 132
            aload 4 /* message */
            aload 7 /* body */
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  reactor/core/publisher/Flux.just(Ljava/lang/Object;)Lreactor/core/publisher/Flux; (6)
                  (Lorg/springframework/core/io/buffer/DataBuffer;)Lreactor/core/publisher/Flux;
            invokevirtual reactor.core.publisher.Flux.map:(Ljava/util/function/Function;)Lreactor/core/publisher/Flux;
            invokeinterface org.springframework.http.ReactiveHttpOutputMessage.writeAndFlushWith:(Lorg/reactivestreams/Publisher;)Lreactor/core/publisher/Mono;
            goto 13
      StackMap locals:
      StackMap stack:
        12: aload 4 /* message */
            aload 7 /* body */
            invokeinterface org.springframework.http.ReactiveHttpOutputMessage.writeWith:(Lorg/reactivestreams/Publisher;)Lreactor/core/publisher/Mono;
        13: .line 131
      StackMap locals:
      StackMap stack: reactor.core.publisher.Mono
            areturn
        end local 7 // reactor.core.publisher.Flux body
        end local 6 // org.springframework.http.MediaType contentType
        end local 5 // java.util.Map hints
        end local 4 // org.springframework.http.ReactiveHttpOutputMessage message
        end local 3 // org.springframework.http.MediaType mediaType
        end local 2 // org.springframework.core.ResolvableType elementType
        end local 1 // org.reactivestreams.Publisher inputStream
        end local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0         this  Lorg/springframework/http/codec/EncoderHttpMessageWriter<TT;>;
            0   14     1  inputStream  Lorg/reactivestreams/Publisher<+TT;>;
            0   14     2  elementType  Lorg/springframework/core/ResolvableType;
            0   14     3    mediaType  Lorg/springframework/http/MediaType;
            0   14     4      message  Lorg/springframework/http/ReactiveHttpOutputMessage;
            0   14     5        hints  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            1   14     6  contentType  Lorg/springframework/http/MediaType;
            4   14     7         body  Lreactor/core/publisher/Flux<Lorg/springframework/core/io/buffer/DataBuffer;>;
            6   10     8      headers  Lorg/springframework/http/HttpHeaders;
    Signature: (Lorg/reactivestreams/Publisher<+TT;>;Lorg/springframework/core/ResolvableType;Lorg/springframework/http/MediaType;Lorg/springframework/http/ReactiveHttpOutputMessage;Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;)Lreactor/core/publisher/Mono<Ljava/lang/Void;>;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        org.springframework.lang.Nullable()
      3:
      4:
    MethodParameters:
             Name  Flags
      inputStream  
      elementType  
      mediaType    
      message      
      hints        

  private org.springframework.http.MediaType updateContentType(org.springframework.http.ReactiveHttpOutputMessage, org.springframework.http.MediaType);
    descriptor: (Lorg/springframework/http/ReactiveHttpOutputMessage;Lorg/springframework/http/MediaType;)Lorg/springframework/http/MediaType;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
        start local 1 // org.springframework.http.ReactiveHttpOutputMessage message
        start local 2 // org.springframework.http.MediaType mediaType
         0: .line 137
            aload 1 /* message */
            invokeinterface org.springframework.http.ReactiveHttpOutputMessage.getHeaders:()Lorg/springframework/http/HttpHeaders;
            invokevirtual org.springframework.http.HttpHeaders.getContentType:()Lorg/springframework/http/MediaType;
            astore 3 /* result */
        start local 3 // org.springframework.http.MediaType result
         1: .line 138
            aload 3 /* result */
            ifnull 3
         2: .line 139
            aload 3 /* result */
            areturn
         3: .line 141
      StackMap locals: org.springframework.http.MediaType
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.http.codec.EncoderHttpMessageWriter.defaultMediaType:Lorg/springframework/http/MediaType;
            astore 4 /* fallback */
        start local 4 // org.springframework.http.MediaType fallback
         4: .line 142
            aload 2 /* mediaType */
            aload 4 /* fallback */
            invokestatic org.springframework.http.codec.EncoderHttpMessageWriter.useFallback:(Lorg/springframework/http/MediaType;Lorg/springframework/http/MediaType;)Z
            ifeq 5
            aload 4 /* fallback */
            goto 6
      StackMap locals: org.springframework.http.MediaType
      StackMap stack:
         5: aload 2 /* mediaType */
      StackMap locals:
      StackMap stack: org.springframework.http.MediaType
         6: astore 3 /* result */
         7: .line 143
            aload 3 /* result */
            ifnull 10
         8: .line 144
            aload 3 /* result */
            aload 4 /* fallback */
            invokestatic org.springframework.http.codec.EncoderHttpMessageWriter.addDefaultCharset:(Lorg/springframework/http/MediaType;Lorg/springframework/http/MediaType;)Lorg/springframework/http/MediaType;
            astore 3 /* result */
         9: .line 145
            aload 1 /* message */
            invokeinterface org.springframework.http.ReactiveHttpOutputMessage.getHeaders:()Lorg/springframework/http/HttpHeaders;
            aload 3 /* result */
            invokevirtual org.springframework.http.HttpHeaders.setContentType:(Lorg/springframework/http/MediaType;)V
        10: .line 147
      StackMap locals:
      StackMap stack:
            aload 3 /* result */
            areturn
        end local 4 // org.springframework.http.MediaType fallback
        end local 3 // org.springframework.http.MediaType result
        end local 2 // org.springframework.http.MediaType mediaType
        end local 1 // org.springframework.http.ReactiveHttpOutputMessage message
        end local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lorg/springframework/http/codec/EncoderHttpMessageWriter<TT;>;
            0   11     1    message  Lorg/springframework/http/ReactiveHttpOutputMessage;
            0   11     2  mediaType  Lorg/springframework/http/MediaType;
            1   11     3     result  Lorg/springframework/http/MediaType;
            4   11     4   fallback  Lorg/springframework/http/MediaType;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
           Name  Flags
      message    
      mediaType  

  private static boolean useFallback(org.springframework.http.MediaType, org.springframework.http.MediaType);
    descriptor: (Lorg/springframework/http/MediaType;Lorg/springframework/http/MediaType;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.http.MediaType main
        start local 1 // org.springframework.http.MediaType fallback
         0: .line 151
            aload 0 /* main */
            ifnull 3
            aload 0 /* main */
            invokevirtual org.springframework.http.MediaType.isConcrete:()Z
            ifeq 3
         1: .line 152
            aload 0 /* main */
            getstatic org.springframework.http.MediaType.APPLICATION_OCTET_STREAM:Lorg/springframework/http/MediaType;
            invokevirtual org.springframework.http.MediaType.equals:(Ljava/lang/Object;)Z
            ifeq 2
            aload 1 /* fallback */
            ifnonnull 3
         2: .line 151
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 1 // org.springframework.http.MediaType fallback
        end local 0 // org.springframework.http.MediaType main
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      main  Lorg/springframework/http/MediaType;
            0    4     1  fallback  Lorg/springframework/http/MediaType;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
          Name  Flags
      main      
      fallback  

  private static org.springframework.http.MediaType addDefaultCharset(org.springframework.http.MediaType, org.springframework.http.MediaType);
    descriptor: (Lorg/springframework/http/MediaType;Lorg/springframework/http/MediaType;)Lorg/springframework/http/MediaType;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.springframework.http.MediaType main
        start local 1 // org.springframework.http.MediaType defaultType
         0: .line 156
            aload 0 /* main */
            invokevirtual org.springframework.http.MediaType.getCharset:()Ljava/nio/charset/Charset;
            ifnonnull 2
            aload 1 /* defaultType */
            ifnull 2
            aload 1 /* defaultType */
            invokevirtual org.springframework.http.MediaType.getCharset:()Ljava/nio/charset/Charset;
            ifnull 2
         1: .line 157
            new org.springframework.http.MediaType
            dup
            aload 0 /* main */
            aload 1 /* defaultType */
            invokevirtual org.springframework.http.MediaType.getCharset:()Ljava/nio/charset/Charset;
            invokespecial org.springframework.http.MediaType.<init>:(Lorg/springframework/http/MediaType;Ljava/nio/charset/Charset;)V
            areturn
         2: .line 159
      StackMap locals:
      StackMap stack:
            aload 0 /* main */
            areturn
        end local 1 // org.springframework.http.MediaType defaultType
        end local 0 // org.springframework.http.MediaType main
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         main  Lorg/springframework/http/MediaType;
            0    3     1  defaultType  Lorg/springframework/http/MediaType;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
             Name  Flags
      main         
      defaultType  

  private boolean isStreamingMediaType(org.springframework.http.MediaType);
    descriptor: (Lorg/springframework/http/MediaType;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
        start local 1 // org.springframework.http.MediaType contentType
         0: .line 163
            aload 1 /* contentType */
            ifnull 5
            aload 0 /* this */
            getfield org.springframework.http.codec.EncoderHttpMessageWriter.encoder:Lorg/springframework/core/codec/Encoder;
            instanceof org.springframework.http.codec.HttpMessageEncoder
            ifeq 5
         1: .line 164
            aload 0 /* this */
            getfield org.springframework.http.codec.EncoderHttpMessageWriter.encoder:Lorg/springframework/core/codec/Encoder;
            checkcast org.springframework.http.codec.HttpMessageEncoder
            invokeinterface org.springframework.http.codec.HttpMessageEncoder.getStreamingMediaTypes:()Ljava/util/List;
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
         2: .line 165
            aload 1 /* contentType */
            invokedynamic test(Lorg/springframework/http/MediaType;)Ljava/util/function/Predicate;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Z
                  org/springframework/http/codec/EncoderHttpMessageWriter.lambda$4(Lorg/springframework/http/MediaType;Lorg/springframework/http/MediaType;)Z (6)
                  (Lorg/springframework/http/MediaType;)Z
            invokeinterface java.util.stream.Stream.anyMatch:(Ljava/util/function/Predicate;)Z
         3: .line 166
            ifeq 5
         4: .line 163
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
        end local 1 // org.springframework.http.MediaType contentType
        end local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lorg/springframework/http/codec/EncoderHttpMessageWriter<TT;>;
            0    6     1  contentType  Lorg/springframework/http/MediaType;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
             Name  Flags
      contentType  

  public reactor.core.publisher.Mono<java.lang.Void> write(org.reactivestreams.Publisher<? extends T>, org.springframework.core.ResolvableType, org.springframework.core.ResolvableType, org.springframework.http.MediaType, org.springframework.http.server.reactive.ServerHttpRequest, org.springframework.http.server.reactive.ServerHttpResponse, java.util.Map<java.lang.String, java.lang.Object>);
    descriptor: (Lorg/reactivestreams/Publisher;Lorg/springframework/core/ResolvableType;Lorg/springframework/core/ResolvableType;Lorg/springframework/http/MediaType;Lorg/springframework/http/server/reactive/ServerHttpRequest;Lorg/springframework/http/server/reactive/ServerHttpResponse;Ljava/util/Map;)Lreactor/core/publisher/Mono;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=9, args_size=8
        start local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
        start local 1 // org.reactivestreams.Publisher inputStream
        start local 2 // org.springframework.core.ResolvableType actualType
        start local 3 // org.springframework.core.ResolvableType elementType
        start local 4 // org.springframework.http.MediaType mediaType
        start local 5 // org.springframework.http.server.reactive.ServerHttpRequest request
        start local 6 // org.springframework.http.server.reactive.ServerHttpResponse response
        start local 7 // java.util.Map hints
         0: .line 177
            aload 7 /* hints */
         1: .line 178
            aload 0 /* this */
            aload 2 /* actualType */
            aload 3 /* elementType */
            aload 4 /* mediaType */
            aload 5 /* request */
            aload 6 /* response */
            invokevirtual org.springframework.http.codec.EncoderHttpMessageWriter.getWriteHints:(Lorg/springframework/core/ResolvableType;Lorg/springframework/core/ResolvableType;Lorg/springframework/http/MediaType;Lorg/springframework/http/server/reactive/ServerHttpRequest;Lorg/springframework/http/server/reactive/ServerHttpResponse;)Ljava/util/Map;
         2: .line 177
            invokestatic org.springframework.core.codec.Hints.merge:(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
            astore 8 /* allHints */
        start local 8 // java.util.Map allHints
         3: .line 180
            aload 0 /* this */
            aload 1 /* inputStream */
            aload 3 /* elementType */
            aload 4 /* mediaType */
            aload 6 /* response */
            aload 8 /* allHints */
            invokevirtual org.springframework.http.codec.EncoderHttpMessageWriter.write:(Lorg/reactivestreams/Publisher;Lorg/springframework/core/ResolvableType;Lorg/springframework/http/MediaType;Lorg/springframework/http/ReactiveHttpOutputMessage;Ljava/util/Map;)Lreactor/core/publisher/Mono;
            areturn
        end local 8 // java.util.Map allHints
        end local 7 // java.util.Map hints
        end local 6 // org.springframework.http.server.reactive.ServerHttpResponse response
        end local 5 // org.springframework.http.server.reactive.ServerHttpRequest request
        end local 4 // org.springframework.http.MediaType mediaType
        end local 3 // org.springframework.core.ResolvableType elementType
        end local 2 // org.springframework.core.ResolvableType actualType
        end local 1 // org.reactivestreams.Publisher inputStream
        end local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/springframework/http/codec/EncoderHttpMessageWriter<TT;>;
            0    4     1  inputStream  Lorg/reactivestreams/Publisher<+TT;>;
            0    4     2   actualType  Lorg/springframework/core/ResolvableType;
            0    4     3  elementType  Lorg/springframework/core/ResolvableType;
            0    4     4    mediaType  Lorg/springframework/http/MediaType;
            0    4     5      request  Lorg/springframework/http/server/reactive/ServerHttpRequest;
            0    4     6     response  Lorg/springframework/http/server/reactive/ServerHttpResponse;
            0    4     7        hints  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            3    4     8     allHints  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
    Signature: (Lorg/reactivestreams/Publisher<+TT;>;Lorg/springframework/core/ResolvableType;Lorg/springframework/core/ResolvableType;Lorg/springframework/http/MediaType;Lorg/springframework/http/server/reactive/ServerHttpRequest;Lorg/springframework/http/server/reactive/ServerHttpResponse;Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;)Lreactor/core/publisher/Mono<Ljava/lang/Void;>;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        org.springframework.lang.Nullable()
      4:
      5:
      6:
    MethodParameters:
             Name  Flags
      inputStream  
      actualType   
      elementType  
      mediaType    
      request      
      response     
      hints        

  protected java.util.Map<java.lang.String, java.lang.Object> getWriteHints(org.springframework.core.ResolvableType, org.springframework.core.ResolvableType, org.springframework.http.MediaType, org.springframework.http.server.reactive.ServerHttpRequest, org.springframework.http.server.reactive.ServerHttpResponse);
    descriptor: (Lorg/springframework/core/ResolvableType;Lorg/springframework/core/ResolvableType;Lorg/springframework/http/MediaType;Lorg/springframework/http/server/reactive/ServerHttpRequest;Lorg/springframework/http/server/reactive/ServerHttpResponse;)Ljava/util/Map;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=7, args_size=6
        start local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
        start local 1 // org.springframework.core.ResolvableType streamType
        start local 2 // org.springframework.core.ResolvableType elementType
        start local 3 // org.springframework.http.MediaType mediaType
        start local 4 // org.springframework.http.server.reactive.ServerHttpRequest request
        start local 5 // org.springframework.http.server.reactive.ServerHttpResponse response
         0: .line 191
            aload 0 /* this */
            getfield org.springframework.http.codec.EncoderHttpMessageWriter.encoder:Lorg/springframework/core/codec/Encoder;
            instanceof org.springframework.http.codec.HttpMessageEncoder
            ifeq 3
         1: .line 192
            aload 0 /* this */
            getfield org.springframework.http.codec.EncoderHttpMessageWriter.encoder:Lorg/springframework/core/codec/Encoder;
            checkcast org.springframework.http.codec.HttpMessageEncoder
            astore 6 /* encoder */
        start local 6 // org.springframework.http.codec.HttpMessageEncoder encoder
         2: .line 193
            aload 6 /* encoder */
            aload 1 /* streamType */
            aload 2 /* elementType */
            aload 3 /* mediaType */
            aload 4 /* request */
            aload 5 /* response */
            invokeinterface org.springframework.http.codec.HttpMessageEncoder.getEncodeHints:(Lorg/springframework/core/ResolvableType;Lorg/springframework/core/ResolvableType;Lorg/springframework/http/MediaType;Lorg/springframework/http/server/reactive/ServerHttpRequest;Lorg/springframework/http/server/reactive/ServerHttpResponse;)Ljava/util/Map;
            areturn
        end local 6 // org.springframework.http.codec.HttpMessageEncoder encoder
         3: .line 195
      StackMap locals:
      StackMap stack:
            invokestatic org.springframework.core.codec.Hints.none:()Ljava/util/Map;
            areturn
        end local 5 // org.springframework.http.server.reactive.ServerHttpResponse response
        end local 4 // org.springframework.http.server.reactive.ServerHttpRequest request
        end local 3 // org.springframework.http.MediaType mediaType
        end local 2 // org.springframework.core.ResolvableType elementType
        end local 1 // org.springframework.core.ResolvableType streamType
        end local 0 // org.springframework.http.codec.EncoderHttpMessageWriter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/springframework/http/codec/EncoderHttpMessageWriter<TT;>;
            0    4     1   streamType  Lorg/springframework/core/ResolvableType;
            0    4     2  elementType  Lorg/springframework/core/ResolvableType;
            0    4     3    mediaType  Lorg/springframework/http/MediaType;
            0    4     4      request  Lorg/springframework/http/server/reactive/ServerHttpRequest;
            0    4     5     response  Lorg/springframework/http/server/reactive/ServerHttpResponse;
            2    3     6      encoder  Lorg/springframework/http/codec/HttpMessageEncoder<*>;
    Signature: (Lorg/springframework/core/ResolvableType;Lorg/springframework/core/ResolvableType;Lorg/springframework/http/MediaType;Lorg/springframework/http/server/reactive/ServerHttpRequest;Lorg/springframework/http/server/reactive/ServerHttpResponse;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        org.springframework.lang.Nullable()
      3:
      4:
    MethodParameters:
             Name  Flags
      streamType   
      elementType  
      mediaType    
      request      
      response     

  private static reactor.core.publisher.Mono lambda$1(org.springframework.http.HttpHeaders, org.springframework.http.ReactiveHttpOutputMessage);
    descriptor: (Lorg/springframework/http/HttpHeaders;Lorg/springframework/http/ReactiveHttpOutputMessage;)Lreactor/core/publisher/Mono;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
         0: .line 122
            aload 0
            lconst_0
            invokevirtual org.springframework.http.HttpHeaders.setContentLength:(J)V
         1: .line 123
            aload 1
            invokeinterface org.springframework.http.ReactiveHttpOutputMessage.setComplete:()Lreactor/core/publisher/Mono;
            invokestatic reactor.core.publisher.Mono.empty:()Lreactor/core/publisher/Mono;
            invokevirtual reactor.core.publisher.Mono.then:(Lreactor/core/publisher/Mono;)Lreactor/core/publisher/Mono;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static reactor.core.publisher.Mono lambda$2(org.springframework.http.HttpHeaders, org.springframework.http.ReactiveHttpOutputMessage, org.springframework.core.io.buffer.DataBuffer);
    descriptor: (Lorg/springframework/http/HttpHeaders;Lorg/springframework/http/ReactiveHttpOutputMessage;Lorg/springframework/core/io/buffer/DataBuffer;)Lreactor/core/publisher/Mono;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
        start local 2 // org.springframework.core.io.buffer.DataBuffer buffer
         0: .line 126
            aload 0
            aload 2 /* buffer */
            invokeinterface org.springframework.core.io.buffer.DataBuffer.readableByteCount:()I
            i2l
            invokevirtual org.springframework.http.HttpHeaders.setContentLength:(J)V
         1: .line 127
            aload 1
            aload 2 /* buffer */
            invokestatic reactor.core.publisher.Mono.just:(Ljava/lang/Object;)Lreactor/core/publisher/Mono;
            invokeinterface org.springframework.http.ReactiveHttpOutputMessage.writeWith:(Lorg/reactivestreams/Publisher;)Lreactor/core/publisher/Mono;
            areturn
        end local 2 // org.springframework.core.io.buffer.DataBuffer buffer
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     2  buffer  Lorg/springframework/core/io/buffer/DataBuffer;

  private static boolean lambda$4(org.springframework.http.MediaType, org.springframework.http.MediaType);
    descriptor: (Lorg/springframework/http/MediaType;Lorg/springframework/http/MediaType;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // org.springframework.http.MediaType streamingMediaType
         0: .line 165
            aload 0
            aload 1 /* streamingMediaType */
            invokevirtual org.springframework.http.MediaType.isCompatibleWith:(Lorg/springframework/http/MediaType;)Z
            ifeq 2
         1: .line 166
            aload 0
            invokevirtual org.springframework.http.MediaType.getParameters:()Ljava/util/Map;
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            aload 1 /* streamingMediaType */
            invokevirtual org.springframework.http.MediaType.getParameters:()Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.containsAll:(Ljava/util/Collection;)Z
            ifeq 2
            iconst_1
            goto 3
      StackMap locals:
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 1 // org.springframework.http.MediaType streamingMediaType
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    4     1  streamingMediaType  Lorg/springframework/http/MediaType;
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Lorg/springframework/http/codec/HttpMessageWriter<TT;>;
SourceFile: "EncoderHttpMessageWriter.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract Entry = java.util.Map$Entry of java.util.Map