public class org.springframework.core.convert.support.GenericConversionService implements org.springframework.core.convert.support.ConfigurableConversionService
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.core.convert.support.GenericConversionService
  super_class: java.lang.Object
{
  private static final org.springframework.core.convert.converter.GenericConverter NO_OP_CONVERTER;
    descriptor: Lorg/springframework/core/convert/converter/GenericConverter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.springframework.core.convert.converter.GenericConverter NO_MATCH;
    descriptor: Lorg/springframework/core/convert/converter/GenericConverter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final org.springframework.core.convert.support.GenericConversionService$Converters converters;
    descriptor: Lorg/springframework/core/convert/support/GenericConversionService$Converters;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Map<org.springframework.core.convert.support.GenericConversionService$ConverterCacheKey, org.springframework.core.convert.converter.GenericConverter> converterCache;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Lorg/springframework/core/convert/support/GenericConversionService$ConverterCacheKey;Lorg/springframework/core/convert/converter/GenericConverter;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 68
            new org.springframework.core.convert.support.GenericConversionService$NoOpConverter
            dup
            ldc "NO_OP"
            invokespecial org.springframework.core.convert.support.GenericConversionService$NoOpConverter.<init>:(Ljava/lang/String;)V
            putstatic org.springframework.core.convert.support.GenericConversionService.NO_OP_CONVERTER:Lorg/springframework/core/convert/converter/GenericConverter;
         1: .line 74
            new org.springframework.core.convert.support.GenericConversionService$NoOpConverter
            dup
            ldc "NO_MATCH"
            invokespecial org.springframework.core.convert.support.GenericConversionService$NoOpConverter.<init>:(Ljava/lang/String;)V
            putstatic org.springframework.core.convert.support.GenericConversionService.NO_MATCH:Lorg/springframework/core/convert/converter/GenericConverter;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
         0: .line 63
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 77
            aload 0 /* this */
            new org.springframework.core.convert.support.GenericConversionService$Converters
            dup
            invokespecial org.springframework.core.convert.support.GenericConversionService$Converters.<init>:()V
            putfield org.springframework.core.convert.support.GenericConversionService.converters:Lorg/springframework/core/convert/support/GenericConversionService$Converters;
         2: .line 79
            aload 0 /* this */
            new org.springframework.util.ConcurrentReferenceHashMap
            dup
            bipush 64
            invokespecial org.springframework.util.ConcurrentReferenceHashMap.<init>:(I)V
            putfield org.springframework.core.convert.support.GenericConversionService.converterCache:Ljava/util/Map;
         3: .line 63
            return
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/springframework/core/convert/support/GenericConversionService;

  public void addConverter(org.springframework.core.convert.converter.Converter<?, ?>);
    descriptor: (Lorg/springframework/core/convert/converter/Converter;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=3, args_size=2
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // org.springframework.core.convert.converter.Converter converter
         0: .line 86
            aload 0 /* this */
            aload 1 /* converter */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc Lorg/springframework/core/convert/converter/Converter;
            invokevirtual org.springframework.core.convert.support.GenericConversionService.getRequiredTypeInfo:(Ljava/lang/Class;Ljava/lang/Class;)[Lorg/springframework/core/ResolvableType;
            astore 2 /* typeInfo */
        start local 2 // org.springframework.core.ResolvableType[] typeInfo
         1: .line 87
            aload 2 /* typeInfo */
            ifnonnull 3
            aload 1 /* converter */
            instanceof org.springframework.core.DecoratingProxy
            ifeq 3
         2: .line 88
            aload 0 /* this */
            aload 1 /* converter */
            checkcast org.springframework.core.DecoratingProxy
            invokeinterface org.springframework.core.DecoratingProxy.getDecoratedClass:()Ljava/lang/Class;
            ldc Lorg/springframework/core/convert/converter/Converter;
            invokevirtual org.springframework.core.convert.support.GenericConversionService.getRequiredTypeInfo:(Ljava/lang/Class;Ljava/lang/Class;)[Lorg/springframework/core/ResolvableType;
            astore 2 /* typeInfo */
         3: .line 90
      StackMap locals: org.springframework.core.ResolvableType[]
      StackMap stack:
            aload 2 /* typeInfo */
            ifnonnull 7
         4: .line 91
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unable to determine source type <S> and target type <T> for your Converter ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         5: .line 92
            aload 1 /* converter */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]; does the class parameterize those types?"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 91
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 94
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.springframework.core.convert.support.GenericConversionService$ConverterAdapter
            dup
            aload 0 /* this */
            aload 1 /* converter */
            aload 2 /* typeInfo */
            iconst_0
            aaload
            aload 2 /* typeInfo */
            iconst_1
            aaload
            invokespecial org.springframework.core.convert.support.GenericConversionService$ConverterAdapter.<init>:(Lorg/springframework/core/convert/support/GenericConversionService;Lorg/springframework/core/convert/converter/Converter;Lorg/springframework/core/ResolvableType;Lorg/springframework/core/ResolvableType;)V
            invokevirtual org.springframework.core.convert.support.GenericConversionService.addConverter:(Lorg/springframework/core/convert/converter/GenericConverter;)V
         8: .line 95
            return
        end local 2 // org.springframework.core.ResolvableType[] typeInfo
        end local 1 // org.springframework.core.convert.converter.Converter converter
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    9     1  converter  Lorg/springframework/core/convert/converter/Converter<**>;
            1    9     2   typeInfo  [Lorg/springframework/core/ResolvableType;
    Signature: (Lorg/springframework/core/convert/converter/Converter<**>;)V
    MethodParameters:
           Name  Flags
      converter  

  public <S, T> void addConverter(java.lang.Class<S>, java.lang.Class<T>, org.springframework.core.convert.converter.Converter<? super S, ? extends T>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=4
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // java.lang.Class sourceType
        start local 2 // java.lang.Class targetType
        start local 3 // org.springframework.core.convert.converter.Converter converter
         0: .line 99
            aload 0 /* this */
            new org.springframework.core.convert.support.GenericConversionService$ConverterAdapter
            dup
            aload 0 /* this */
         1: .line 100
            aload 3 /* converter */
            aload 1 /* sourceType */
            invokestatic org.springframework.core.ResolvableType.forClass:(Ljava/lang/Class;)Lorg/springframework/core/ResolvableType;
            aload 2 /* targetType */
            invokestatic org.springframework.core.ResolvableType.forClass:(Ljava/lang/Class;)Lorg/springframework/core/ResolvableType;
            invokespecial org.springframework.core.convert.support.GenericConversionService$ConverterAdapter.<init>:(Lorg/springframework/core/convert/support/GenericConversionService;Lorg/springframework/core/convert/converter/Converter;Lorg/springframework/core/ResolvableType;Lorg/springframework/core/ResolvableType;)V
         2: .line 99
            invokevirtual org.springframework.core.convert.support.GenericConversionService.addConverter:(Lorg/springframework/core/convert/converter/GenericConverter;)V
         3: .line 101
            return
        end local 3 // org.springframework.core.convert.converter.Converter converter
        end local 2 // java.lang.Class targetType
        end local 1 // java.lang.Class sourceType
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    4     1  sourceType  Ljava/lang/Class<TS;>;
            0    4     2  targetType  Ljava/lang/Class<TT;>;
            0    4     3   converter  Lorg/springframework/core/convert/converter/Converter<-TS;+TT;>;
    Signature: <S:Ljava/lang/Object;T:Ljava/lang/Object;>(Ljava/lang/Class<TS;>;Ljava/lang/Class<TT;>;Lorg/springframework/core/convert/converter/Converter<-TS;+TT;>;)V
    MethodParameters:
            Name  Flags
      sourceType  
      targetType  
      converter   

  public void addConverter(org.springframework.core.convert.converter.GenericConverter);
    descriptor: (Lorg/springframework/core/convert/converter/GenericConverter;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // org.springframework.core.convert.converter.GenericConverter converter
         0: .line 105
            aload 0 /* this */
            getfield org.springframework.core.convert.support.GenericConversionService.converters:Lorg/springframework/core/convert/support/GenericConversionService$Converters;
            aload 1 /* converter */
            invokevirtual org.springframework.core.convert.support.GenericConversionService$Converters.add:(Lorg/springframework/core/convert/converter/GenericConverter;)V
         1: .line 106
            aload 0 /* this */
            invokevirtual org.springframework.core.convert.support.GenericConversionService.invalidateCache:()V
         2: .line 107
            return
        end local 1 // org.springframework.core.convert.converter.GenericConverter converter
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    3     1  converter  Lorg/springframework/core/convert/converter/GenericConverter;
    MethodParameters:
           Name  Flags
      converter  

  public void addConverterFactory(org.springframework.core.convert.converter.ConverterFactory<?, ?>);
    descriptor: (Lorg/springframework/core/convert/converter/ConverterFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=3, args_size=2
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // org.springframework.core.convert.converter.ConverterFactory factory
         0: .line 111
            aload 0 /* this */
            aload 1 /* factory */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc Lorg/springframework/core/convert/converter/ConverterFactory;
            invokevirtual org.springframework.core.convert.support.GenericConversionService.getRequiredTypeInfo:(Ljava/lang/Class;Ljava/lang/Class;)[Lorg/springframework/core/ResolvableType;
            astore 2 /* typeInfo */
        start local 2 // org.springframework.core.ResolvableType[] typeInfo
         1: .line 112
            aload 2 /* typeInfo */
            ifnonnull 3
            aload 1 /* factory */
            instanceof org.springframework.core.DecoratingProxy
            ifeq 3
         2: .line 113
            aload 0 /* this */
            aload 1 /* factory */
            checkcast org.springframework.core.DecoratingProxy
            invokeinterface org.springframework.core.DecoratingProxy.getDecoratedClass:()Ljava/lang/Class;
            ldc Lorg/springframework/core/convert/converter/ConverterFactory;
            invokevirtual org.springframework.core.convert.support.GenericConversionService.getRequiredTypeInfo:(Ljava/lang/Class;Ljava/lang/Class;)[Lorg/springframework/core/ResolvableType;
            astore 2 /* typeInfo */
         3: .line 115
      StackMap locals: org.springframework.core.ResolvableType[]
      StackMap stack:
            aload 2 /* typeInfo */
            ifnonnull 7
         4: .line 116
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unable to determine source type <S> and target type <T> for your ConverterFactory ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         5: .line 117
            aload 1 /* factory */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]; does the class parameterize those types?"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 116
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 119
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.springframework.core.convert.support.GenericConversionService$ConverterFactoryAdapter
            dup
            aload 0 /* this */
            aload 1 /* factory */
         8: .line 120
            new org.springframework.core.convert.converter.GenericConverter$ConvertiblePair
            dup
            aload 2 /* typeInfo */
            iconst_0
            aaload
            invokevirtual org.springframework.core.ResolvableType.toClass:()Ljava/lang/Class;
            aload 2 /* typeInfo */
            iconst_1
            aaload
            invokevirtual org.springframework.core.ResolvableType.toClass:()Ljava/lang/Class;
            invokespecial org.springframework.core.convert.converter.GenericConverter$ConvertiblePair.<init>:(Ljava/lang/Class;Ljava/lang/Class;)V
            invokespecial org.springframework.core.convert.support.GenericConversionService$ConverterFactoryAdapter.<init>:(Lorg/springframework/core/convert/support/GenericConversionService;Lorg/springframework/core/convert/converter/ConverterFactory;Lorg/springframework/core/convert/converter/GenericConverter$ConvertiblePair;)V
         9: .line 119
            invokevirtual org.springframework.core.convert.support.GenericConversionService.addConverter:(Lorg/springframework/core/convert/converter/GenericConverter;)V
        10: .line 121
            return
        end local 2 // org.springframework.core.ResolvableType[] typeInfo
        end local 1 // org.springframework.core.convert.converter.ConverterFactory factory
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Lorg/springframework/core/convert/support/GenericConversionService;
            0   11     1   factory  Lorg/springframework/core/convert/converter/ConverterFactory<**>;
            1   11     2  typeInfo  [Lorg/springframework/core/ResolvableType;
    Signature: (Lorg/springframework/core/convert/converter/ConverterFactory<**>;)V
    MethodParameters:
         Name  Flags
      factory  

  public void removeConvertible(java.lang.Class<?>, java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // java.lang.Class sourceType
        start local 2 // java.lang.Class targetType
         0: .line 125
            aload 0 /* this */
            getfield org.springframework.core.convert.support.GenericConversionService.converters:Lorg/springframework/core/convert/support/GenericConversionService$Converters;
            aload 1 /* sourceType */
            aload 2 /* targetType */
            invokevirtual org.springframework.core.convert.support.GenericConversionService$Converters.remove:(Ljava/lang/Class;Ljava/lang/Class;)V
         1: .line 126
            aload 0 /* this */
            invokevirtual org.springframework.core.convert.support.GenericConversionService.invalidateCache:()V
         2: .line 127
            return
        end local 2 // java.lang.Class targetType
        end local 1 // java.lang.Class sourceType
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    3     1  sourceType  Ljava/lang/Class<*>;
            0    3     2  targetType  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)V
    MethodParameters:
            Name  Flags
      sourceType  
      targetType  

  public boolean canConvert(java.lang.Class<?>, java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // java.lang.Class sourceType
        start local 2 // java.lang.Class targetType
         0: .line 134
            aload 2 /* targetType */
            ldc "Target type to convert to cannot be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 135
            aload 0 /* this */
            aload 1 /* sourceType */
            ifnull 2
            aload 1 /* sourceType */
            invokestatic org.springframework.core.convert.TypeDescriptor.valueOf:(Ljava/lang/Class;)Lorg/springframework/core/convert/TypeDescriptor;
            goto 3
      StackMap locals:
      StackMap stack: org.springframework.core.convert.support.GenericConversionService
         2: aconst_null
         3: .line 136
      StackMap locals: org.springframework.core.convert.support.GenericConversionService java.lang.Class java.lang.Class
      StackMap stack: org.springframework.core.convert.support.GenericConversionService org.springframework.core.convert.TypeDescriptor
            aload 2 /* targetType */
            invokestatic org.springframework.core.convert.TypeDescriptor.valueOf:(Ljava/lang/Class;)Lorg/springframework/core/convert/TypeDescriptor;
         4: .line 135
            invokevirtual org.springframework.core.convert.support.GenericConversionService.canConvert:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Z
            ireturn
        end local 2 // java.lang.Class targetType
        end local 1 // java.lang.Class sourceType
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    5     1  sourceType  Ljava/lang/Class<*>;
            0    5     2  targetType  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Z
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
            Name  Flags
      sourceType  
      targetType  

  public boolean canConvert(org.springframework.core.convert.TypeDescriptor, org.springframework.core.convert.TypeDescriptor);
    descriptor: (Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        start local 2 // org.springframework.core.convert.TypeDescriptor targetType
         0: .line 141
            aload 2 /* targetType */
            ldc "Target type to convert to cannot be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 142
            aload 1 /* sourceType */
            ifnonnull 3
         2: .line 143
            iconst_1
            ireturn
         3: .line 145
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* sourceType */
            aload 2 /* targetType */
            invokevirtual org.springframework.core.convert.support.GenericConversionService.getConverter:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Lorg/springframework/core/convert/converter/GenericConverter;
            astore 3 /* converter */
        start local 3 // org.springframework.core.convert.converter.GenericConverter converter
         4: .line 146
            aload 3 /* converter */
            ifnull 5
            iconst_1
            ireturn
      StackMap locals: org.springframework.core.convert.converter.GenericConverter
      StackMap stack:
         5: iconst_0
            ireturn
        end local 3 // org.springframework.core.convert.converter.GenericConverter converter
        end local 2 // org.springframework.core.convert.TypeDescriptor targetType
        end local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    6     1  sourceType  Lorg/springframework/core/convert/TypeDescriptor;
            0    6     2  targetType  Lorg/springframework/core/convert/TypeDescriptor;
            4    6     3   converter  Lorg/springframework/core/convert/converter/GenericConverter;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
            Name  Flags
      sourceType  
      targetType  

  public boolean canBypassConvert(org.springframework.core.convert.TypeDescriptor, org.springframework.core.convert.TypeDescriptor);
    descriptor: (Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        start local 2 // org.springframework.core.convert.TypeDescriptor targetType
         0: .line 161
            aload 2 /* targetType */
            ldc "Target type to convert to cannot be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 162
            aload 1 /* sourceType */
            ifnonnull 3
         2: .line 163
            iconst_1
            ireturn
         3: .line 165
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* sourceType */
            aload 2 /* targetType */
            invokevirtual org.springframework.core.convert.support.GenericConversionService.getConverter:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Lorg/springframework/core/convert/converter/GenericConverter;
            astore 3 /* converter */
        start local 3 // org.springframework.core.convert.converter.GenericConverter converter
         4: .line 166
            aload 3 /* converter */
            getstatic org.springframework.core.convert.support.GenericConversionService.NO_OP_CONVERTER:Lorg/springframework/core/convert/converter/GenericConverter;
            if_acmpne 5
            iconst_1
            ireturn
      StackMap locals: org.springframework.core.convert.converter.GenericConverter
      StackMap stack:
         5: iconst_0
            ireturn
        end local 3 // org.springframework.core.convert.converter.GenericConverter converter
        end local 2 // org.springframework.core.convert.TypeDescriptor targetType
        end local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    6     1  sourceType  Lorg/springframework/core/convert/TypeDescriptor;
            0    6     2  targetType  Lorg/springframework/core/convert/TypeDescriptor;
            4    6     3   converter  Lorg/springframework/core/convert/converter/GenericConverter;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
            Name  Flags
      sourceType  
      targetType  

  public <T> T convert(, java.lang.Class<T>);
    descriptor: (Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // java.lang.Object source
        start local 2 // java.lang.Class targetType
         0: .line 173
            aload 2 /* targetType */
            ldc "Target type to convert to cannot be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 174
            aload 0 /* this */
            aload 1 /* source */
            aload 1 /* source */
            invokestatic org.springframework.core.convert.TypeDescriptor.forObject:(Ljava/lang/Object;)Lorg/springframework/core/convert/TypeDescriptor;
            aload 2 /* targetType */
            invokestatic org.springframework.core.convert.TypeDescriptor.valueOf:(Ljava/lang/Class;)Lorg/springframework/core/convert/TypeDescriptor;
            invokevirtual org.springframework.core.convert.support.GenericConversionService.convert:(Ljava/lang/Object;Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Class targetType
        end local 1 // java.lang.Object source
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    2     1      source  Ljava/lang/Object;
            0    2     2  targetType  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Object;Ljava/lang/Class<TT;>;)TT;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
            Name  Flags
      source      
      targetType  

  public java.lang.Object convert(java.lang.Object, org.springframework.core.convert.TypeDescriptor, org.springframework.core.convert.TypeDescriptor);
    descriptor: (Ljava/lang/Object;Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // java.lang.Object source
        start local 2 // org.springframework.core.convert.TypeDescriptor sourceType
        start local 3 // org.springframework.core.convert.TypeDescriptor targetType
         0: .line 180
            aload 3 /* targetType */
            ldc "Target type to convert to cannot be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 181
            aload 2 /* sourceType */
            ifnonnull 6
         2: .line 182
            aload 1 /* source */
            ifnonnull 3
            iconst_1
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: ldc "Source must be [null] if source type == [null]"
            invokestatic org.springframework.util.Assert.isTrue:(ZLjava/lang/String;)V
         5: .line 183
            aload 0 /* this */
            aconst_null
            aload 3 /* targetType */
            aload 0 /* this */
            aconst_null
            aload 3 /* targetType */
            invokevirtual org.springframework.core.convert.support.GenericConversionService.convertNullSource:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Ljava/lang/Object;
            invokevirtual org.springframework.core.convert.support.GenericConversionService.handleResult:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;Ljava/lang/Object;)Ljava/lang/Object;
            areturn
         6: .line 185
      StackMap locals:
      StackMap stack:
            aload 1 /* source */
            ifnull 10
            aload 2 /* sourceType */
            invokevirtual org.springframework.core.convert.TypeDescriptor.getObjectType:()Ljava/lang/Class;
            aload 1 /* source */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifne 10
         7: .line 186
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Source to convert from must be an instance of ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         8: .line 187
            aload 2 /* sourceType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]; instead it was a ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* source */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 186
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 189
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* sourceType */
            aload 3 /* targetType */
            invokevirtual org.springframework.core.convert.support.GenericConversionService.getConverter:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Lorg/springframework/core/convert/converter/GenericConverter;
            astore 4 /* converter */
        start local 4 // org.springframework.core.convert.converter.GenericConverter converter
        11: .line 190
            aload 4 /* converter */
            ifnull 14
        12: .line 191
            aload 4 /* converter */
            aload 1 /* source */
            aload 2 /* sourceType */
            aload 3 /* targetType */
            invokestatic org.springframework.core.convert.support.ConversionUtils.invokeConverter:(Lorg/springframework/core/convert/converter/GenericConverter;Ljava/lang/Object;Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Ljava/lang/Object;
            astore 5 /* result */
        start local 5 // java.lang.Object result
        13: .line 192
            aload 0 /* this */
            aload 2 /* sourceType */
            aload 3 /* targetType */
            aload 5 /* result */
            invokevirtual org.springframework.core.convert.support.GenericConversionService.handleResult:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 5 // java.lang.Object result
        14: .line 194
      StackMap locals: org.springframework.core.convert.converter.GenericConverter
      StackMap stack:
            aload 0 /* this */
            aload 1 /* source */
            aload 2 /* sourceType */
            aload 3 /* targetType */
            invokevirtual org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound:(Ljava/lang/Object;Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Ljava/lang/Object;
            areturn
        end local 4 // org.springframework.core.convert.converter.GenericConverter converter
        end local 3 // org.springframework.core.convert.TypeDescriptor targetType
        end local 2 // org.springframework.core.convert.TypeDescriptor sourceType
        end local 1 // java.lang.Object source
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0   15     1      source  Ljava/lang/Object;
            0   15     2  sourceType  Lorg/springframework/core/convert/TypeDescriptor;
            0   15     3  targetType  Lorg/springframework/core/convert/TypeDescriptor;
           11   15     4   converter  Lorg/springframework/core/convert/converter/GenericConverter;
           13   14     5      result  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
        org.springframework.lang.Nullable()
      2:
    MethodParameters:
            Name  Flags
      source      
      sourceType  
      targetType  

  public java.lang.Object convert(java.lang.Object, org.springframework.core.convert.TypeDescriptor);
    descriptor: (Ljava/lang/Object;Lorg/springframework/core/convert/TypeDescriptor;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // java.lang.Object source
        start local 2 // org.springframework.core.convert.TypeDescriptor targetType
         0: .line 212
            aload 0 /* this */
            aload 1 /* source */
            aload 1 /* source */
            invokestatic org.springframework.core.convert.TypeDescriptor.forObject:(Ljava/lang/Object;)Lorg/springframework/core/convert/TypeDescriptor;
            aload 2 /* targetType */
            invokevirtual org.springframework.core.convert.support.GenericConversionService.convert:(Ljava/lang/Object;Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Ljava/lang/Object;
            areturn
        end local 2 // org.springframework.core.convert.TypeDescriptor targetType
        end local 1 // java.lang.Object source
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    1     1      source  Ljava/lang/Object;
            0    1     2  targetType  Lorg/springframework/core/convert/TypeDescriptor;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
            Name  Flags
      source      
      targetType  

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
         0: .line 217
            aload 0 /* this */
            getfield org.springframework.core.convert.support.GenericConversionService.converters:Lorg/springframework/core/convert/support/GenericConversionService$Converters;
            invokevirtual org.springframework.core.convert.support.GenericConversionService$Converters.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/core/convert/support/GenericConversionService;

  protected java.lang.Object convertNullSource(org.springframework.core.convert.TypeDescriptor, org.springframework.core.convert.TypeDescriptor);
    descriptor: (Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        start local 2 // org.springframework.core.convert.TypeDescriptor targetType
         0: .line 235
            aload 2 /* targetType */
            invokevirtual org.springframework.core.convert.TypeDescriptor.getObjectType:()Ljava/lang/Class;
            ldc Ljava/util/Optional;
            if_acmpne 2
         1: .line 236
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            areturn
         2: .line 238
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // org.springframework.core.convert.TypeDescriptor targetType
        end local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    3     1  sourceType  Lorg/springframework/core/convert/TypeDescriptor;
            0    3     2  targetType  Lorg/springframework/core/convert/TypeDescriptor;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
            Name  Flags
      sourceType  
      targetType  

  protected org.springframework.core.convert.converter.GenericConverter getConverter(org.springframework.core.convert.TypeDescriptor, org.springframework.core.convert.TypeDescriptor);
    descriptor: (Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Lorg/springframework/core/convert/converter/GenericConverter;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        start local 2 // org.springframework.core.convert.TypeDescriptor targetType
         0: .line 254
            new org.springframework.core.convert.support.GenericConversionService$ConverterCacheKey
            dup
            aload 1 /* sourceType */
            aload 2 /* targetType */
            invokespecial org.springframework.core.convert.support.GenericConversionService$ConverterCacheKey.<init>:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)V
            astore 3 /* key */
        start local 3 // org.springframework.core.convert.support.GenericConversionService$ConverterCacheKey key
         1: .line 255
            aload 0 /* this */
            getfield org.springframework.core.convert.support.GenericConversionService.converterCache:Ljava/util/Map;
            aload 3 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.core.convert.converter.GenericConverter
            astore 4 /* converter */
        start local 4 // org.springframework.core.convert.converter.GenericConverter converter
         2: .line 256
            aload 4 /* converter */
            ifnull 6
         3: .line 257
            aload 4 /* converter */
            getstatic org.springframework.core.convert.support.GenericConversionService.NO_MATCH:Lorg/springframework/core/convert/converter/GenericConverter;
            if_acmpeq 4
            aload 4 /* converter */
            goto 5
      StackMap locals: org.springframework.core.convert.support.GenericConversionService$ConverterCacheKey org.springframework.core.convert.converter.GenericConverter
      StackMap stack:
         4: aconst_null
      StackMap locals:
      StackMap stack: org.springframework.core.convert.converter.GenericConverter
         5: areturn
         6: .line 260
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.core.convert.support.GenericConversionService.converters:Lorg/springframework/core/convert/support/GenericConversionService$Converters;
            aload 1 /* sourceType */
            aload 2 /* targetType */
            invokevirtual org.springframework.core.convert.support.GenericConversionService$Converters.find:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Lorg/springframework/core/convert/converter/GenericConverter;
            astore 4 /* converter */
         7: .line 261
            aload 4 /* converter */
            ifnonnull 9
         8: .line 262
            aload 0 /* this */
            aload 1 /* sourceType */
            aload 2 /* targetType */
            invokevirtual org.springframework.core.convert.support.GenericConversionService.getDefaultConverter:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Lorg/springframework/core/convert/converter/GenericConverter;
            astore 4 /* converter */
         9: .line 265
      StackMap locals:
      StackMap stack:
            aload 4 /* converter */
            ifnull 12
        10: .line 266
            aload 0 /* this */
            getfield org.springframework.core.convert.support.GenericConversionService.converterCache:Ljava/util/Map;
            aload 3 /* key */
            aload 4 /* converter */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 267
            aload 4 /* converter */
            areturn
        12: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.core.convert.support.GenericConversionService.converterCache:Ljava/util/Map;
            aload 3 /* key */
            getstatic org.springframework.core.convert.support.GenericConversionService.NO_MATCH:Lorg/springframework/core/convert/converter/GenericConverter;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        13: .line 271
            aconst_null
            areturn
        end local 4 // org.springframework.core.convert.converter.GenericConverter converter
        end local 3 // org.springframework.core.convert.support.GenericConversionService$ConverterCacheKey key
        end local 2 // org.springframework.core.convert.TypeDescriptor targetType
        end local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0   14     1  sourceType  Lorg/springframework/core/convert/TypeDescriptor;
            0   14     2  targetType  Lorg/springframework/core/convert/TypeDescriptor;
            1   14     3         key  Lorg/springframework/core/convert/support/GenericConversionService$ConverterCacheKey;
            2   14     4   converter  Lorg/springframework/core/convert/converter/GenericConverter;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      sourceType  
      targetType  

  protected org.springframework.core.convert.converter.GenericConverter getDefaultConverter(org.springframework.core.convert.TypeDescriptor, org.springframework.core.convert.TypeDescriptor);
    descriptor: (Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Lorg/springframework/core/convert/converter/GenericConverter;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        start local 2 // org.springframework.core.convert.TypeDescriptor targetType
         0: .line 284
            aload 1 /* sourceType */
            aload 2 /* targetType */
            invokevirtual org.springframework.core.convert.TypeDescriptor.isAssignableTo:(Lorg/springframework/core/convert/TypeDescriptor;)Z
            ifeq 1
            getstatic org.springframework.core.convert.support.GenericConversionService.NO_OP_CONVERTER:Lorg/springframework/core/convert/converter/GenericConverter;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
      StackMap locals:
      StackMap stack: org.springframework.core.convert.converter.GenericConverter
         2: areturn
        end local 2 // org.springframework.core.convert.TypeDescriptor targetType
        end local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    3     1  sourceType  Lorg/springframework/core/convert/TypeDescriptor;
            0    3     2  targetType  Lorg/springframework/core/convert/TypeDescriptor;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      sourceType  
      targetType  

  private org.springframework.core.ResolvableType[] getRequiredTypeInfo(java.lang.Class<?>, java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)[Lorg/springframework/core/ResolvableType;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=7, args_size=3
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // java.lang.Class converterClass
        start local 2 // java.lang.Class genericIfc
         0: .line 292
            aload 1 /* converterClass */
            invokestatic org.springframework.core.ResolvableType.forClass:(Ljava/lang/Class;)Lorg/springframework/core/ResolvableType;
            aload 2 /* genericIfc */
            invokevirtual org.springframework.core.ResolvableType.as:(Ljava/lang/Class;)Lorg/springframework/core/ResolvableType;
            astore 3 /* resolvableType */
        start local 3 // org.springframework.core.ResolvableType resolvableType
         1: .line 293
            aload 3 /* resolvableType */
            invokevirtual org.springframework.core.ResolvableType.getGenerics:()[Lorg/springframework/core/ResolvableType;
            astore 4 /* generics */
        start local 4 // org.springframework.core.ResolvableType[] generics
         2: .line 294
            aload 4 /* generics */
            arraylength
            iconst_2
            if_icmpge 4
         3: .line 295
            aconst_null
            areturn
         4: .line 297
      StackMap locals: org.springframework.core.ResolvableType org.springframework.core.ResolvableType[]
      StackMap stack:
            aload 4 /* generics */
            iconst_0
            aaload
            invokevirtual org.springframework.core.ResolvableType.resolve:()Ljava/lang/Class;
            astore 5 /* sourceType */
        start local 5 // java.lang.Class sourceType
         5: .line 298
            aload 4 /* generics */
            iconst_1
            aaload
            invokevirtual org.springframework.core.ResolvableType.resolve:()Ljava/lang/Class;
            astore 6 /* targetType */
        start local 6 // java.lang.Class targetType
         6: .line 299
            aload 5 /* sourceType */
            ifnull 7
            aload 6 /* targetType */
            ifnonnull 8
         7: .line 300
      StackMap locals: java.lang.Class java.lang.Class
      StackMap stack:
            aconst_null
            areturn
         8: .line 302
      StackMap locals:
      StackMap stack:
            aload 4 /* generics */
            areturn
        end local 6 // java.lang.Class targetType
        end local 5 // java.lang.Class sourceType
        end local 4 // org.springframework.core.ResolvableType[] generics
        end local 3 // org.springframework.core.ResolvableType resolvableType
        end local 2 // java.lang.Class genericIfc
        end local 1 // java.lang.Class converterClass
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    9     1  converterClass  Ljava/lang/Class<*>;
            0    9     2      genericIfc  Ljava/lang/Class<*>;
            1    9     3  resolvableType  Lorg/springframework/core/ResolvableType;
            2    9     4        generics  [Lorg/springframework/core/ResolvableType;
            5    9     5      sourceType  Ljava/lang/Class<*>;
            6    9     6      targetType  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)[Lorg/springframework/core/ResolvableType;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
                Name  Flags
      converterClass  
      genericIfc      

  private void invalidateCache();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
         0: .line 306
            aload 0 /* this */
            getfield org.springframework.core.convert.support.GenericConversionService.converterCache:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         1: .line 307
            return
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/core/convert/support/GenericConversionService;

  private java.lang.Object handleConverterNotFound(java.lang.Object, org.springframework.core.convert.TypeDescriptor, org.springframework.core.convert.TypeDescriptor);
    descriptor: (Ljava/lang/Object;Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // java.lang.Object source
        start local 2 // org.springframework.core.convert.TypeDescriptor sourceType
        start local 3 // org.springframework.core.convert.TypeDescriptor targetType
         0: .line 313
            aload 1 /* source */
            ifnonnull 3
         1: .line 314
            aload 0 /* this */
            aload 2 /* sourceType */
            aload 3 /* targetType */
            invokevirtual org.springframework.core.convert.support.GenericConversionService.assertNotPrimitiveTargetType:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)V
         2: .line 315
            aconst_null
            areturn
         3: .line 317
      StackMap locals:
      StackMap stack:
            aload 2 /* sourceType */
            ifnull 4
            aload 2 /* sourceType */
            aload 3 /* targetType */
            invokevirtual org.springframework.core.convert.TypeDescriptor.isAssignableTo:(Lorg/springframework/core/convert/TypeDescriptor;)Z
            ifeq 6
         4: .line 318
      StackMap locals:
      StackMap stack:
            aload 3 /* targetType */
            invokevirtual org.springframework.core.convert.TypeDescriptor.getObjectType:()Ljava/lang/Class;
            aload 1 /* source */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 319
            aload 1 /* source */
            areturn
         6: .line 321
      StackMap locals:
      StackMap stack:
            new org.springframework.core.convert.ConverterNotFoundException
            dup
            aload 2 /* sourceType */
            aload 3 /* targetType */
            invokespecial org.springframework.core.convert.ConverterNotFoundException.<init>:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)V
            athrow
        end local 3 // org.springframework.core.convert.TypeDescriptor targetType
        end local 2 // org.springframework.core.convert.TypeDescriptor sourceType
        end local 1 // java.lang.Object source
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    7     1      source  Ljava/lang/Object;
            0    7     2  sourceType  Lorg/springframework/core/convert/TypeDescriptor;
            0    7     3  targetType  Lorg/springframework/core/convert/TypeDescriptor;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
        org.springframework.lang.Nullable()
      2:
    MethodParameters:
            Name  Flags
      source      
      sourceType  
      targetType  

  private java.lang.Object handleResult(org.springframework.core.convert.TypeDescriptor, org.springframework.core.convert.TypeDescriptor, java.lang.Object);
    descriptor: (Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        start local 2 // org.springframework.core.convert.TypeDescriptor targetType
        start local 3 // java.lang.Object result
         0: .line 326
            aload 3 /* result */
            ifnonnull 2
         1: .line 327
            aload 0 /* this */
            aload 1 /* sourceType */
            aload 2 /* targetType */
            invokevirtual org.springframework.core.convert.support.GenericConversionService.assertNotPrimitiveTargetType:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)V
         2: .line 329
      StackMap locals:
      StackMap stack:
            aload 3 /* result */
            areturn
        end local 3 // java.lang.Object result
        end local 2 // org.springframework.core.convert.TypeDescriptor targetType
        end local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    3     1  sourceType  Lorg/springframework/core/convert/TypeDescriptor;
            0    3     2  targetType  Lorg/springframework/core/convert/TypeDescriptor;
            0    3     3      result  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
      2:
        org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      sourceType  
      targetType  
      result      

  private void assertNotPrimitiveTargetType(org.springframework.core.convert.TypeDescriptor, org.springframework.core.convert.TypeDescriptor);
    descriptor: (Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=3, args_size=3
        start local 0 // org.springframework.core.convert.support.GenericConversionService this
        start local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        start local 2 // org.springframework.core.convert.TypeDescriptor targetType
         0: .line 333
            aload 2 /* targetType */
            invokevirtual org.springframework.core.convert.TypeDescriptor.isPrimitive:()Z
            ifeq 4
         1: .line 334
            new org.springframework.core.convert.ConversionFailedException
            dup
            aload 1 /* sourceType */
            aload 2 /* targetType */
            aconst_null
         2: .line 335
            new java.lang.IllegalArgumentException
            dup
            ldc "A null value cannot be assigned to a primitive type"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
         3: .line 334
            invokespecial org.springframework.core.convert.ConversionFailedException.<init>:(Lorg/springframework/core/convert/TypeDescriptor;Lorg/springframework/core/convert/TypeDescriptor;Ljava/lang/Object;Ljava/lang/Throwable;)V
            athrow
         4: .line 337
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.springframework.core.convert.TypeDescriptor targetType
        end local 1 // org.springframework.core.convert.TypeDescriptor sourceType
        end local 0 // org.springframework.core.convert.support.GenericConversionService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lorg/springframework/core/convert/support/GenericConversionService;
            0    5     1  sourceType  Lorg/springframework/core/convert/TypeDescriptor;
            0    5     2  targetType  Lorg/springframework/core/convert/TypeDescriptor;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
            Name  Flags
      sourceType  
      targetType  
}
SourceFile: "GenericConversionService.java"
NestMembers:
  org.springframework.core.convert.support.GenericConversionService$ConverterAdapter  org.springframework.core.convert.support.GenericConversionService$ConverterCacheKey  org.springframework.core.convert.support.GenericConversionService$ConverterFactoryAdapter  org.springframework.core.convert.support.GenericConversionService$Converters  org.springframework.core.convert.support.GenericConversionService$ConvertersForPair  org.springframework.core.convert.support.GenericConversionService$NoOpConverter
InnerClasses:
  public final ConvertiblePair = org.springframework.core.convert.converter.GenericConverter$ConvertiblePair of org.springframework.core.convert.converter.GenericConverter
  private final ConverterAdapter = org.springframework.core.convert.support.GenericConversionService$ConverterAdapter of org.springframework.core.convert.support.GenericConversionService
  private final ConverterCacheKey = org.springframework.core.convert.support.GenericConversionService$ConverterCacheKey of org.springframework.core.convert.support.GenericConversionService
  private final ConverterFactoryAdapter = org.springframework.core.convert.support.GenericConversionService$ConverterFactoryAdapter of org.springframework.core.convert.support.GenericConversionService
  private Converters = org.springframework.core.convert.support.GenericConversionService$Converters of org.springframework.core.convert.support.GenericConversionService
  private ConvertersForPair = org.springframework.core.convert.support.GenericConversionService$ConvertersForPair of org.springframework.core.convert.support.GenericConversionService
  private NoOpConverter = org.springframework.core.convert.support.GenericConversionService$NoOpConverter of org.springframework.core.convert.support.GenericConversionService