class org.springframework.boot.context.properties.bind.ValueObjectBinder implements org.springframework.boot.context.properties.bind.DataObjectBinder
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.springframework.boot.context.properties.bind.ValueObjectBinder
  super_class: java.lang.Object
{
  private final org.springframework.boot.context.properties.bind.BindConstructorProvider constructorProvider;
    descriptor: Lorg/springframework/boot/context/properties/bind/BindConstructorProvider;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(org.springframework.boot.context.properties.bind.BindConstructorProvider);
    descriptor: (Lorg/springframework/boot/context/properties/bind/BindConstructorProvider;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
        start local 1 // org.springframework.boot.context.properties.bind.BindConstructorProvider constructorProvider
         0: .line 53
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 54
            aload 0 /* this */
            aload 1 /* constructorProvider */
            putfield org.springframework.boot.context.properties.bind.ValueObjectBinder.constructorProvider:Lorg/springframework/boot/context/properties/bind/BindConstructorProvider;
         2: .line 55
            return
        end local 1 // org.springframework.boot.context.properties.bind.BindConstructorProvider constructorProvider
        end local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    3     0                 this  Lorg/springframework/boot/context/properties/bind/ValueObjectBinder;
            0    3     1  constructorProvider  Lorg/springframework/boot/context/properties/bind/BindConstructorProvider;
    MethodParameters:
                     Name  Flags
      constructorProvider  

  public <T> T bind(org.springframework.boot.context.properties.source.ConfigurationPropertyName, org.springframework.boot.context.properties.bind.Bindable<T>, org.springframework.boot.context.properties.bind.Binder$Context, org.springframework.boot.context.properties.bind.DataObjectPropertyBinder);
    descriptor: (Lorg/springframework/boot/context/properties/source/ConfigurationPropertyName;Lorg/springframework/boot/context/properties/bind/Bindable;Lorg/springframework/boot/context/properties/bind/Binder$Context;Lorg/springframework/boot/context/properties/bind/DataObjectPropertyBinder;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=12, args_size=5
        start local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
        start local 1 // org.springframework.boot.context.properties.source.ConfigurationPropertyName name
        start local 2 // org.springframework.boot.context.properties.bind.Bindable target
        start local 3 // org.springframework.boot.context.properties.bind.Binder$Context context
        start local 4 // org.springframework.boot.context.properties.bind.DataObjectPropertyBinder propertyBinder
         0: .line 60
            aload 2 /* target */
            aload 0 /* this */
            getfield org.springframework.boot.context.properties.bind.ValueObjectBinder.constructorProvider:Lorg/springframework/boot/context/properties/bind/BindConstructorProvider;
            aload 3 /* context */
            invokestatic org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject.get:(Lorg/springframework/boot/context/properties/bind/Bindable;Lorg/springframework/boot/context/properties/bind/BindConstructorProvider;Lorg/springframework/boot/context/properties/bind/Binder$Context;)Lorg/springframework/boot/context/properties/bind/ValueObjectBinder$ValueObject;
            astore 5 /* valueObject */
        start local 5 // org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject valueObject
         1: .line 61
            aload 5 /* valueObject */
            ifnonnull 3
         2: .line 62
            aconst_null
            areturn
         3: .line 64
      StackMap locals: org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject
      StackMap stack:
            aload 3 /* context */
            aload 2 /* target */
            invokevirtual org.springframework.boot.context.properties.bind.Bindable.getType:()Lorg/springframework/core/ResolvableType;
            invokevirtual org.springframework.core.ResolvableType.resolve:()Ljava/lang/Class;
            invokevirtual org.springframework.boot.context.properties.bind.Binder$Context.pushConstructorBoundTypes:(Ljava/lang/Class;)V
         4: .line 65
            aload 5 /* valueObject */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject.getConstructorParameters:()Ljava/util/List;
            astore 6 /* parameters */
        start local 6 // java.util.List parameters
         5: .line 66
            new java.util.ArrayList
            dup
            aload 6 /* parameters */
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 7 /* args */
        start local 7 // java.util.List args
         6: .line 67
            iconst_0
            istore 8 /* bound */
        start local 8 // boolean bound
         7: .line 68
            aload 6 /* parameters */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 17
      StackMap locals: org.springframework.boot.context.properties.bind.ValueObjectBinder org.springframework.boot.context.properties.source.ConfigurationPropertyName org.springframework.boot.context.properties.bind.Bindable org.springframework.boot.context.properties.bind.Binder$Context org.springframework.boot.context.properties.bind.DataObjectPropertyBinder org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject java.util.List java.util.List int top java.util.Iterator
      StackMap stack:
         8: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter
            astore 9 /* parameter */
        start local 9 // org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter parameter
         9: .line 69
            aload 9 /* parameter */
            aload 4 /* propertyBinder */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter.bind:(Lorg/springframework/boot/context/properties/bind/DataObjectPropertyBinder;)Ljava/lang/Object;
            astore 11 /* arg */
        start local 11 // java.lang.Object arg
        10: .line 70
            iload 8 /* bound */
            ifne 11
            aload 11 /* arg */
            ifnonnull 11
            iconst_0
            goto 12
      StackMap locals: org.springframework.boot.context.properties.bind.ValueObjectBinder org.springframework.boot.context.properties.source.ConfigurationPropertyName org.springframework.boot.context.properties.bind.Bindable org.springframework.boot.context.properties.bind.Binder$Context org.springframework.boot.context.properties.bind.DataObjectPropertyBinder org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject java.util.List java.util.List int org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter java.util.Iterator java.lang.Object
      StackMap stack:
        11: iconst_1
      StackMap locals:
      StackMap stack: int
        12: istore 8 /* bound */
        13: .line 71
            aload 11 /* arg */
            ifnull 14
            aload 11 /* arg */
            goto 15
      StackMap locals:
      StackMap stack:
        14: aload 0 /* this */
            aload 3 /* context */
            aload 9 /* parameter */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder.getDefaultValue:(Lorg/springframework/boot/context/properties/bind/Binder$Context;Lorg/springframework/boot/context/properties/bind/ValueObjectBinder$ConstructorParameter;)Ljava/lang/Object;
      StackMap locals:
      StackMap stack: java.lang.Object
        15: astore 11 /* arg */
        16: .line 72
            aload 7 /* args */
            aload 11 /* arg */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 11 // java.lang.Object arg
        end local 9 // org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter parameter
        17: .line 68
      StackMap locals: org.springframework.boot.context.properties.bind.ValueObjectBinder org.springframework.boot.context.properties.source.ConfigurationPropertyName org.springframework.boot.context.properties.bind.Bindable org.springframework.boot.context.properties.bind.Binder$Context org.springframework.boot.context.properties.bind.DataObjectPropertyBinder org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject java.util.List java.util.List int top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        18: .line 74
            aload 3 /* context */
            invokevirtual org.springframework.boot.context.properties.bind.Binder$Context.clearConfigurationProperty:()V
        19: .line 75
            aload 3 /* context */
            invokevirtual org.springframework.boot.context.properties.bind.Binder$Context.popConstructorBoundTypes:()V
        20: .line 76
            iload 8 /* bound */
            ifeq 21
            aload 5 /* valueObject */
            aload 7 /* args */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject.instantiate:(Ljava/util/List;)Ljava/lang/Object;
            goto 22
      StackMap locals: org.springframework.boot.context.properties.bind.ValueObjectBinder org.springframework.boot.context.properties.source.ConfigurationPropertyName org.springframework.boot.context.properties.bind.Bindable org.springframework.boot.context.properties.bind.Binder$Context org.springframework.boot.context.properties.bind.DataObjectPropertyBinder org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject java.util.List java.util.List int
      StackMap stack:
        21: aconst_null
      StackMap locals:
      StackMap stack: java.lang.Object
        22: areturn
        end local 8 // boolean bound
        end local 7 // java.util.List args
        end local 6 // java.util.List parameters
        end local 5 // org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject valueObject
        end local 4 // org.springframework.boot.context.properties.bind.DataObjectPropertyBinder propertyBinder
        end local 3 // org.springframework.boot.context.properties.bind.Binder$Context context
        end local 2 // org.springframework.boot.context.properties.bind.Bindable target
        end local 1 // org.springframework.boot.context.properties.source.ConfigurationPropertyName name
        end local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   23     0            this  Lorg/springframework/boot/context/properties/bind/ValueObjectBinder;
            0   23     1            name  Lorg/springframework/boot/context/properties/source/ConfigurationPropertyName;
            0   23     2          target  Lorg/springframework/boot/context/properties/bind/Bindable<TT;>;
            0   23     3         context  Lorg/springframework/boot/context/properties/bind/Binder$Context;
            0   23     4  propertyBinder  Lorg/springframework/boot/context/properties/bind/DataObjectPropertyBinder;
            1   23     5     valueObject  Lorg/springframework/boot/context/properties/bind/ValueObjectBinder$ValueObject<TT;>;
            5   23     6      parameters  Ljava/util/List<Lorg/springframework/boot/context/properties/bind/ValueObjectBinder$ConstructorParameter;>;
            6   23     7            args  Ljava/util/List<Ljava/lang/Object;>;
            7   23     8           bound  Z
            9   17     9       parameter  Lorg/springframework/boot/context/properties/bind/ValueObjectBinder$ConstructorParameter;
           10   17    11             arg  Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Lorg/springframework/boot/context/properties/source/ConfigurationPropertyName;Lorg/springframework/boot/context/properties/bind/Bindable<TT;>;Lorg/springframework/boot/context/properties/bind/Binder$Context;Lorg/springframework/boot/context/properties/bind/DataObjectPropertyBinder;)TT;
    MethodParameters:
                Name  Flags
      name            
      target          
      context         
      propertyBinder  

  public <T> T create(org.springframework.boot.context.properties.bind.Bindable<T>, org.springframework.boot.context.properties.bind.Binder$Context);
    descriptor: (Lorg/springframework/boot/context/properties/bind/Bindable;Lorg/springframework/boot/context/properties/bind/Binder$Context;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
        start local 1 // org.springframework.boot.context.properties.bind.Bindable target
        start local 2 // org.springframework.boot.context.properties.bind.Binder$Context context
         0: .line 81
            aload 1 /* target */
            aload 0 /* this */
            getfield org.springframework.boot.context.properties.bind.ValueObjectBinder.constructorProvider:Lorg/springframework/boot/context/properties/bind/BindConstructorProvider;
            aload 2 /* context */
            invokestatic org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject.get:(Lorg/springframework/boot/context/properties/bind/Bindable;Lorg/springframework/boot/context/properties/bind/BindConstructorProvider;Lorg/springframework/boot/context/properties/bind/Binder$Context;)Lorg/springframework/boot/context/properties/bind/ValueObjectBinder$ValueObject;
            astore 3 /* valueObject */
        start local 3 // org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject valueObject
         1: .line 82
            aload 3 /* valueObject */
            ifnonnull 3
         2: .line 83
            aconst_null
            areturn
         3: .line 85
      StackMap locals: org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject
      StackMap stack:
            aload 3 /* valueObject */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject.getConstructorParameters:()Ljava/util/List;
            astore 4 /* parameters */
        start local 4 // java.util.List parameters
         4: .line 86
            new java.util.ArrayList
            dup
            aload 4 /* parameters */
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 5 /* args */
        start local 5 // java.util.List args
         5: .line 87
            aload 4 /* parameters */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 8
      StackMap locals: org.springframework.boot.context.properties.bind.ValueObjectBinder org.springframework.boot.context.properties.bind.Bindable org.springframework.boot.context.properties.bind.Binder$Context org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject java.util.List java.util.List top java.util.Iterator
      StackMap stack:
         6: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter
            astore 6 /* parameter */
        start local 6 // org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter parameter
         7: .line 88
            aload 5 /* args */
            aload 0 /* this */
            aload 2 /* context */
            aload 6 /* parameter */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder.getDefaultValue:(Lorg/springframework/boot/context/properties/bind/Binder$Context;Lorg/springframework/boot/context/properties/bind/ValueObjectBinder$ConstructorParameter;)Ljava/lang/Object;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter parameter
         8: .line 87
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
         9: .line 90
            aload 3 /* valueObject */
            aload 5 /* args */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject.instantiate:(Ljava/util/List;)Ljava/lang/Object;
            areturn
        end local 5 // java.util.List args
        end local 4 // java.util.List parameters
        end local 3 // org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject valueObject
        end local 2 // org.springframework.boot.context.properties.bind.Binder$Context context
        end local 1 // org.springframework.boot.context.properties.bind.Bindable target
        end local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   10     0         this  Lorg/springframework/boot/context/properties/bind/ValueObjectBinder;
            0   10     1       target  Lorg/springframework/boot/context/properties/bind/Bindable<TT;>;
            0   10     2      context  Lorg/springframework/boot/context/properties/bind/Binder$Context;
            1   10     3  valueObject  Lorg/springframework/boot/context/properties/bind/ValueObjectBinder$ValueObject<TT;>;
            4   10     4   parameters  Ljava/util/List<Lorg/springframework/boot/context/properties/bind/ValueObjectBinder$ConstructorParameter;>;
            5   10     5         args  Ljava/util/List<Ljava/lang/Object;>;
            7    8     6    parameter  Lorg/springframework/boot/context/properties/bind/ValueObjectBinder$ConstructorParameter;
    Signature: <T:Ljava/lang/Object;>(Lorg/springframework/boot/context/properties/bind/Bindable<TT;>;Lorg/springframework/boot/context/properties/bind/Binder$Context;)TT;
    MethodParameters:
         Name  Flags
      target   
      context  

  private <T> T getDefaultValue(org.springframework.boot.context.properties.bind.Binder$Context, org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter);
    descriptor: (Lorg/springframework/boot/context/properties/bind/Binder$Context;Lorg/springframework/boot/context/properties/bind/ValueObjectBinder$ConstructorParameter;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=10, args_size=3
        start local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
        start local 1 // org.springframework.boot.context.properties.bind.Binder$Context context
        start local 2 // org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter parameter
         0: .line 94
            aload 2 /* parameter */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter.getType:()Lorg/springframework/core/ResolvableType;
            astore 3 /* type */
        start local 3 // org.springframework.core.ResolvableType type
         1: .line 95
            aload 2 /* parameter */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter.getAnnotations:()[Ljava/lang/annotation/Annotation;
            astore 4 /* annotations */
        start local 4 // java.lang.annotation.Annotation[] annotations
         2: .line 96
            aload 4 /* annotations */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 10
      StackMap locals: org.springframework.boot.context.properties.bind.ValueObjectBinder org.springframework.boot.context.properties.bind.Binder$Context org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter org.springframework.core.ResolvableType java.lang.annotation.Annotation[] top int int java.lang.annotation.Annotation[]
      StackMap stack:
         3: aload 8
            iload 6
            aaload
            astore 5 /* annotation */
        start local 5 // java.lang.annotation.Annotation annotation
         4: .line 97
            aload 5 /* annotation */
            instanceof org.springframework.boot.context.properties.bind.DefaultValue
            ifeq 9
         5: .line 98
            aload 5 /* annotation */
            checkcast org.springframework.boot.context.properties.bind.DefaultValue
            invokeinterface org.springframework.boot.context.properties.bind.DefaultValue.value:()[Ljava/lang/String;
            astore 9 /* defaultValue */
        start local 9 // java.lang.String[] defaultValue
         6: .line 99
            aload 9 /* defaultValue */
            arraylength
            ifne 8
         7: .line 100
            aload 0 /* this */
            aload 1 /* context */
            aload 3 /* type */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder.getNewInstanceIfPossible:(Lorg/springframework/boot/context/properties/bind/Binder$Context;Lorg/springframework/core/ResolvableType;)Ljava/lang/Object;
            areturn
         8: .line 102
      StackMap locals: org.springframework.boot.context.properties.bind.ValueObjectBinder org.springframework.boot.context.properties.bind.Binder$Context org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter org.springframework.core.ResolvableType java.lang.annotation.Annotation[] java.lang.annotation.Annotation int int java.lang.annotation.Annotation[] java.lang.String[]
      StackMap stack:
            aload 0 /* this */
            aload 1 /* context */
            invokevirtual org.springframework.boot.context.properties.bind.Binder$Context.getConverter:()Lorg/springframework/boot/context/properties/bind/BindConverter;
            aload 9 /* defaultValue */
            aload 3 /* type */
            aload 4 /* annotations */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder.convertDefaultValue:(Lorg/springframework/boot/context/properties/bind/BindConverter;[Ljava/lang/String;Lorg/springframework/core/ResolvableType;[Ljava/lang/annotation/Annotation;)Ljava/lang/Object;
            areturn
        end local 9 // java.lang.String[] defaultValue
        end local 5 // java.lang.annotation.Annotation annotation
         9: .line 96
      StackMap locals: org.springframework.boot.context.properties.bind.ValueObjectBinder org.springframework.boot.context.properties.bind.Binder$Context org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter org.springframework.core.ResolvableType java.lang.annotation.Annotation[] top int int java.lang.annotation.Annotation[]
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
        10: iload 6
            iload 7
            if_icmplt 3
        11: .line 105
            aconst_null
            areturn
        end local 4 // java.lang.annotation.Annotation[] annotations
        end local 3 // org.springframework.core.ResolvableType type
        end local 2 // org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter parameter
        end local 1 // org.springframework.boot.context.properties.bind.Binder$Context context
        end local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   12     0          this  Lorg/springframework/boot/context/properties/bind/ValueObjectBinder;
            0   12     1       context  Lorg/springframework/boot/context/properties/bind/Binder$Context;
            0   12     2     parameter  Lorg/springframework/boot/context/properties/bind/ValueObjectBinder$ConstructorParameter;
            1   12     3          type  Lorg/springframework/core/ResolvableType;
            2   12     4   annotations  [Ljava/lang/annotation/Annotation;
            4    9     5    annotation  Ljava/lang/annotation/Annotation;
            6    9     9  defaultValue  [Ljava/lang/String;
    Signature: <T:Ljava/lang/Object;>(Lorg/springframework/boot/context/properties/bind/Binder$Context;Lorg/springframework/boot/context/properties/bind/ValueObjectBinder$ConstructorParameter;)TT;
    MethodParameters:
           Name  Flags
      context    
      parameter  

  private <T> T convertDefaultValue(org.springframework.boot.context.properties.bind.BindConverter, java.lang.String[], org.springframework.core.ResolvableType, java.lang.annotation.Annotation[]);
    descriptor: (Lorg/springframework/boot/context/properties/bind/BindConverter;[Ljava/lang/String;Lorg/springframework/core/ResolvableType;[Ljava/lang/annotation/Annotation;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
        start local 1 // org.springframework.boot.context.properties.bind.BindConverter converter
        start local 2 // java.lang.String[] defaultValue
        start local 3 // org.springframework.core.ResolvableType type
        start local 4 // java.lang.annotation.Annotation[] annotations
         0: .line 111
            aload 1 /* converter */
            aload 2 /* defaultValue */
            aload 3 /* type */
            aload 4 /* annotations */
            invokevirtual org.springframework.boot.context.properties.bind.BindConverter.convert:(Ljava/lang/Object;Lorg/springframework/core/ResolvableType;[Ljava/lang/annotation/Annotation;)Ljava/lang/Object;
         1: areturn
         2: .line 113
      StackMap locals:
      StackMap stack: org.springframework.core.convert.ConversionException
            astore 5 /* ex */
        start local 5 // org.springframework.core.convert.ConversionException ex
         3: .line 115
            aload 2 /* defaultValue */
            arraylength
            iconst_1
            if_icmpne 5
         4: .line 116
            aload 1 /* converter */
            aload 2 /* defaultValue */
            iconst_0
            aaload
            aload 3 /* type */
            aload 4 /* annotations */
            invokevirtual org.springframework.boot.context.properties.bind.BindConverter.convert:(Ljava/lang/Object;Lorg/springframework/core/ResolvableType;[Ljava/lang/annotation/Annotation;)Ljava/lang/Object;
            areturn
         5: .line 118
      StackMap locals: org.springframework.core.convert.ConversionException
      StackMap stack:
            aload 5 /* ex */
            athrow
        end local 5 // org.springframework.core.convert.ConversionException ex
        end local 4 // java.lang.annotation.Annotation[] annotations
        end local 3 // org.springframework.core.ResolvableType type
        end local 2 // java.lang.String[] defaultValue
        end local 1 // org.springframework.boot.context.properties.bind.BindConverter converter
        end local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lorg/springframework/boot/context/properties/bind/ValueObjectBinder;
            0    6     1     converter  Lorg/springframework/boot/context/properties/bind/BindConverter;
            0    6     2  defaultValue  [Ljava/lang/String;
            0    6     3          type  Lorg/springframework/core/ResolvableType;
            0    6     4   annotations  [Ljava/lang/annotation/Annotation;
            3    6     5            ex  Lorg/springframework/core/convert/ConversionException;
      Exception table:
        from    to  target  type
           0     1       2  Class org.springframework.core.convert.ConversionException
    Signature: <T:Ljava/lang/Object;>(Lorg/springframework/boot/context/properties/bind/BindConverter;[Ljava/lang/String;Lorg/springframework/core/ResolvableType;[Ljava/lang/annotation/Annotation;)TT;
    MethodParameters:
              Name  Flags
      converter     
      defaultValue  
      type          
      annotations   

  private <T> T getNewInstanceIfPossible(org.springframework.boot.context.properties.bind.Binder$Context, org.springframework.core.ResolvableType);
    descriptor: (Lorg/springframework/boot/context/properties/bind/Binder$Context;Lorg/springframework/core/ResolvableType;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
        start local 1 // org.springframework.boot.context.properties.bind.Binder$Context context
        start local 2 // org.springframework.core.ResolvableType type
         0: .line 124
            aload 2 /* type */
            invokevirtual org.springframework.core.ResolvableType.resolve:()Ljava/lang/Class;
            astore 3 /* resolved */
        start local 3 // java.lang.Class resolved
         1: .line 125
            aload 3 /* resolved */
            ifnull 2
            aload 0 /* this */
            aload 3 /* resolved */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder.isEmptyDefaultValueAllowed:(Ljava/lang/Class;)Z
            ifne 2
            iconst_0
            goto 3
      StackMap locals: java.lang.Class
      StackMap stack:
         2: iconst_1
         3: .line 126
      StackMap locals:
      StackMap stack: int
            aload 2 /* type */
            invokedynamic get(Lorg/springframework/core/ResolvableType;)Ljava/util/function/Supplier;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  org/springframework/boot/context/properties/bind/ValueObjectBinder.lambda$0(Lorg/springframework/core/ResolvableType;)Ljava/lang/String; (6)
                  ()Ljava/lang/String;
         4: .line 125
            invokestatic org.springframework.util.Assert.state:(ZLjava/util/function/Supplier;)V
         5: .line 127
            aload 0 /* this */
            aload 2 /* type */
            invokestatic org.springframework.boot.context.properties.bind.Bindable.of:(Lorg/springframework/core/ResolvableType;)Lorg/springframework/boot/context/properties/bind/Bindable;
            aload 1 /* context */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder.create:(Lorg/springframework/boot/context/properties/bind/Bindable;Lorg/springframework/boot/context/properties/bind/Binder$Context;)Ljava/lang/Object;
            astore 4 /* instance */
        start local 4 // java.lang.Object instance
         6: .line 128
            aload 4 /* instance */
            ifnull 8
         7: .line 129
            aload 4 /* instance */
            areturn
         8: .line 131
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 3 /* resolved */
            ifnull 9
            aload 3 /* resolved */
            invokestatic org.springframework.beans.BeanUtils.instantiateClass:(Ljava/lang/Class;)Ljava/lang/Object;
            goto 10
      StackMap locals:
      StackMap stack:
         9: aconst_null
      StackMap locals:
      StackMap stack: java.lang.Object
        10: areturn
        end local 4 // java.lang.Object instance
        end local 3 // java.lang.Class resolved
        end local 2 // org.springframework.core.ResolvableType type
        end local 1 // org.springframework.boot.context.properties.bind.Binder$Context context
        end local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Lorg/springframework/boot/context/properties/bind/ValueObjectBinder;
            0   11     1   context  Lorg/springframework/boot/context/properties/bind/Binder$Context;
            0   11     2      type  Lorg/springframework/core/ResolvableType;
            1   11     3  resolved  Ljava/lang/Class<TT;>;
            6   11     4  instance  TT;
    Signature: <T:Ljava/lang/Object;>(Lorg/springframework/boot/context/properties/bind/Binder$Context;Lorg/springframework/core/ResolvableType;)TT;
    MethodParameters:
         Name  Flags
      context  
      type     

  private boolean isEmptyDefaultValueAllowed(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
        start local 1 // java.lang.Class type
         0: .line 135
            aload 1 /* type */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifne 1
            aload 1 /* type */
            invokevirtual java.lang.Class.isEnum:()Z
            ifne 1
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual org.springframework.boot.context.properties.bind.ValueObjectBinder.isAggregate:(Ljava/lang/Class;)Z
            ifne 1
            aload 1 /* type */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "java.lang"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 136
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         2: .line 138
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // java.lang.Class type
        end local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/boot/context/properties/bind/ValueObjectBinder;
            0    3     1  type  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
      Name  Flags
      type  

  private boolean isAggregate(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
        start local 1 // java.lang.Class type
         0: .line 142
            aload 1 /* type */
            invokevirtual java.lang.Class.isArray:()Z
            ifne 1
            ldc Ljava/util/Map;
            aload 1 /* type */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 1
            ldc Ljava/util/Collection;
            aload 1 /* type */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 1 // java.lang.Class type
        end local 0 // org.springframework.boot.context.properties.bind.ValueObjectBinder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/boot/context/properties/bind/ValueObjectBinder;
            0    2     1  type  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
      Name  Flags
      type  

  private static java.lang.String lambda$0(org.springframework.core.ResolvableType);
    descriptor: (Lorg/springframework/core/ResolvableType;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 126
            new java.lang.StringBuilder
            dup
            ldc "Parameter of type "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " must have a non-empty default value."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "ValueObjectBinder.java"
NestMembers:
  org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter  org.springframework.boot.context.properties.bind.ValueObjectBinder$DefaultValueObject  org.springframework.boot.context.properties.bind.ValueObjectBinder$KotlinValueObject  org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  final Context = org.springframework.boot.context.properties.bind.Binder$Context of org.springframework.boot.context.properties.bind.Binder
  private ConstructorParameter = org.springframework.boot.context.properties.bind.ValueObjectBinder$ConstructorParameter of org.springframework.boot.context.properties.bind.ValueObjectBinder
  private final DefaultValueObject = org.springframework.boot.context.properties.bind.ValueObjectBinder$DefaultValueObject of org.springframework.boot.context.properties.bind.ValueObjectBinder
  private final KotlinValueObject = org.springframework.boot.context.properties.bind.ValueObjectBinder$KotlinValueObject of org.springframework.boot.context.properties.bind.ValueObjectBinder
  private abstract ValueObject = org.springframework.boot.context.properties.bind.ValueObjectBinder$ValueObject of org.springframework.boot.context.properties.bind.ValueObjectBinder