public class org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter extends org.springframework.http.converter.AbstractHttpMessageConverter<com.google.protobuf.Message>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter
  super_class: org.springframework.http.converter.AbstractHttpMessageConverter
{
  public static final java.nio.charset.Charset DEFAULT_CHARSET;
    descriptor: Ljava/nio/charset/Charset;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.springframework.http.MediaType PROTOBUF;
    descriptor: Lorg/springframework/http/MediaType;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final java.lang.String X_PROTOBUF_SCHEMA_HEADER;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "X-Protobuf-Schema"

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

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

  final com.google.protobuf.ExtensionRegistry extensionRegistry;
    descriptor: Lcom/google/protobuf/ExtensionRegistry;
    flags: (0x0010) ACC_FINAL

  private final org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufFormatSupport protobufFormatSupport;
    descriptor: Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 91
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            putstatic org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.DEFAULT_CHARSET:Ljava/nio/charset/Charset;
         1: .line 96
            new org.springframework.http.MediaType
            dup
            ldc "application"
            ldc "x-protobuf"
            getstatic org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.DEFAULT_CHARSET:Ljava/nio/charset/Charset;
            invokespecial org.springframework.http.MediaType.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/nio/charset/Charset;)V
            putstatic org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.PROTOBUF:Lorg/springframework/http/MediaType;
         2: .line 109
            new org.springframework.util.ConcurrentReferenceHashMap
            dup
            invokespecial org.springframework.util.ConcurrentReferenceHashMap.<init>:()V
            putstatic org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.methodCache:Ljava/util/Map;
            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.converter.protobuf.ProtobufHttpMessageConverter this
         0: .line 121
            aload 0 /* this */
            aconst_null
            aconst_null
            invokespecial org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.<init>:(Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;Lcom/google/protobuf/ExtensionRegistry;)V
         1: .line 122
            return
        end local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter;

  public void <init>(org.springframework.http.converter.protobuf.ExtensionRegistryInitializer);
    descriptor: (Lorg/springframework/http/converter/protobuf/ExtensionRegistryInitializer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
        start local 1 // org.springframework.http.converter.protobuf.ExtensionRegistryInitializer registryInitializer
         0: .line 132
            aload 0 /* this */
            aconst_null
            aconst_null
            invokespecial org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.<init>:(Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;Lcom/google/protobuf/ExtensionRegistry;)V
         1: .line 133
            aload 1 /* registryInitializer */
            ifnull 3
         2: .line 134
            aload 1 /* registryInitializer */
            aload 0 /* this */
            getfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.extensionRegistry:Lcom/google/protobuf/ExtensionRegistry;
            invokeinterface org.springframework.http.converter.protobuf.ExtensionRegistryInitializer.initializeExtensionRegistry:(Lcom/google/protobuf/ExtensionRegistry;)V
         3: .line 136
      StackMap locals: org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter org.springframework.http.converter.protobuf.ExtensionRegistryInitializer
      StackMap stack:
            return
        end local 1 // org.springframework.http.converter.protobuf.ExtensionRegistryInitializer registryInitializer
        end local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0                 this  Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter;
            0    4     1  registryInitializer  Lorg/springframework/http/converter/protobuf/ExtensionRegistryInitializer;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
                     Name  Flags
      registryInitializer  

  public void <init>(com.google.protobuf.ExtensionRegistry);
    descriptor: (Lcom/google/protobuf/ExtensionRegistry;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
        start local 1 // com.google.protobuf.ExtensionRegistry extensionRegistry
         0: .line 144
            aload 0 /* this */
            aconst_null
            aload 1 /* extensionRegistry */
            invokespecial org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.<init>:(Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;Lcom/google/protobuf/ExtensionRegistry;)V
         1: .line 145
            return
        end local 1 // com.google.protobuf.ExtensionRegistry extensionRegistry
        end local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0               this  Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter;
            0    2     1  extensionRegistry  Lcom/google/protobuf/ExtensionRegistry;
    MethodParameters:
                   Name  Flags
      extensionRegistry  

  void <init>(org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufFormatSupport, com.google.protobuf.ExtensionRegistry);
    descriptor: (Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;Lcom/google/protobuf/ExtensionRegistry;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
        start local 1 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufFormatSupport formatSupport
        start local 2 // com.google.protobuf.ExtensionRegistry extensionRegistry
         0: .line 147
            aload 0 /* this */
            invokespecial org.springframework.http.converter.AbstractHttpMessageConverter.<init>:()V
         1: .line 150
            aload 1 /* formatSupport */
            ifnull 4
         2: .line 151
            aload 0 /* this */
            aload 1 /* formatSupport */
            putfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.protobufFormatSupport:Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
         3: .line 152
            goto 11
         4: .line 153
      StackMap locals: org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufFormatSupport com.google.protobuf.ExtensionRegistry
      StackMap stack:
            ldc "com.googlecode.protobuf.format.FormatFactory"
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            invokestatic org.springframework.util.ClassUtils.isPresent:(Ljava/lang/String;Ljava/lang/ClassLoader;)Z
            ifeq 7
         5: .line 154
            aload 0 /* this */
            new org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufJavaFormatSupport
            dup
            invokespecial org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufJavaFormatSupport.<init>:()V
            putfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.protobufFormatSupport:Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
         6: .line 155
            goto 11
         7: .line 156
      StackMap locals:
      StackMap stack:
            ldc "com.google.protobuf.util.JsonFormat"
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            invokestatic org.springframework.util.ClassUtils.isPresent:(Ljava/lang/String;Ljava/lang/ClassLoader;)Z
            ifeq 10
         8: .line 157
            aload 0 /* this */
            new org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufJavaUtilSupport
            dup
            aconst_null
            aconst_null
            invokespecial org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufJavaUtilSupport.<init>:(Lcom/google/protobuf/util/JsonFormat$Parser;Lcom/google/protobuf/util/JsonFormat$Printer;)V
            putfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.protobufFormatSupport:Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
         9: .line 158
            goto 11
        10: .line 160
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.protobufFormatSupport:Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
        11: .line 163
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.protobufFormatSupport:Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
            ifnull 13
        12: .line 164
            aload 0 /* this */
            getfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.protobufFormatSupport:Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
            invokeinterface org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufFormatSupport.supportedMediaTypes:()[Lorg/springframework/http/MediaType;
            goto 14
      StackMap locals:
      StackMap stack: org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter
        13: iconst_2
            anewarray org.springframework.http.MediaType
            dup
            iconst_0
            getstatic org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.PROTOBUF:Lorg/springframework/http/MediaType;
            aastore
            dup
            iconst_1
            getstatic org.springframework.http.MediaType.TEXT_PLAIN:Lorg/springframework/http/MediaType;
            aastore
        14: .line 163
      StackMap locals: org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufFormatSupport com.google.protobuf.ExtensionRegistry
      StackMap stack: org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter org.springframework.http.MediaType[]
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokevirtual org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.setSupportedMediaTypes:(Ljava/util/List;)V
        15: .line 166
            aload 0 /* this */
            aload 2 /* extensionRegistry */
            ifnonnull 16
            invokestatic com.google.protobuf.ExtensionRegistry.newInstance:()Lcom/google/protobuf/ExtensionRegistry;
            goto 17
      StackMap locals:
      StackMap stack: org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter
        16: aload 2 /* extensionRegistry */
      StackMap locals: org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufFormatSupport com.google.protobuf.ExtensionRegistry
      StackMap stack: org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter com.google.protobuf.ExtensionRegistry
        17: putfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.extensionRegistry:Lcom/google/protobuf/ExtensionRegistry;
        18: .line 167
            return
        end local 2 // com.google.protobuf.ExtensionRegistry extensionRegistry
        end local 1 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufFormatSupport formatSupport
        end local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   19     0               this  Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter;
            0   19     1      formatSupport  Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
            0   19     2  extensionRegistry  Lcom/google/protobuf/ExtensionRegistry;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
                   Name  Flags
      formatSupport      
      extensionRegistry  

  protected boolean supports(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
        start local 1 // java.lang.Class clazz
         0: .line 172
            ldc Lcom/google/protobuf/Message;
            aload 1 /* clazz */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ireturn
        end local 1 // java.lang.Class clazz
        end local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter;
            0    1     1  clazz  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
       Name  Flags
      clazz  

  protected org.springframework.http.MediaType getDefaultContentType(com.google.protobuf.Message);
    descriptor: (Lcom/google/protobuf/Message;)Lorg/springframework/http/MediaType;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
        start local 1 // com.google.protobuf.Message message
         0: .line 177
            getstatic org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.PROTOBUF:Lorg/springframework/http/MediaType;
            areturn
        end local 1 // com.google.protobuf.Message message
        end local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter;
            0    1     1  message  Lcom/google/protobuf/Message;
    MethodParameters:
         Name  Flags
      message  

  protected com.google.protobuf.Message readInternal(java.lang.Class<? extends com.google.protobuf.Message>, org.springframework.http.HttpInputMessage);
    descriptor: (Ljava/lang/Class;Lorg/springframework/http/HttpInputMessage;)Lcom/google/protobuf/Message;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=7, args_size=3
        start local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
        start local 1 // java.lang.Class clazz
        start local 2 // org.springframework.http.HttpInputMessage inputMessage
         0: .line 184
            aload 2 /* inputMessage */
            invokeinterface org.springframework.http.HttpInputMessage.getHeaders:()Lorg/springframework/http/HttpHeaders;
            invokevirtual org.springframework.http.HttpHeaders.getContentType:()Lorg/springframework/http/MediaType;
            astore 3 /* contentType */
        start local 3 // org.springframework.http.MediaType contentType
         1: .line 185
            aload 3 /* contentType */
            ifnonnull 3
         2: .line 186
            getstatic org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.PROTOBUF:Lorg/springframework/http/MediaType;
            astore 3 /* contentType */
         3: .line 188
      StackMap locals: org.springframework.http.MediaType
      StackMap stack:
            aload 3 /* contentType */
            invokevirtual org.springframework.http.MediaType.getCharset:()Ljava/nio/charset/Charset;
            astore 4 /* charset */
        start local 4 // java.nio.charset.Charset charset
         4: .line 189
            aload 4 /* charset */
            ifnonnull 6
         5: .line 190
            getstatic org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.DEFAULT_CHARSET:Ljava/nio/charset/Charset;
            astore 4 /* charset */
         6: .line 193
      StackMap locals: java.nio.charset.Charset
      StackMap stack:
            aload 0 /* this */
            aload 1 /* clazz */
            invokevirtual org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.getMessageBuilder:(Ljava/lang/Class;)Lcom/google/protobuf/Message$Builder;
            astore 5 /* builder */
        start local 5 // com.google.protobuf.Message$Builder builder
         7: .line 194
            getstatic org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.PROTOBUF:Lorg/springframework/http/MediaType;
            aload 3 /* contentType */
            invokevirtual org.springframework.http.MediaType.isCompatibleWith:(Lorg/springframework/http/MediaType;)Z
            ifeq 10
         8: .line 195
            aload 5 /* builder */
            aload 2 /* inputMessage */
            invokeinterface org.springframework.http.HttpInputMessage.getBody:()Ljava/io/InputStream;
            aload 0 /* this */
            getfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.extensionRegistry:Lcom/google/protobuf/ExtensionRegistry;
            invokeinterface com.google.protobuf.Message$Builder.mergeFrom:(Ljava/io/InputStream;Lcom/google/protobuf/ExtensionRegistryLite;)Lcom/google/protobuf/Message$Builder;
            pop
         9: .line 196
            goto 18
        10: .line 197
      StackMap locals: com.google.protobuf.Message$Builder
      StackMap stack:
            getstatic org.springframework.http.MediaType.TEXT_PLAIN:Lorg/springframework/http/MediaType;
            aload 3 /* contentType */
            invokevirtual org.springframework.http.MediaType.isCompatibleWith:(Lorg/springframework/http/MediaType;)Z
            ifeq 14
        11: .line 198
            new java.io.InputStreamReader
            dup
            aload 2 /* inputMessage */
            invokeinterface org.springframework.http.HttpInputMessage.getBody:()Ljava/io/InputStream;
            aload 4 /* charset */
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;Ljava/nio/charset/Charset;)V
            astore 6 /* reader */
        start local 6 // java.io.InputStreamReader reader
        12: .line 199
            aload 6 /* reader */
            aload 0 /* this */
            getfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.extensionRegistry:Lcom/google/protobuf/ExtensionRegistry;
            aload 5 /* builder */
            invokestatic com.google.protobuf.TextFormat.merge:(Ljava/lang/Readable;Lcom/google/protobuf/ExtensionRegistry;Lcom/google/protobuf/Message$Builder;)V
        end local 6 // java.io.InputStreamReader reader
        13: .line 200
            goto 18
        14: .line 201
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.protobufFormatSupport:Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
            ifnull 18
        15: .line 202
            aload 0 /* this */
            getfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.protobufFormatSupport:Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
        16: .line 203
            aload 2 /* inputMessage */
            invokeinterface org.springframework.http.HttpInputMessage.getBody:()Ljava/io/InputStream;
            aload 4 /* charset */
            aload 3 /* contentType */
            aload 0 /* this */
            getfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.extensionRegistry:Lcom/google/protobuf/ExtensionRegistry;
            aload 5 /* builder */
        17: .line 202
            invokeinterface org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufFormatSupport.merge:(Ljava/io/InputStream;Ljava/nio/charset/Charset;Lorg/springframework/http/MediaType;Lcom/google/protobuf/ExtensionRegistry;Lcom/google/protobuf/Message$Builder;)V
        18: .line 205
      StackMap locals:
      StackMap stack:
            aload 5 /* builder */
            invokeinterface com.google.protobuf.Message$Builder.build:()Lcom/google/protobuf/Message;
            areturn
        end local 5 // com.google.protobuf.Message$Builder builder
        end local 4 // java.nio.charset.Charset charset
        end local 3 // org.springframework.http.MediaType contentType
        end local 2 // org.springframework.http.HttpInputMessage inputMessage
        end local 1 // java.lang.Class clazz
        end local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   19     0          this  Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter;
            0   19     1         clazz  Ljava/lang/Class<+Lcom/google/protobuf/Message;>;
            0   19     2  inputMessage  Lorg/springframework/http/HttpInputMessage;
            1   19     3   contentType  Lorg/springframework/http/MediaType;
            4   19     4       charset  Ljava/nio/charset/Charset;
            7   19     5       builder  Lcom/google/protobuf/Message$Builder;
           12   13     6        reader  Ljava/io/InputStreamReader;
    Exceptions:
      throws java.io.IOException, org.springframework.http.converter.HttpMessageNotReadableException
    Signature: (Ljava/lang/Class<+Lcom/google/protobuf/Message;>;Lorg/springframework/http/HttpInputMessage;)Lcom/google/protobuf/Message;
    MethodParameters:
              Name  Flags
      clazz         
      inputMessage  

  private com.google.protobuf.Message$Builder getMessageBuilder(java.lang.Class<? extends com.google.protobuf.Message>);
    descriptor: (Ljava/lang/Class;)Lcom/google/protobuf/Message$Builder;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
        start local 1 // java.lang.Class clazz
         0: .line 214
            getstatic org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.methodCache:Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            astore 2 /* method */
        start local 2 // java.lang.reflect.Method method
         1: .line 215
            aload 2 /* method */
            ifnonnull 4
         2: .line 216
            aload 1 /* 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 2 /* method */
         3: .line 217
            getstatic org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.methodCache:Ljava/util/Map;
            aload 1 /* clazz */
            aload 2 /* method */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 219
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 2 /* method */
            aload 1 /* 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
         5: areturn
        end local 2 // java.lang.reflect.Method method
         6: .line 221
      StackMap locals: org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter java.lang.Class
      StackMap stack: java.lang.Exception
            astore 2 /* ex */
        start local 2 // java.lang.Exception ex
         7: .line 222
            new org.springframework.http.converter.HttpMessageConversionException
            dup
         8: .line 223
            new java.lang.StringBuilder
            dup
            ldc "Invalid Protobuf Message type: no invocable newBuilder() method on "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* clazz */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* ex */
         9: .line 222
            invokespecial org.springframework.http.converter.HttpMessageConversionException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Exception ex
        end local 1 // java.lang.Class clazz
        end local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0    this  Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter;
            0   10     1   clazz  Ljava/lang/Class<+Lcom/google/protobuf/Message;>;
            1    6     2  method  Ljava/lang/reflect/Method;
            7   10     2      ex  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     5       6  Class java.lang.Exception
    Signature: (Ljava/lang/Class<+Lcom/google/protobuf/Message;>;)Lcom/google/protobuf/Message$Builder;
    MethodParameters:
       Name  Flags
      clazz  

  protected boolean canWrite(org.springframework.http.MediaType);
    descriptor: (Lorg/springframework/http/MediaType;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
        start local 1 // org.springframework.http.MediaType mediaType
         0: .line 230
            aload 0 /* this */
            aload 1 /* mediaType */
            invokespecial org.springframework.http.converter.AbstractHttpMessageConverter.canWrite:(Lorg/springframework/http/MediaType;)Z
            ifne 3
         1: .line 231
            aload 0 /* this */
            getfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.protobufFormatSupport:Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
            ifnull 2
            aload 0 /* this */
            getfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.protobufFormatSupport:Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
            aload 1 /* mediaType */
            invokeinterface org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufFormatSupport.supportsWriteOnly:(Lorg/springframework/http/MediaType;)Z
            ifne 3
         2: .line 230
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 1 // org.springframework.http.MediaType mediaType
        end local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter;
            0    4     1  mediaType  Lorg/springframework/http/MediaType;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
           Name  Flags
      mediaType  

  protected void writeInternal(com.google.protobuf.Message, org.springframework.http.HttpOutputMessage);
    descriptor: (Lcom/google/protobuf/Message;Lorg/springframework/http/HttpOutputMessage;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
        start local 1 // com.google.protobuf.Message message
        start local 2 // org.springframework.http.HttpOutputMessage outputMessage
         0: .line 238
            aload 2 /* outputMessage */
            invokeinterface org.springframework.http.HttpOutputMessage.getHeaders:()Lorg/springframework/http/HttpHeaders;
            invokevirtual org.springframework.http.HttpHeaders.getContentType:()Lorg/springframework/http/MediaType;
            astore 3 /* contentType */
        start local 3 // org.springframework.http.MediaType contentType
         1: .line 239
            aload 3 /* contentType */
            ifnonnull 6
         2: .line 240
            aload 0 /* this */
            aload 1 /* message */
            invokevirtual org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.getDefaultContentType:(Lcom/google/protobuf/Message;)Lorg/springframework/http/MediaType;
            astore 3 /* contentType */
         3: .line 241
            aload 3 /* contentType */
            ifnull 4
            iconst_1
            goto 5
      StackMap locals: org.springframework.http.MediaType
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: ldc "No content type"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         6: .line 243
      StackMap locals:
      StackMap stack:
            aload 3 /* contentType */
            invokevirtual org.springframework.http.MediaType.getCharset:()Ljava/nio/charset/Charset;
            astore 4 /* charset */
        start local 4 // java.nio.charset.Charset charset
         7: .line 244
            aload 4 /* charset */
            ifnonnull 9
         8: .line 245
            getstatic org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.DEFAULT_CHARSET:Ljava/nio/charset/Charset;
            astore 4 /* charset */
         9: .line 248
      StackMap locals: java.nio.charset.Charset
      StackMap stack:
            getstatic org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.PROTOBUF:Lorg/springframework/http/MediaType;
            aload 3 /* contentType */
            invokevirtual org.springframework.http.MediaType.isCompatibleWith:(Lorg/springframework/http/MediaType;)Z
            ifeq 15
        10: .line 249
            aload 0 /* this */
            aload 2 /* outputMessage */
            aload 1 /* message */
            invokevirtual org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.setProtoHeader:(Lorg/springframework/http/HttpOutputMessage;Lcom/google/protobuf/Message;)V
        11: .line 250
            aload 2 /* outputMessage */
            invokeinterface org.springframework.http.HttpOutputMessage.getBody:()Ljava/io/OutputStream;
            invokestatic com.google.protobuf.CodedOutputStream.newInstance:(Ljava/io/OutputStream;)Lcom/google/protobuf/CodedOutputStream;
            astore 5 /* codedOutputStream */
        start local 5 // com.google.protobuf.CodedOutputStream codedOutputStream
        12: .line 251
            aload 1 /* message */
            aload 5 /* codedOutputStream */
            invokeinterface com.google.protobuf.Message.writeTo:(Lcom/google/protobuf/CodedOutputStream;)V
        13: .line 252
            aload 5 /* codedOutputStream */
            invokevirtual com.google.protobuf.CodedOutputStream.flush:()V
        end local 5 // com.google.protobuf.CodedOutputStream codedOutputStream
        14: .line 253
            goto 24
        15: .line 254
      StackMap locals:
      StackMap stack:
            getstatic org.springframework.http.MediaType.TEXT_PLAIN:Lorg/springframework/http/MediaType;
            aload 3 /* contentType */
            invokevirtual org.springframework.http.MediaType.isCompatibleWith:(Lorg/springframework/http/MediaType;)Z
            ifeq 21
        16: .line 255
            new java.io.OutputStreamWriter
            dup
            aload 2 /* outputMessage */
            invokeinterface org.springframework.http.HttpOutputMessage.getBody:()Ljava/io/OutputStream;
            aload 4 /* charset */
            invokespecial java.io.OutputStreamWriter.<init>:(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V
            astore 5 /* outputStreamWriter */
        start local 5 // java.io.OutputStreamWriter outputStreamWriter
        17: .line 256
            aload 1 /* message */
            aload 5 /* outputStreamWriter */
            invokestatic com.google.protobuf.TextFormat.print:(Lcom/google/protobuf/MessageOrBuilder;Ljava/lang/Appendable;)V
        18: .line 257
            aload 5 /* outputStreamWriter */
            invokevirtual java.io.OutputStreamWriter.flush:()V
        19: .line 258
            aload 2 /* outputMessage */
            invokeinterface org.springframework.http.HttpOutputMessage.getBody:()Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
        end local 5 // java.io.OutputStreamWriter outputStreamWriter
        20: .line 259
            goto 24
        21: .line 260
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.protobufFormatSupport:Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
            ifnull 24
        22: .line 261
            aload 0 /* this */
            getfield org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.protobufFormatSupport:Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter$ProtobufFormatSupport;
            aload 1 /* message */
            aload 2 /* outputMessage */
            invokeinterface org.springframework.http.HttpOutputMessage.getBody:()Ljava/io/OutputStream;
            aload 3 /* contentType */
            aload 4 /* charset */
            invokeinterface org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufFormatSupport.print:(Lcom/google/protobuf/Message;Ljava/io/OutputStream;Lorg/springframework/http/MediaType;Ljava/nio/charset/Charset;)V
        23: .line 262
            aload 2 /* outputMessage */
            invokeinterface org.springframework.http.HttpOutputMessage.getBody:()Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
        24: .line 264
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.nio.charset.Charset charset
        end local 3 // org.springframework.http.MediaType contentType
        end local 2 // org.springframework.http.HttpOutputMessage outputMessage
        end local 1 // com.google.protobuf.Message message
        end local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   25     0                this  Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter;
            0   25     1             message  Lcom/google/protobuf/Message;
            0   25     2       outputMessage  Lorg/springframework/http/HttpOutputMessage;
            1   25     3         contentType  Lorg/springframework/http/MediaType;
            7   25     4             charset  Ljava/nio/charset/Charset;
           12   14     5   codedOutputStream  Lcom/google/protobuf/CodedOutputStream;
           17   20     5  outputStreamWriter  Ljava/io/OutputStreamWriter;
    Exceptions:
      throws java.io.IOException, org.springframework.http.converter.HttpMessageNotWritableException
    MethodParameters:
               Name  Flags
      message        
      outputMessage  

  private void setProtoHeader(org.springframework.http.HttpOutputMessage, com.google.protobuf.Message);
    descriptor: (Lorg/springframework/http/HttpOutputMessage;Lcom/google/protobuf/Message;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
        start local 1 // org.springframework.http.HttpOutputMessage response
        start local 2 // com.google.protobuf.Message message
         0: .line 273
            aload 1 /* response */
            invokeinterface org.springframework.http.HttpOutputMessage.getHeaders:()Lorg/springframework/http/HttpHeaders;
            ldc "X-Protobuf-Schema"
            aload 2 /* message */
            invokeinterface com.google.protobuf.Message.getDescriptorForType:()Lcom/google/protobuf/Descriptors$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.set:(Ljava/lang/String;Ljava/lang/String;)V
         1: .line 274
            aload 1 /* response */
            invokeinterface org.springframework.http.HttpOutputMessage.getHeaders:()Lorg/springframework/http/HttpHeaders;
            ldc "X-Protobuf-Message"
            aload 2 /* message */
            invokeinterface com.google.protobuf.Message.getDescriptorForType:()Lcom/google/protobuf/Descriptors$Descriptor;
            invokevirtual com.google.protobuf.Descriptors$Descriptor.getFullName:()Ljava/lang/String;
            invokevirtual org.springframework.http.HttpHeaders.set:(Ljava/lang/String;Ljava/lang/String;)V
         2: .line 275
            return
        end local 2 // com.google.protobuf.Message message
        end local 1 // org.springframework.http.HttpOutputMessage response
        end local 0 // org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/springframework/http/converter/protobuf/ProtobufHttpMessageConverter;
            0    3     1  response  Lorg/springframework/http/HttpOutputMessage;
            0    3     2   message  Lcom/google/protobuf/Message;
    MethodParameters:
          Name  Flags
      response  
      message   

  protected java.lang.Object readInternal(java.lang.Class, org.springframework.http.HttpInputMessage);
    descriptor: (Ljava/lang/Class;Lorg/springframework/http/HttpInputMessage;)Ljava/lang/Object;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            checkcast java.lang.Class
            aload 2
            invokevirtual org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.readInternal:(Ljava/lang/Class;Lorg/springframework/http/HttpInputMessage;)Lcom/google/protobuf/Message;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.io.IOException, org.springframework.http.converter.HttpMessageNotReadableException

  protected org.springframework.http.MediaType getDefaultContentType(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lorg/springframework/http/MediaType;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast com.google.protobuf.Message
            invokevirtual org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.getDefaultContentType:(Lcom/google/protobuf/Message;)Lorg/springframework/http/MediaType;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.io.IOException

  protected void writeInternal(java.lang.Object, org.springframework.http.HttpOutputMessage);
    descriptor: (Ljava/lang/Object;Lorg/springframework/http/HttpOutputMessage;)V
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            checkcast com.google.protobuf.Message
            aload 2
            invokevirtual org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter.writeInternal:(Lcom/google/protobuf/Message;Lorg/springframework/http/HttpOutputMessage;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.io.IOException, org.springframework.http.converter.HttpMessageNotWritableException
}
Signature: Lorg/springframework/http/converter/AbstractHttpMessageConverter<Lcom/google/protobuf/Message;>;
SourceFile: "ProtobufHttpMessageConverter.java"
NestMembers:
  org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufFormatSupport  org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufJavaFormatSupport  org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufJavaUtilSupport
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
  public Parser = com.google.protobuf.util.JsonFormat$Parser of com.google.protobuf.util.JsonFormat
  public Printer = com.google.protobuf.util.JsonFormat$Printer of com.google.protobuf.util.JsonFormat
  abstract ProtobufFormatSupport = org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufFormatSupport of org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter
  ProtobufJavaFormatSupport = org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufJavaFormatSupport of org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter
  ProtobufJavaUtilSupport = org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter$ProtobufJavaUtilSupport of org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter