public class org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter extends org.springframework.http.codec.EncoderHttpMessageWriter<com.google.protobuf.Message>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter
  super_class: org.springframework.http.codec.EncoderHttpMessageWriter
{
  private static final java.lang.String X_PROTOBUF_SCHEMA_HEADER;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "X-Protobuf-Schema"

  private static final java.lang.String X_PROTOBUF_MESSAGE_HEADER;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "X-Protobuf-Message"

  private static final java.util.concurrent.ConcurrentMap<java.lang.Class<?>, java.lang.reflect.Method> methodCache;
    descriptor: Ljava/util/concurrent/ConcurrentMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/Class<*>;Ljava/lang/reflect/Method;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 58
            new org.springframework.util.ConcurrentReferenceHashMap
            dup
            invokespecial org.springframework.util.ConcurrentReferenceHashMap.<init>:()V
            putstatic org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter.methodCache:Ljava/util/concurrent/ConcurrentMap;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter this
         0: .line 65
            aload 0 /* this */
            new org.springframework.http.codec.protobuf.ProtobufEncoder
            dup
            invokespecial org.springframework.http.codec.protobuf.ProtobufEncoder.<init>:()V
            invokespecial org.springframework.http.codec.EncoderHttpMessageWriter.<init>:(Lorg/springframework/core/codec/Encoder;)V
         1: .line 66
            return
        end local 0 // org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/http/codec/protobuf/ProtobufHttpMessageWriter;

  public void <init>(org.springframework.core.codec.Encoder<com.google.protobuf.Message>);
    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.protobuf.ProtobufHttpMessageWriter this
        start local 1 // org.springframework.core.codec.Encoder encoder
         0: .line 73
            aload 0 /* this */
            aload 1 /* encoder */
            invokespecial org.springframework.http.codec.EncoderHttpMessageWriter.<init>:(Lorg/springframework/core/codec/Encoder;)V
         1: .line 74
            return
        end local 1 // org.springframework.core.codec.Encoder encoder
        end local 0 // org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/springframework/http/codec/protobuf/ProtobufHttpMessageWriter;
            0    2     1  encoder  Lorg/springframework/core/codec/Encoder<Lcom/google/protobuf/Message;>;
    Signature: (Lorg/springframework/core/codec/Encoder<Lcom/google/protobuf/Message;>;)V
    MethodParameters:
         Name  Flags
      encoder  

  public reactor.core.publisher.Mono<java.lang.Void> write(org.reactivestreams.Publisher<? extends com.google.protobuf.Message>, 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.protobuf.ProtobufHttpMessageWriter 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 83
            aload 2 /* elementType */
            invokevirtual org.springframework.core.ResolvableType.toClass:()Ljava/lang/Class;
            invokestatic org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter.getMessageBuilder:(Ljava/lang/Class;)Lcom/google/protobuf/Message$Builder;
            astore 6 /* builder */
        start local 6 // com.google.protobuf.Message$Builder builder
         1: .line 84
            aload 6 /* builder */
            invokeinterface com.google.protobuf.Message$Builder.getDescriptorForType:()Lcom/google/protobuf/Descriptors$Descriptor;
            astore 7 /* descriptor */
        start local 7 // com.google.protobuf.Descriptors$Descriptor descriptor
         2: .line 85
            aload 4 /* message */
            invokeinterface org.springframework.http.ReactiveHttpOutputMessage.getHeaders:()Lorg/springframework/http/HttpHeaders;
            ldc "X-Protobuf-Schema"
            aload 7 /* descriptor */
            invokevirtual com.google.protobuf.Descriptors$Descriptor.getFile:()Lcom/google/protobuf/Descriptors$FileDescriptor;
            invokevirtual com.google.protobuf.Descriptors$FileDescriptor.getName:()Ljava/lang/String;
            invokevirtual org.springframework.http.HttpHeaders.add:(Ljava/lang/String;Ljava/lang/String;)V
         3: .line 86
            aload 4 /* message */
            invokeinterface org.springframework.http.ReactiveHttpOutputMessage.getHeaders:()Lorg/springframework/http/HttpHeaders;
            ldc "X-Protobuf-Message"
            aload 7 /* descriptor */
            invokevirtual com.google.protobuf.Descriptors$Descriptor.getFullName:()Ljava/lang/String;
            invokevirtual org.springframework.http.HttpHeaders.add:(Ljava/lang/String;Ljava/lang/String;)V
         4: .line 87
            aload 1 /* inputStream */
            instanceof reactor.core.publisher.Flux
            ifeq 12
         5: .line 88
            aload 3 /* mediaType */
            ifnonnull 8
         6: .line 89
            aload 4 /* message */
            invokeinterface org.springframework.http.ReactiveHttpOutputMessage.getHeaders:()Lorg/springframework/http/HttpHeaders;
            aload 0 /* this */
            invokevirtual org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter.getEncoder:()Lorg/springframework/core/codec/Encoder;
            checkcast org.springframework.http.codec.HttpMessageEncoder
            invokeinterface org.springframework.http.codec.HttpMessageEncoder.getStreamingMediaTypes:()Ljava/util/List;
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.springframework.http.MediaType
            invokevirtual org.springframework.http.HttpHeaders.setContentType:(Lorg/springframework/http/MediaType;)V
         7: .line 90
            goto 12
         8: .line 91
      StackMap locals: com.google.protobuf.Message$Builder com.google.protobuf.Descriptors$Descriptor
      StackMap stack:
            ldc "true"
            aload 3 /* mediaType */
            invokevirtual org.springframework.http.MediaType.getParameters:()Ljava/util/Map;
            ldc "delimited"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
         9: .line 92
            new java.util.HashMap
            dup
            aload 3 /* mediaType */
            invokevirtual org.springframework.http.MediaType.getParameters:()Ljava/util/Map;
            invokespecial java.util.HashMap.<init>:(Ljava/util/Map;)V
            astore 8 /* parameters */
        start local 8 // java.util.Map parameters
        10: .line 93
            aload 8 /* parameters */
            ldc "delimited"
            ldc "true"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 94
            aload 4 /* message */
            invokeinterface org.springframework.http.ReactiveHttpOutputMessage.getHeaders:()Lorg/springframework/http/HttpHeaders;
            new org.springframework.http.MediaType
            dup
            aload 3 /* mediaType */
            invokevirtual org.springframework.http.MediaType.getType:()Ljava/lang/String;
            aload 3 /* mediaType */
            invokevirtual org.springframework.http.MediaType.getSubtype:()Ljava/lang/String;
            aload 8 /* parameters */
            invokespecial org.springframework.http.MediaType.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V
            invokevirtual org.springframework.http.HttpHeaders.setContentType:(Lorg/springframework/http/MediaType;)V
        end local 8 // java.util.Map parameters
        12: .line 97
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* inputStream */
            aload 2 /* elementType */
            aload 3 /* mediaType */
            aload 4 /* message */
            aload 5 /* hints */
            invokespecial 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;
        13: areturn
        end local 7 // com.google.protobuf.Descriptors$Descriptor descriptor
        end local 6 // com.google.protobuf.Message$Builder builder
        14: .line 99
      StackMap locals: org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter org.reactivestreams.Publisher org.springframework.core.ResolvableType org.springframework.http.MediaType org.springframework.http.ReactiveHttpOutputMessage java.util.Map
      StackMap stack: java.lang.Exception
            astore 6 /* ex */
        start local 6 // java.lang.Exception ex
        15: .line 100
            new org.springframework.core.codec.DecodingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Could not read Protobuf message: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* ex */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 6 /* ex */
            invokespecial org.springframework.core.codec.DecodingException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            invokestatic reactor.core.publisher.Mono.error:(Ljava/lang/Throwable;)Lreactor/core/publisher/Mono;
            areturn
        end local 6 // java.lang.Exception ex
        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.protobuf.ProtobufHttpMessageWriter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   16     0         this  Lorg/springframework/http/codec/protobuf/ProtobufHttpMessageWriter;
            0   16     1  inputStream  Lorg/reactivestreams/Publisher<+Lcom/google/protobuf/Message;>;
            0   16     2  elementType  Lorg/springframework/core/ResolvableType;
            0   16     3    mediaType  Lorg/springframework/http/MediaType;
            0   16     4      message  Lorg/springframework/http/ReactiveHttpOutputMessage;
            0   16     5        hints  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            1   14     6      builder  Lcom/google/protobuf/Message$Builder;
            2   14     7   descriptor  Lcom/google/protobuf/Descriptors$Descriptor;
           10   12     8   parameters  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
           15   16     6           ex  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0    13      14  Class java.lang.Exception
    Signature: (Lorg/reactivestreams/Publisher<+Lcom/google/protobuf/Message;>;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 static com.google.protobuf.Message$Builder getMessageBuilder(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Lcom/google/protobuf/Message$Builder;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.Class clazz
         0: .line 109
            getstatic org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter.methodCache:Ljava/util/concurrent/ConcurrentMap;
            aload 0 /* clazz */
            invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            astore 1 /* method */
        start local 1 // java.lang.reflect.Method method
         1: .line 110
            aload 1 /* method */
            ifnonnull 4
         2: .line 111
            aload 0 /* clazz */
            ldc "newBuilder"
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 1 /* method */
         3: .line 112
            getstatic org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter.methodCache:Ljava/util/concurrent/ConcurrentMap;
            aload 0 /* clazz */
            aload 1 /* method */
            invokeinterface java.util.concurrent.ConcurrentMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 114
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 1 /* method */
            aload 0 /* clazz */
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.google.protobuf.Message$Builder
            areturn
        end local 1 // java.lang.reflect.Method method
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0   clazz  Ljava/lang/Class<*>;
            1    5     1  method  Ljava/lang/reflect/Method;
    Exceptions:
      throws java.lang.Exception
    Signature: (Ljava/lang/Class<*>;)Lcom/google/protobuf/Message$Builder;
    MethodParameters:
       Name  Flags
      clazz  
}
Signature: Lorg/springframework/http/codec/EncoderHttpMessageWriter<Lcom/google/protobuf/Message;>;
SourceFile: "ProtobufHttpMessageWriter.java"
InnerClasses:
  public final Descriptor = com.google.protobuf.Descriptors$Descriptor of com.google.protobuf.Descriptors
  public final FileDescriptor = com.google.protobuf.Descriptors$FileDescriptor of com.google.protobuf.Descriptors
  public abstract Builder = com.google.protobuf.Message$Builder of com.google.protobuf.Message