final class org.bson.codecs.pojo.PojoBuilderHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: org.bson.codecs.pojo.PojoBuilderHelper
  super_class: java.lang.Object
{
  static <T> void configureClassModelBuilder(org.bson.codecs.pojo.ClassModelBuilder<T>, java.lang.Class<T>);
    descriptor: (Lorg/bson/codecs/pojo/ClassModelBuilder;Ljava/lang/Class;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=20, args_size=2
        start local 0 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
        start local 1 // java.lang.Class clazz
         0: .line 47
            aload 0 /* classModelBuilder */
            ldc "clazz"
            aload 1 /* clazz */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Class
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.type:(Ljava/lang/Class;)Lorg/bson/codecs/pojo/ClassModelBuilder;
            pop
         1: .line 49
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* annotations */
        start local 2 // java.util.ArrayList annotations
         2: .line 50
            new java.util.TreeSet
            dup
            invokespecial java.util.TreeSet.<init>:()V
            astore 3 /* propertyNames */
        start local 3 // java.util.Set propertyNames
         3: .line 51
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 4 /* propertyTypeParameterMap */
        start local 4 // java.util.Map propertyTypeParameterMap
         4: .line 52
            aload 1 /* clazz */
            astore 5 /* currentClass */
        start local 5 // java.lang.Class currentClass
         5: .line 53
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            astore 6 /* declaringClassName */
        start local 6 // java.lang.String declaringClassName
         6: .line 54
            aconst_null
            astore 7 /* parentClassTypeData */
        start local 7 // org.bson.codecs.pojo.TypeData parentClassTypeData
         7: .line 56
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 8 /* propertyNameMap */
        start local 8 // java.util.Map propertyNameMap
         8: .line 57
            goto 71
         9: .line 58
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map
      StackMap stack:
            aload 2 /* annotations */
            aload 5 /* currentClass */
            invokevirtual java.lang.Class.getDeclaredAnnotations:()[Ljava/lang/annotation/Annotation;
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokevirtual java.util.ArrayList.addAll:(Ljava/util/Collection;)Z
            pop
        10: .line 59
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 9 /* genericTypeNames */
        start local 9 // java.util.List genericTypeNames
        11: .line 60
            aload 5 /* currentClass */
            invokevirtual java.lang.Class.getTypeParameters:()[Ljava/lang/reflect/TypeVariable;
            dup
            astore 13
            arraylength
            istore 12
            iconst_0
            istore 11
            goto 15
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.util.List top int int java.lang.reflect.TypeVariable[]
      StackMap stack:
        12: aload 13
            iload 11
            aaload
            astore 10 /* classTypeVariable */
        start local 10 // java.lang.reflect.TypeVariable classTypeVariable
        13: .line 61
            aload 9 /* genericTypeNames */
            aload 10 /* classTypeVariable */
            invokeinterface java.lang.reflect.TypeVariable.getName:()Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 10 // java.lang.reflect.TypeVariable classTypeVariable
        14: .line 60
            iinc 11 1
      StackMap locals:
      StackMap stack:
        15: iload 11
            iload 12
            if_icmplt 12
        16: .line 64
            aload 5 /* currentClass */
            invokestatic org.bson.codecs.pojo.PropertyReflectionUtils.getPropertyMethods:(Ljava/lang/Class;)Lorg/bson/codecs/pojo/PropertyReflectionUtils$PropertyMethods;
            astore 10 /* propertyMethods */
        start local 10 // org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods propertyMethods
        17: .line 69
            aload 10 /* propertyMethods */
            invokevirtual org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods.getSetterMethods:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 12
            goto 32
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.util.List org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods top java.util.Iterator
      StackMap stack:
        18: aload 12
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            astore 11 /* method */
        start local 11 // java.lang.reflect.Method method
        19: .line 70
            aload 11 /* method */
            invokestatic org.bson.codecs.pojo.PropertyReflectionUtils.toPropertyName:(Ljava/lang/reflect/Method;)Ljava/lang/String;
            astore 13 /* propertyName */
        start local 13 // java.lang.String propertyName
        20: .line 71
            aload 3 /* propertyNames */
            aload 13 /* propertyName */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        21: .line 72
            aload 13 /* propertyName */
            aload 6 /* declaringClassName */
            aload 8 /* propertyNameMap */
        22: .line 73
            aload 11 /* method */
            invokestatic org.bson.codecs.pojo.TypeData.newInstance:(Ljava/lang/reflect/Method;)Lorg/bson/codecs/pojo/TypeData;
            aload 4 /* propertyTypeParameterMap */
            aload 7 /* parentClassTypeData */
            aload 9 /* genericTypeNames */
        23: .line 74
            aload 11 /* method */
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.getGenericType:(Ljava/lang/reflect/Method;)Ljava/lang/reflect/Type;
        24: .line 72
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.getOrCreateMethodPropertyMetadata:(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;Ljava/util/List;Ljava/lang/reflect/Type;)Lorg/bson/codecs/pojo/PropertyMetadata;
            astore 14 /* propertyMetadata */
        start local 14 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
        25: .line 76
            aload 14 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getSetter:()Ljava/lang/reflect/Method;
            ifnonnull 32
        26: .line 77
            aload 14 /* propertyMetadata */
            aload 11 /* method */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.setSetter:(Ljava/lang/reflect/Method;)V
        27: .line 78
            aload 11 /* method */
            invokevirtual java.lang.reflect.Method.getDeclaredAnnotations:()[Ljava/lang/annotation/Annotation;
            dup
            astore 18
            arraylength
            istore 17
            iconst_0
            istore 16
            goto 31
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.util.List org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods java.lang.reflect.Method java.util.Iterator java.lang.String org.bson.codecs.pojo.PropertyMetadata top int int java.lang.annotation.Annotation[]
      StackMap stack:
        28: aload 18
            iload 16
            aaload
            astore 15 /* annotation */
        start local 15 // java.lang.annotation.Annotation annotation
        29: .line 79
            aload 14 /* propertyMetadata */
            aload 15 /* annotation */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.addWriteAnnotation:(Ljava/lang/annotation/Annotation;)Lorg/bson/codecs/pojo/PropertyMetadata;
            pop
        end local 15 // java.lang.annotation.Annotation annotation
        30: .line 78
            iinc 16 1
      StackMap locals:
      StackMap stack:
        31: iload 16
            iload 17
            if_icmplt 28
        end local 14 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
        end local 13 // java.lang.String propertyName
        end local 11 // java.lang.reflect.Method method
        32: .line 69
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.util.List org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods top java.util.Iterator
      StackMap stack:
            aload 12
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 18
        33: .line 84
            aload 10 /* propertyMethods */
            invokevirtual org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods.getGetterMethods:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 12
            goto 51
      StackMap locals:
      StackMap stack:
        34: aload 12
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            astore 11 /* method */
        start local 11 // java.lang.reflect.Method method
        35: .line 85
            aload 11 /* method */
            invokestatic org.bson.codecs.pojo.PropertyReflectionUtils.toPropertyName:(Ljava/lang/reflect/Method;)Ljava/lang/String;
            astore 13 /* propertyName */
        start local 13 // java.lang.String propertyName
        36: .line 86
            aload 3 /* propertyNames */
            aload 13 /* propertyName */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        37: .line 89
            aload 8 /* propertyNameMap */
            aload 13 /* propertyName */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.bson.codecs.pojo.PropertyMetadata
            astore 14 /* propertyMetadata */
        start local 14 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
        38: .line 90
            aload 14 /* propertyMetadata */
            ifnull 40
            aload 14 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getGetter:()Ljava/lang/reflect/Method;
            ifnull 40
        39: .line 91
            goto 51
        40: .line 93
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.util.List org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods java.lang.reflect.Method java.util.Iterator java.lang.String org.bson.codecs.pojo.PropertyMetadata
      StackMap stack:
            aload 13 /* propertyName */
            aload 6 /* declaringClassName */
            aload 8 /* propertyNameMap */
        41: .line 94
            aload 11 /* method */
            invokestatic org.bson.codecs.pojo.TypeData.newInstance:(Ljava/lang/reflect/Method;)Lorg/bson/codecs/pojo/TypeData;
            aload 4 /* propertyTypeParameterMap */
            aload 7 /* parentClassTypeData */
            aload 9 /* genericTypeNames */
        42: .line 95
            aload 11 /* method */
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.getGenericType:(Ljava/lang/reflect/Method;)Ljava/lang/reflect/Type;
        43: .line 93
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.getOrCreateMethodPropertyMetadata:(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;Ljava/util/List;Ljava/lang/reflect/Type;)Lorg/bson/codecs/pojo/PropertyMetadata;
            astore 14 /* propertyMetadata */
        44: .line 96
            aload 14 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getGetter:()Ljava/lang/reflect/Method;
            ifnonnull 51
        45: .line 97
            aload 14 /* propertyMetadata */
            aload 11 /* method */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.setGetter:(Ljava/lang/reflect/Method;)V
        46: .line 98
            aload 11 /* method */
            invokevirtual java.lang.reflect.Method.getDeclaredAnnotations:()[Ljava/lang/annotation/Annotation;
            dup
            astore 18
            arraylength
            istore 17
            iconst_0
            istore 16
            goto 50
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.util.List org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods java.lang.reflect.Method java.util.Iterator java.lang.String org.bson.codecs.pojo.PropertyMetadata top int int java.lang.annotation.Annotation[]
      StackMap stack:
        47: aload 18
            iload 16
            aaload
            astore 15 /* annotation */
        start local 15 // java.lang.annotation.Annotation annotation
        48: .line 99
            aload 14 /* propertyMetadata */
            aload 15 /* annotation */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.addReadAnnotation:(Ljava/lang/annotation/Annotation;)Lorg/bson/codecs/pojo/PropertyMetadata;
            pop
        end local 15 // java.lang.annotation.Annotation annotation
        49: .line 98
            iinc 16 1
      StackMap locals:
      StackMap stack:
        50: iload 16
            iload 17
            if_icmplt 47
        end local 14 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
        end local 13 // java.lang.String propertyName
        end local 11 // java.lang.reflect.Method method
        51: .line 84
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.util.List org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods top java.util.Iterator
      StackMap stack:
            aload 12
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 34
        52: .line 104
            aload 5 /* currentClass */
            invokevirtual java.lang.Class.getDeclaredFields:()[Ljava/lang/reflect/Field;
            dup
            astore 14
            arraylength
            istore 13
            iconst_0
            istore 12
            goto 68
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.util.List org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods top int int java.lang.reflect.Field[]
      StackMap stack:
        53: aload 14
            iload 12
            aaload
            astore 11 /* field */
        start local 11 // java.lang.reflect.Field field
        54: .line 105
            aload 3 /* propertyNames */
            aload 11 /* field */
            invokevirtual java.lang.reflect.Field.getName:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        55: .line 107
            aload 11 /* field */
            invokevirtual java.lang.reflect.Field.getName:()Ljava/lang/String;
            aload 6 /* declaringClassName */
        56: .line 108
            aload 8 /* propertyNameMap */
            aload 11 /* field */
            invokestatic org.bson.codecs.pojo.TypeData.newInstance:(Ljava/lang/reflect/Field;)Lorg/bson/codecs/pojo/TypeData;
            aload 4 /* propertyTypeParameterMap */
            aload 7 /* parentClassTypeData */
            aload 9 /* genericTypeNames */
        57: .line 109
            aload 11 /* field */
            invokevirtual java.lang.reflect.Field.getGenericType:()Ljava/lang/reflect/Type;
        58: .line 107
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.getOrCreateFieldPropertyMetadata:(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;Ljava/util/List;Ljava/lang/reflect/Type;)Lorg/bson/codecs/pojo/PropertyMetadata;
            astore 15 /* propertyMetadata */
        start local 15 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
        59: .line 110
            aload 15 /* propertyMetadata */
            ifnull 67
            aload 15 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getField:()Ljava/lang/reflect/Field;
            ifnonnull 67
        60: .line 111
            aload 15 /* propertyMetadata */
            aload 11 /* field */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.field:(Ljava/lang/reflect/Field;)Lorg/bson/codecs/pojo/PropertyMetadata;
            pop
        61: .line 112
            aload 11 /* field */
            invokevirtual java.lang.reflect.Field.getDeclaredAnnotations:()[Ljava/lang/annotation/Annotation;
            dup
            astore 19
            arraylength
            istore 18
            iconst_0
            istore 17
            goto 66
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.util.List org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods java.lang.reflect.Field int int java.lang.reflect.Field[] org.bson.codecs.pojo.PropertyMetadata top int int java.lang.annotation.Annotation[]
      StackMap stack:
        62: aload 19
            iload 17
            aaload
            astore 16 /* annotation */
        start local 16 // java.lang.annotation.Annotation annotation
        63: .line 113
            aload 15 /* propertyMetadata */
            aload 16 /* annotation */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.addReadAnnotation:(Ljava/lang/annotation/Annotation;)Lorg/bson/codecs/pojo/PropertyMetadata;
            pop
        64: .line 114
            aload 15 /* propertyMetadata */
            aload 16 /* annotation */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.addWriteAnnotation:(Ljava/lang/annotation/Annotation;)Lorg/bson/codecs/pojo/PropertyMetadata;
            pop
        end local 16 // java.lang.annotation.Annotation annotation
        65: .line 112
            iinc 17 1
      StackMap locals:
      StackMap stack:
        66: iload 17
            iload 18
            if_icmplt 62
        end local 15 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
        end local 11 // java.lang.reflect.Field field
        67: .line 104
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.util.List org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods top int int java.lang.reflect.Field[]
      StackMap stack:
            iinc 12 1
      StackMap locals:
      StackMap stack:
        68: iload 12
            iload 13
            if_icmplt 53
        69: .line 119
            aload 5 /* currentClass */
            invokevirtual java.lang.Class.getGenericSuperclass:()Ljava/lang/reflect/Type;
            aload 5 /* currentClass */
            invokestatic org.bson.codecs.pojo.TypeData.newInstance:(Ljava/lang/reflect/Type;Ljava/lang/Class;)Lorg/bson/codecs/pojo/TypeData;
            astore 7 /* parentClassTypeData */
        70: .line 120
            aload 5 /* currentClass */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 5 /* currentClass */
        end local 10 // org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods propertyMethods
        end local 9 // java.util.List genericTypeNames
        71: .line 57
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map
      StackMap stack:
            aload 5 /* currentClass */
            invokevirtual java.lang.Class.isEnum:()Z
            ifne 72
            aload 5 /* currentClass */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            ifnonnull 9
        72: .line 123
      StackMap locals:
      StackMap stack:
            aload 5 /* currentClass */
            invokevirtual java.lang.Class.isInterface:()Z
            ifeq 74
        73: .line 124
            aload 2 /* annotations */
            aload 5 /* currentClass */
            invokevirtual java.lang.Class.getDeclaredAnnotations:()[Ljava/lang/annotation/Annotation;
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokevirtual java.util.ArrayList.addAll:(Ljava/util/Collection;)Z
            pop
        74: .line 127
      StackMap locals:
      StackMap stack:
            aload 3 /* propertyNames */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 10
            goto 79
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map top java.util.Iterator
      StackMap stack:
        75: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 9 /* propertyName */
        start local 9 // java.lang.String propertyName
        76: .line 128
            aload 8 /* propertyNameMap */
            aload 9 /* propertyName */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.bson.codecs.pojo.PropertyMetadata
            astore 11 /* propertyMetadata */
        start local 11 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
        77: .line 129
            aload 11 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.isSerializable:()Z
            ifne 78
            aload 11 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.isDeserializable:()Z
            ifeq 79
        78: .line 130
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.lang.String java.util.Iterator org.bson.codecs.pojo.PropertyMetadata
      StackMap stack:
            aload 0 /* classModelBuilder */
            aload 11 /* propertyMetadata */
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.createPropertyModelBuilder:(Lorg/bson/codecs/pojo/PropertyMetadata;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.addProperty:(Lorg/bson/codecs/pojo/PropertyModelBuilder;)Lorg/bson/codecs/pojo/ClassModelBuilder;
            pop
        end local 11 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
        end local 9 // java.lang.String propertyName
        79: .line 127
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 75
        80: .line 134
            aload 2 /* annotations */
            invokestatic java.util.Collections.reverse:(Ljava/util/List;)V
        81: .line 135
            aload 0 /* classModelBuilder */
            aload 2 /* annotations */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.annotations:(Ljava/util/List;)Lorg/bson/codecs/pojo/ClassModelBuilder;
            pop
        82: .line 136
            aload 0 /* classModelBuilder */
            aload 4 /* propertyTypeParameterMap */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.propertyNameToTypeParameterMap:(Ljava/util/Map;)Lorg/bson/codecs/pojo/ClassModelBuilder;
            pop
        83: .line 138
            aconst_null
            astore 9 /* noArgsConstructor */
        start local 9 // java.lang.reflect.Constructor noArgsConstructor
        84: .line 139
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getDeclaredConstructors:()[Ljava/lang/reflect/Constructor;
            dup
            astore 13
            arraylength
            istore 12
            iconst_0
            istore 11
            goto 91
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.lang.reflect.Constructor top int int java.lang.reflect.Constructor[]
      StackMap stack:
        85: aload 13
            iload 11
            aaload
            astore 10 /* constructor */
        start local 10 // java.lang.reflect.Constructor constructor
        86: .line 140
            aload 10 /* constructor */
            invokevirtual java.lang.reflect.Constructor.getParameterTypes:()[Ljava/lang/Class;
            arraylength
            ifne 90
        87: .line 141
            aload 10 /* constructor */
            invokevirtual java.lang.reflect.Constructor.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
            ifne 88
            aload 10 /* constructor */
            invokevirtual java.lang.reflect.Constructor.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isProtected:(I)Z
            ifeq 90
        88: .line 142
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.lang.reflect.Constructor java.lang.reflect.Constructor int int java.lang.reflect.Constructor[]
      StackMap stack:
            aload 10 /* constructor */
            astore 9 /* noArgsConstructor */
        89: .line 143
            aload 9 /* noArgsConstructor */
            iconst_1
            invokevirtual java.lang.reflect.Constructor.setAccessible:(Z)V
        end local 10 // java.lang.reflect.Constructor constructor
        90: .line 139
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder java.lang.Class java.util.ArrayList java.util.Set java.util.Map java.lang.Class java.lang.String org.bson.codecs.pojo.TypeData java.util.Map java.lang.reflect.Constructor top int int java.lang.reflect.Constructor[]
      StackMap stack:
            iinc 11 1
      StackMap locals:
      StackMap stack:
        91: iload 11
            iload 12
            if_icmplt 85
        92: .line 147
            aload 0 /* classModelBuilder */
            new org.bson.codecs.pojo.InstanceCreatorFactoryImpl
            dup
            new org.bson.codecs.pojo.CreatorExecutable
            dup
            aload 1 /* clazz */
            aload 9 /* noArgsConstructor */
            invokespecial org.bson.codecs.pojo.CreatorExecutable.<init>:(Ljava/lang/Class;Ljava/lang/reflect/Constructor;)V
            invokespecial org.bson.codecs.pojo.InstanceCreatorFactoryImpl.<init>:(Lorg/bson/codecs/pojo/CreatorExecutable;)V
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.instanceCreatorFactory:(Lorg/bson/codecs/pojo/InstanceCreatorFactory;)Lorg/bson/codecs/pojo/ClassModelBuilder;
            pop
        93: .line 148
            return
        end local 9 // java.lang.reflect.Constructor noArgsConstructor
        end local 8 // java.util.Map propertyNameMap
        end local 7 // org.bson.codecs.pojo.TypeData parentClassTypeData
        end local 6 // java.lang.String declaringClassName
        end local 5 // java.lang.Class currentClass
        end local 4 // java.util.Map propertyTypeParameterMap
        end local 3 // java.util.Set propertyNames
        end local 2 // java.util.ArrayList annotations
        end local 1 // java.lang.Class clazz
        end local 0 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   94     0         classModelBuilder  Lorg/bson/codecs/pojo/ClassModelBuilder<TT;>;
            0   94     1                     clazz  Ljava/lang/Class<TT;>;
            2   94     2               annotations  Ljava/util/ArrayList<Ljava/lang/annotation/Annotation;>;
            3   94     3             propertyNames  Ljava/util/Set<Ljava/lang/String;>;
            4   94     4  propertyTypeParameterMap  Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/TypeParameterMap;>;
            5   94     5              currentClass  Ljava/lang/Class<-TT;>;
            6   94     6        declaringClassName  Ljava/lang/String;
            7   94     7       parentClassTypeData  Lorg/bson/codecs/pojo/TypeData<*>;
            8   94     8           propertyNameMap  Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/PropertyMetadata<*>;>;
           11   71     9          genericTypeNames  Ljava/util/List<Ljava/lang/String;>;
           13   14    10         classTypeVariable  Ljava/lang/reflect/TypeVariable<+Ljava/lang/Class<-TT;>;>;
           17   71    10           propertyMethods  Lorg/bson/codecs/pojo/PropertyReflectionUtils$PropertyMethods;
           19   32    11                    method  Ljava/lang/reflect/Method;
           20   32    13              propertyName  Ljava/lang/String;
           25   32    14          propertyMetadata  Lorg/bson/codecs/pojo/PropertyMetadata<*>;
           29   30    15                annotation  Ljava/lang/annotation/Annotation;
           35   51    11                    method  Ljava/lang/reflect/Method;
           36   51    13              propertyName  Ljava/lang/String;
           38   51    14          propertyMetadata  Lorg/bson/codecs/pojo/PropertyMetadata<*>;
           48   49    15                annotation  Ljava/lang/annotation/Annotation;
           54   67    11                     field  Ljava/lang/reflect/Field;
           59   67    15          propertyMetadata  Lorg/bson/codecs/pojo/PropertyMetadata<*>;
           63   65    16                annotation  Ljava/lang/annotation/Annotation;
           76   79     9              propertyName  Ljava/lang/String;
           77   79    11          propertyMetadata  Lorg/bson/codecs/pojo/PropertyMetadata<*>;
           84   94     9         noArgsConstructor  Ljava/lang/reflect/Constructor<TT;>;
           86   90    10               constructor  Ljava/lang/reflect/Constructor<*>;
    Signature: <T:Ljava/lang/Object;>(Lorg/bson/codecs/pojo/ClassModelBuilder<TT;>;Ljava/lang/Class<TT;>;)V
    MethodParameters:
                   Name  Flags
      classModelBuilder  final
      clazz              final

  private static <T, S> org.bson.codecs.pojo.PropertyMetadata<T> getOrCreateMethodPropertyMetadata(java.lang.String, java.lang.String, java.util.Map<java.lang.String, org.bson.codecs.pojo.PropertyMetadata<?>>, org.bson.codecs.pojo.TypeData<T>, java.util.Map<java.lang.String, org.bson.codecs.pojo.TypeParameterMap>, org.bson.codecs.pojo.TypeData<S>, java.util.List<java.lang.String>, java.lang.reflect.Type);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;Ljava/util/List;Ljava/lang/reflect/Type;)Lorg/bson/codecs/pojo/PropertyMetadata;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=8
        start local 0 // java.lang.String propertyName
        start local 1 // java.lang.String declaringClassName
        start local 2 // java.util.Map propertyNameMap
        start local 3 // org.bson.codecs.pojo.TypeData typeData
        start local 4 // java.util.Map propertyTypeParameterMap
        start local 5 // org.bson.codecs.pojo.TypeData parentClassTypeData
        start local 6 // java.util.List genericTypeNames
        start local 7 // java.lang.reflect.Type genericType
         0: .line 158
            aload 0 /* propertyName */
            aload 1 /* declaringClassName */
            aload 2 /* propertyNameMap */
            aload 3 /* typeData */
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.getOrCreatePropertyMetadata:(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;)Lorg/bson/codecs/pojo/PropertyMetadata;
            astore 8 /* propertyMetadata */
        start local 8 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
         1: .line 159
            aload 8 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getTypeData:()Lorg/bson/codecs/pojo/TypeData;
            invokevirtual org.bson.codecs.pojo.TypeData.getType:()Ljava/lang/Class;
            aload 3 /* typeData */
            invokevirtual org.bson.codecs.pojo.TypeData.getType:()Ljava/lang/Class;
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.isAssignableClass:(Ljava/lang/Class;Ljava/lang/Class;)Z
            ifne 5
         2: .line 160
            aload 8 /* propertyMetadata */
            ldc "Property '%s' in %s, has differing data types: %s and %s."
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* propertyName */
            aastore
            dup
            iconst_1
         3: .line 161
            aload 1 /* declaringClassName */
            aastore
            dup
            iconst_2
            aload 8 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getTypeData:()Lorg/bson/codecs/pojo/TypeData;
            aastore
            dup
            iconst_3
            aload 3 /* typeData */
            aastore
         4: .line 160
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.setError:(Ljava/lang/String;)V
         5: .line 163
      StackMap locals: org.bson.codecs.pojo.PropertyMetadata
      StackMap stack:
            aload 8 /* propertyMetadata */
            aload 4 /* propertyTypeParameterMap */
            aload 5 /* parentClassTypeData */
            aload 6 /* genericTypeNames */
            aload 7 /* genericType */
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.cachePropertyTypeData:(Lorg/bson/codecs/pojo/PropertyMetadata;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;Ljava/util/List;Ljava/lang/reflect/Type;)V
         6: .line 164
            aload 8 /* propertyMetadata */
            areturn
        end local 8 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
        end local 7 // java.lang.reflect.Type genericType
        end local 6 // java.util.List genericTypeNames
        end local 5 // org.bson.codecs.pojo.TypeData parentClassTypeData
        end local 4 // java.util.Map propertyTypeParameterMap
        end local 3 // org.bson.codecs.pojo.TypeData typeData
        end local 2 // java.util.Map propertyNameMap
        end local 1 // java.lang.String declaringClassName
        end local 0 // java.lang.String propertyName
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    7     0              propertyName  Ljava/lang/String;
            0    7     1        declaringClassName  Ljava/lang/String;
            0    7     2           propertyNameMap  Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/PropertyMetadata<*>;>;
            0    7     3                  typeData  Lorg/bson/codecs/pojo/TypeData<TT;>;
            0    7     4  propertyTypeParameterMap  Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/TypeParameterMap;>;
            0    7     5       parentClassTypeData  Lorg/bson/codecs/pojo/TypeData<TS;>;
            0    7     6          genericTypeNames  Ljava/util/List<Ljava/lang/String;>;
            0    7     7               genericType  Ljava/lang/reflect/Type;
            1    7     8          propertyMetadata  Lorg/bson/codecs/pojo/PropertyMetadata<TT;>;
    Signature: <T:Ljava/lang/Object;S:Ljava/lang/Object;>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/PropertyMetadata<*>;>;Lorg/bson/codecs/pojo/TypeData<TT;>;Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/TypeParameterMap;>;Lorg/bson/codecs/pojo/TypeData<TS;>;Ljava/util/List<Ljava/lang/String;>;Ljava/lang/reflect/Type;)Lorg/bson/codecs/pojo/PropertyMetadata<TT;>;
    MethodParameters:
                          Name  Flags
      propertyName              final
      declaringClassName        final
      propertyNameMap           final
      typeData                  final
      propertyTypeParameterMap  final
      parentClassTypeData       final
      genericTypeNames          final
      genericType               final

  private static boolean isAssignableClass(java.lang.Class<?>, java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Class propertyTypeClass
        start local 1 // java.lang.Class typeDataClass
         0: .line 168
            aload 0 /* propertyTypeClass */
            aload 1 /* typeDataClass */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 1
            aload 1 /* typeDataClass */
            aload 0 /* propertyTypeClass */
            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 typeDataClass
        end local 0 // java.lang.Class propertyTypeClass
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0  propertyTypeClass  Ljava/lang/Class<*>;
            0    2     1      typeDataClass  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Z
    MethodParameters:
                   Name  Flags
      propertyTypeClass  final
      typeDataClass      final

  private static <T, S> org.bson.codecs.pojo.PropertyMetadata<T> getOrCreateFieldPropertyMetadata(java.lang.String, java.lang.String, java.util.Map<java.lang.String, org.bson.codecs.pojo.PropertyMetadata<?>>, org.bson.codecs.pojo.TypeData<T>, java.util.Map<java.lang.String, org.bson.codecs.pojo.TypeParameterMap>, org.bson.codecs.pojo.TypeData<S>, java.util.List<java.lang.String>, java.lang.reflect.Type);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;Ljava/util/List;Ljava/lang/reflect/Type;)Lorg/bson/codecs/pojo/PropertyMetadata;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=9, args_size=8
        start local 0 // java.lang.String propertyName
        start local 1 // java.lang.String declaringClassName
        start local 2 // java.util.Map propertyNameMap
        start local 3 // org.bson.codecs.pojo.TypeData typeData
        start local 4 // java.util.Map propertyTypeParameterMap
        start local 5 // org.bson.codecs.pojo.TypeData parentClassTypeData
        start local 6 // java.util.List genericTypeNames
        start local 7 // java.lang.reflect.Type genericType
         0: .line 179
            aload 0 /* propertyName */
            aload 1 /* declaringClassName */
            aload 2 /* propertyNameMap */
            aload 3 /* typeData */
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.getOrCreatePropertyMetadata:(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;)Lorg/bson/codecs/pojo/PropertyMetadata;
            astore 8 /* propertyMetadata */
        start local 8 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
         1: .line 180
            aload 8 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getTypeData:()Lorg/bson/codecs/pojo/TypeData;
            invokevirtual org.bson.codecs.pojo.TypeData.getType:()Ljava/lang/Class;
            aload 3 /* typeData */
            invokevirtual org.bson.codecs.pojo.TypeData.getType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 3
         2: .line 181
            aconst_null
            areturn
         3: .line 183
      StackMap locals: org.bson.codecs.pojo.PropertyMetadata
      StackMap stack:
            aload 8 /* propertyMetadata */
            aload 4 /* propertyTypeParameterMap */
            aload 5 /* parentClassTypeData */
            aload 6 /* genericTypeNames */
            aload 7 /* genericType */
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.cachePropertyTypeData:(Lorg/bson/codecs/pojo/PropertyMetadata;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;Ljava/util/List;Ljava/lang/reflect/Type;)V
         4: .line 184
            aload 8 /* propertyMetadata */
            areturn
        end local 8 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
        end local 7 // java.lang.reflect.Type genericType
        end local 6 // java.util.List genericTypeNames
        end local 5 // org.bson.codecs.pojo.TypeData parentClassTypeData
        end local 4 // java.util.Map propertyTypeParameterMap
        end local 3 // org.bson.codecs.pojo.TypeData typeData
        end local 2 // java.util.Map propertyNameMap
        end local 1 // java.lang.String declaringClassName
        end local 0 // java.lang.String propertyName
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    5     0              propertyName  Ljava/lang/String;
            0    5     1        declaringClassName  Ljava/lang/String;
            0    5     2           propertyNameMap  Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/PropertyMetadata<*>;>;
            0    5     3                  typeData  Lorg/bson/codecs/pojo/TypeData<TT;>;
            0    5     4  propertyTypeParameterMap  Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/TypeParameterMap;>;
            0    5     5       parentClassTypeData  Lorg/bson/codecs/pojo/TypeData<TS;>;
            0    5     6          genericTypeNames  Ljava/util/List<Ljava/lang/String;>;
            0    5     7               genericType  Ljava/lang/reflect/Type;
            1    5     8          propertyMetadata  Lorg/bson/codecs/pojo/PropertyMetadata<TT;>;
    Signature: <T:Ljava/lang/Object;S:Ljava/lang/Object;>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/PropertyMetadata<*>;>;Lorg/bson/codecs/pojo/TypeData<TT;>;Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/TypeParameterMap;>;Lorg/bson/codecs/pojo/TypeData<TS;>;Ljava/util/List<Ljava/lang/String;>;Ljava/lang/reflect/Type;)Lorg/bson/codecs/pojo/PropertyMetadata<TT;>;
    MethodParameters:
                          Name  Flags
      propertyName              final
      declaringClassName        final
      propertyNameMap           final
      typeData                  final
      propertyTypeParameterMap  final
      parentClassTypeData       final
      genericTypeNames          final
      genericType               final

  private static <T> org.bson.codecs.pojo.PropertyMetadata<T> getOrCreatePropertyMetadata(java.lang.String, java.lang.String, java.util.Map<java.lang.String, org.bson.codecs.pojo.PropertyMetadata<?>>, org.bson.codecs.pojo.TypeData<T>);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;)Lorg/bson/codecs/pojo/PropertyMetadata;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // java.lang.String propertyName
        start local 1 // java.lang.String declaringClassName
        start local 2 // java.util.Map propertyNameMap
        start local 3 // org.bson.codecs.pojo.TypeData typeData
         0: .line 192
            aload 2 /* propertyNameMap */
            aload 0 /* propertyName */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.bson.codecs.pojo.PropertyMetadata
            astore 4 /* propertyMetadata */
        start local 4 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
         1: .line 193
            aload 4 /* propertyMetadata */
            ifnonnull 4
         2: .line 194
            new org.bson.codecs.pojo.PropertyMetadata
            dup
            aload 0 /* propertyName */
            aload 1 /* declaringClassName */
            aload 3 /* typeData */
            invokespecial org.bson.codecs.pojo.PropertyMetadata.<init>:(Ljava/lang/String;Ljava/lang/String;Lorg/bson/codecs/pojo/TypeData;)V
            astore 4 /* propertyMetadata */
         3: .line 195
            aload 2 /* propertyNameMap */
            aload 0 /* propertyName */
            aload 4 /* propertyMetadata */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 197
      StackMap locals: org.bson.codecs.pojo.PropertyMetadata
      StackMap stack:
            aload 4 /* propertyMetadata */
            areturn
        end local 4 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
        end local 3 // org.bson.codecs.pojo.TypeData typeData
        end local 2 // java.util.Map propertyNameMap
        end local 1 // java.lang.String declaringClassName
        end local 0 // java.lang.String propertyName
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0        propertyName  Ljava/lang/String;
            0    5     1  declaringClassName  Ljava/lang/String;
            0    5     2     propertyNameMap  Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/PropertyMetadata<*>;>;
            0    5     3            typeData  Lorg/bson/codecs/pojo/TypeData<TT;>;
            1    5     4    propertyMetadata  Lorg/bson/codecs/pojo/PropertyMetadata<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/PropertyMetadata<*>;>;Lorg/bson/codecs/pojo/TypeData<TT;>;)Lorg/bson/codecs/pojo/PropertyMetadata<TT;>;
    MethodParameters:
                    Name  Flags
      propertyName        final
      declaringClassName  final
      propertyNameMap     final
      typeData            final

  private static <T, S> void cachePropertyTypeData(org.bson.codecs.pojo.PropertyMetadata<T>, java.util.Map<java.lang.String, org.bson.codecs.pojo.TypeParameterMap>, org.bson.codecs.pojo.TypeData<S>, java.util.List<java.lang.String>, java.lang.reflect.Type);
    descriptor: (Lorg/bson/codecs/pojo/PropertyMetadata;Ljava/util/Map;Lorg/bson/codecs/pojo/TypeData;Ljava/util/List;Ljava/lang/reflect/Type;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=5
        start local 0 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
        start local 1 // java.util.Map propertyTypeParameterMap
        start local 2 // org.bson.codecs.pojo.TypeData parentClassTypeData
        start local 3 // java.util.List genericTypeNames
        start local 4 // java.lang.reflect.Type genericType
         0: .line 205
            aload 3 /* genericTypeNames */
            aload 4 /* genericType */
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.getTypeParameterMap:(Ljava/util/List;Ljava/lang/reflect/Type;)Lorg/bson/codecs/pojo/TypeParameterMap;
            astore 5 /* typeParameterMap */
        start local 5 // org.bson.codecs.pojo.TypeParameterMap typeParameterMap
         1: .line 206
            aload 1 /* propertyTypeParameterMap */
            aload 0 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getName:()Ljava/lang/String;
            aload 5 /* typeParameterMap */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 207
            aload 0 /* propertyMetadata */
            aload 5 /* typeParameterMap */
            aload 2 /* parentClassTypeData */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.typeParameterInfo:(Lorg/bson/codecs/pojo/TypeParameterMap;Lorg/bson/codecs/pojo/TypeData;)Lorg/bson/codecs/pojo/PropertyMetadata;
            pop
         3: .line 208
            return
        end local 5 // org.bson.codecs.pojo.TypeParameterMap typeParameterMap
        end local 4 // java.lang.reflect.Type genericType
        end local 3 // java.util.List genericTypeNames
        end local 2 // org.bson.codecs.pojo.TypeData parentClassTypeData
        end local 1 // java.util.Map propertyTypeParameterMap
        end local 0 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    4     0          propertyMetadata  Lorg/bson/codecs/pojo/PropertyMetadata<TT;>;
            0    4     1  propertyTypeParameterMap  Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/TypeParameterMap;>;
            0    4     2       parentClassTypeData  Lorg/bson/codecs/pojo/TypeData<TS;>;
            0    4     3          genericTypeNames  Ljava/util/List<Ljava/lang/String;>;
            0    4     4               genericType  Ljava/lang/reflect/Type;
            1    4     5          typeParameterMap  Lorg/bson/codecs/pojo/TypeParameterMap;
    Signature: <T:Ljava/lang/Object;S:Ljava/lang/Object;>(Lorg/bson/codecs/pojo/PropertyMetadata<TT;>;Ljava/util/Map<Ljava/lang/String;Lorg/bson/codecs/pojo/TypeParameterMap;>;Lorg/bson/codecs/pojo/TypeData<TS;>;Ljava/util/List<Ljava/lang/String;>;Ljava/lang/reflect/Type;)V
    MethodParameters:
                          Name  Flags
      propertyMetadata          final
      propertyTypeParameterMap  final
      parentClassTypeData       final
      genericTypeNames          final
      genericType               final

  private static java.lang.reflect.Type getGenericType(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Ljava/lang/reflect/Type;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.reflect.Method method
         0: .line 211
            aload 0 /* method */
            invokestatic org.bson.codecs.pojo.PropertyReflectionUtils.isGetter:(Ljava/lang/reflect/Method;)Z
            ifeq 1
            aload 0 /* method */
            invokevirtual java.lang.reflect.Method.getGenericReturnType:()Ljava/lang/reflect/Type;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* method */
            invokevirtual java.lang.reflect.Method.getGenericParameterTypes:()[Ljava/lang/reflect/Type;
            iconst_0
            aaload
      StackMap locals:
      StackMap stack: java.lang.reflect.Type
         2: areturn
        end local 0 // java.lang.reflect.Method method
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  method  Ljava/lang/reflect/Method;
    MethodParameters:
        Name  Flags
      method  final

  static <T> org.bson.codecs.pojo.PropertyModelBuilder<T> createPropertyModelBuilder(org.bson.codecs.pojo.PropertyMetadata<T>);
    descriptor: (Lorg/bson/codecs/pojo/PropertyMetadata;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
         0: .line 216
            invokestatic org.bson.codecs.pojo.PropertyModel.builder:()Lorg/bson/codecs/pojo/PropertyModelBuilder;
         1: .line 217
            aload 0 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getName:()Ljava/lang/String;
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.propertyName:(Ljava/lang/String;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
         2: .line 218
            aload 0 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getName:()Ljava/lang/String;
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.readName:(Ljava/lang/String;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
         3: .line 219
            aload 0 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getName:()Ljava/lang/String;
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.writeName:(Ljava/lang/String;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
         4: .line 220
            aload 0 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getTypeData:()Lorg/bson/codecs/pojo/TypeData;
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.typeData:(Lorg/bson/codecs/pojo/TypeData;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
         5: .line 221
            aload 0 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getReadAnnotations:()Ljava/util/List;
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.readAnnotations:(Ljava/util/List;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
         6: .line 222
            aload 0 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getWriteAnnotations:()Ljava/util/List;
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.writeAnnotations:(Ljava/util/List;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
         7: .line 223
            new org.bson.codecs.pojo.PropertyModelSerializationImpl
            dup
            invokespecial org.bson.codecs.pojo.PropertyModelSerializationImpl.<init>:()V
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.propertySerialization:(Lorg/bson/codecs/pojo/PropertySerialization;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
         8: .line 224
            new org.bson.codecs.pojo.PropertyAccessorImpl
            dup
            aload 0 /* propertyMetadata */
            invokespecial org.bson.codecs.pojo.PropertyAccessorImpl.<init>:(Lorg/bson/codecs/pojo/PropertyMetadata;)V
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.propertyAccessor:(Lorg/bson/codecs/pojo/PropertyAccessor;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
         9: .line 225
            aload 0 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getError:()Ljava/lang/String;
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.setError:(Ljava/lang/String;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
        10: .line 216
            astore 1 /* propertyModelBuilder */
        start local 1 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
        11: .line 227
            aload 0 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getTypeParameters:()Ljava/util/List;
            ifnull 13
        12: .line 228
            aload 1 /* propertyModelBuilder */
            aload 0 /* propertyMetadata */
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.specializePropertyModelBuilder:(Lorg/bson/codecs/pojo/PropertyModelBuilder;Lorg/bson/codecs/pojo/PropertyMetadata;)V
        13: .line 231
      StackMap locals: org.bson.codecs.pojo.PropertyModelBuilder
      StackMap stack:
            aload 1 /* propertyModelBuilder */
            areturn
        end local 1 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
        end local 0 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   14     0      propertyMetadata  Lorg/bson/codecs/pojo/PropertyMetadata<TT;>;
           11   14     1  propertyModelBuilder  Lorg/bson/codecs/pojo/PropertyModelBuilder<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lorg/bson/codecs/pojo/PropertyMetadata<TT;>;)Lorg/bson/codecs/pojo/PropertyModelBuilder<TT;>;
    MethodParameters:
                  Name  Flags
      propertyMetadata  final

  private static org.bson.codecs.pojo.TypeParameterMap getTypeParameterMap(java.util.List<java.lang.String>, java.lang.reflect.Type);
    descriptor: (Ljava/util/List;Ljava/lang/reflect/Type;)Lorg/bson/codecs/pojo/TypeParameterMap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // java.util.List genericTypeNames
        start local 1 // java.lang.reflect.Type propertyType
         0: .line 235
            aload 0 /* genericTypeNames */
            aload 1 /* propertyType */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokeinterface java.util.List.indexOf:(Ljava/lang/Object;)I
            istore 2 /* classParamIndex */
        start local 2 // int classParamIndex
         1: .line 236
            invokestatic org.bson.codecs.pojo.TypeParameterMap.builder:()Lorg/bson/codecs/pojo/TypeParameterMap$Builder;
            astore 3 /* builder */
        start local 3 // org.bson.codecs.pojo.TypeParameterMap$Builder builder
         2: .line 237
            iload 2 /* classParamIndex */
            iconst_m1
            if_icmpeq 5
         3: .line 238
            aload 3 /* builder */
            iload 2 /* classParamIndex */
            invokevirtual org.bson.codecs.pojo.TypeParameterMap$Builder.addIndex:(I)Lorg/bson/codecs/pojo/TypeParameterMap$Builder;
            pop
         4: .line 239
            goto 14
         5: .line 240
      StackMap locals: int org.bson.codecs.pojo.TypeParameterMap$Builder
      StackMap stack:
            aload 1 /* propertyType */
            instanceof java.lang.reflect.ParameterizedType
            ifeq 14
         6: .line 241
            aload 1 /* propertyType */
            checkcast java.lang.reflect.ParameterizedType
            astore 4 /* pt */
        start local 4 // java.lang.reflect.ParameterizedType pt
         7: .line 242
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         8: goto 13
         9: .line 243
      StackMap locals: java.lang.reflect.ParameterizedType int
      StackMap stack:
            aload 0 /* genericTypeNames */
            aload 4 /* pt */
            invokeinterface java.lang.reflect.ParameterizedType.getActualTypeArguments:()[Ljava/lang/reflect/Type;
            iload 5 /* i */
            aaload
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokeinterface java.util.List.indexOf:(Ljava/lang/Object;)I
            istore 2 /* classParamIndex */
        10: .line 244
            iload 2 /* classParamIndex */
            iconst_m1
            if_icmpeq 12
        11: .line 245
            aload 3 /* builder */
            iload 5 /* i */
            iload 2 /* classParamIndex */
            invokevirtual org.bson.codecs.pojo.TypeParameterMap$Builder.addIndex:(II)Lorg/bson/codecs/pojo/TypeParameterMap$Builder;
            pop
        12: .line 242
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 5 /* i */
            aload 4 /* pt */
            invokeinterface java.lang.reflect.ParameterizedType.getActualTypeArguments:()[Ljava/lang/reflect/Type;
            arraylength
            if_icmplt 9
        end local 5 // int i
        end local 4 // java.lang.reflect.ParameterizedType pt
        14: .line 250
      StackMap locals:
      StackMap stack:
            aload 3 /* builder */
            invokevirtual org.bson.codecs.pojo.TypeParameterMap$Builder.build:()Lorg/bson/codecs/pojo/TypeParameterMap;
            areturn
        end local 3 // org.bson.codecs.pojo.TypeParameterMap$Builder builder
        end local 2 // int classParamIndex
        end local 1 // java.lang.reflect.Type propertyType
        end local 0 // java.util.List genericTypeNames
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   15     0  genericTypeNames  Ljava/util/List<Ljava/lang/String;>;
            0   15     1      propertyType  Ljava/lang/reflect/Type;
            1   15     2   classParamIndex  I
            2   15     3           builder  Lorg/bson/codecs/pojo/TypeParameterMap$Builder;
            7   14     4                pt  Ljava/lang/reflect/ParameterizedType;
            8   14     5                 i  I
    Signature: (Ljava/util/List<Ljava/lang/String;>;Ljava/lang/reflect/Type;)Lorg/bson/codecs/pojo/TypeParameterMap;
    MethodParameters:
                  Name  Flags
      genericTypeNames  final
      propertyType      final

  private static <V> void specializePropertyModelBuilder(org.bson.codecs.pojo.PropertyModelBuilder<V>, org.bson.codecs.pojo.PropertyMetadata<V>);
    descriptor: (Lorg/bson/codecs/pojo/PropertyModelBuilder;Lorg/bson/codecs/pojo/PropertyMetadata;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
        start local 1 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
         0: .line 255
            aload 1 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getTypeParameterMap:()Lorg/bson/codecs/pojo/TypeParameterMap;
            invokevirtual org.bson.codecs.pojo.TypeParameterMap.hasTypeParameters:()Z
            ifeq 20
            aload 1 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getTypeParameters:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 20
         1: .line 257
            aload 1 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getTypeParameterMap:()Lorg/bson/codecs/pojo/TypeParameterMap;
            invokevirtual org.bson.codecs.pojo.TypeParameterMap.getPropertyToClassParamIndexMap:()Ljava/util/Map;
            astore 3 /* fieldToClassParamIndexMap */
        start local 3 // java.util.Map fieldToClassParamIndexMap
         2: .line 258
            aload 3 /* fieldToClassParamIndexMap */
            iconst_m1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 4 /* classTypeParamRepresentsWholeField */
        start local 4 // java.lang.Integer classTypeParamRepresentsWholeField
         3: .line 259
            aload 4 /* classTypeParamRepresentsWholeField */
            ifnull 6
         4: .line 260
            aload 1 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getTypeParameters:()Ljava/util/List;
            aload 4 /* classTypeParamRepresentsWholeField */
            invokevirtual java.lang.Integer.intValue:()I
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.bson.codecs.pojo.TypeData
            astore 2 /* specializedFieldType */
        start local 2 // org.bson.codecs.pojo.TypeData specializedFieldType
         5: .line 261
            goto 19
        end local 2 // org.bson.codecs.pojo.TypeData specializedFieldType
         6: .line 262
      StackMap locals: org.bson.codecs.pojo.PropertyModelBuilder org.bson.codecs.pojo.PropertyMetadata top java.util.Map java.lang.Integer
      StackMap stack:
            aload 0 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getTypeData:()Lorg/bson/codecs/pojo/TypeData;
            invokevirtual org.bson.codecs.pojo.TypeData.getType:()Ljava/lang/Class;
            invokestatic org.bson.codecs.pojo.TypeData.builder:(Ljava/lang/Class;)Lorg/bson/codecs/pojo/TypeData$Builder;
            astore 5 /* builder */
        start local 5 // org.bson.codecs.pojo.TypeData$Builder builder
         7: .line 263
            new java.util.ArrayList
            dup
            aload 0 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getTypeData:()Lorg/bson/codecs/pojo/TypeData;
            invokevirtual org.bson.codecs.pojo.TypeData.getTypeParameters:()Ljava/util/List;
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 6 /* typeParameters */
        start local 6 // java.util.List typeParameters
         8: .line 264
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         9: goto 16
        10: .line 265
      StackMap locals: org.bson.codecs.pojo.TypeData$Builder java.util.List int
      StackMap stack:
            aload 3 /* fieldToClassParamIndexMap */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 9
            goto 14
      StackMap locals: org.bson.codecs.pojo.PropertyModelBuilder org.bson.codecs.pojo.PropertyMetadata top java.util.Map java.lang.Integer org.bson.codecs.pojo.TypeData$Builder java.util.List int top java.util.Iterator
      StackMap stack:
        11: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 8 /* mapping */
        start local 8 // java.util.Map$Entry mapping
        12: .line 266
            aload 8 /* mapping */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.Integer
            iload 7 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.lang.Integer.equals:(Ljava/lang/Object;)Z
            ifeq 14
        13: .line 267
            aload 6 /* typeParameters */
            iload 7 /* i */
            aload 1 /* propertyMetadata */
            invokevirtual org.bson.codecs.pojo.PropertyMetadata.getTypeParameters:()Ljava/util/List;
            aload 8 /* mapping */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.bson.codecs.pojo.TypeData
            invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
        end local 8 // java.util.Map$Entry mapping
        14: .line 265
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 11
        15: .line 264
            iinc 7 /* i */ 1
      StackMap locals: org.bson.codecs.pojo.PropertyModelBuilder org.bson.codecs.pojo.PropertyMetadata top java.util.Map java.lang.Integer org.bson.codecs.pojo.TypeData$Builder java.util.List int
      StackMap stack:
        16: iload 7 /* i */
            aload 6 /* typeParameters */
            invokeinterface java.util.List.size:()I
            if_icmplt 10
        end local 7 // int i
        17: .line 271
            aload 5 /* builder */
            aload 6 /* typeParameters */
            invokevirtual org.bson.codecs.pojo.TypeData$Builder.addTypeParameters:(Ljava/util/List;)Lorg/bson/codecs/pojo/TypeData$Builder;
            pop
        18: .line 272
            aload 5 /* builder */
            invokevirtual org.bson.codecs.pojo.TypeData$Builder.build:()Lorg/bson/codecs/pojo/TypeData;
            astore 2 /* specializedFieldType */
        end local 6 // java.util.List typeParameters
        end local 5 // org.bson.codecs.pojo.TypeData$Builder builder
        start local 2 // org.bson.codecs.pojo.TypeData specializedFieldType
        19: .line 274
      StackMap locals: org.bson.codecs.pojo.PropertyModelBuilder org.bson.codecs.pojo.PropertyMetadata org.bson.codecs.pojo.TypeData java.util.Map java.lang.Integer
      StackMap stack:
            aload 0 /* propertyModelBuilder */
            aload 2 /* specializedFieldType */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.typeData:(Lorg/bson/codecs/pojo/TypeData;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
            pop
        end local 4 // java.lang.Integer classTypeParamRepresentsWholeField
        end local 3 // java.util.Map fieldToClassParamIndexMap
        end local 2 // org.bson.codecs.pojo.TypeData specializedFieldType
        20: .line 276
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.bson.codecs.pojo.PropertyMetadata propertyMetadata
        end local 0 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
      LocalVariableTable:
        Start  End  Slot                                Name  Signature
            0   21     0                propertyModelBuilder  Lorg/bson/codecs/pojo/PropertyModelBuilder<TV;>;
            0   21     1                    propertyMetadata  Lorg/bson/codecs/pojo/PropertyMetadata<TV;>;
            5    6     2                specializedFieldType  Lorg/bson/codecs/pojo/TypeData<TV;>;
           19   20     2                specializedFieldType  Lorg/bson/codecs/pojo/TypeData<TV;>;
            2   20     3           fieldToClassParamIndexMap  Ljava/util/Map<Ljava/lang/Integer;Ljava/lang/Integer;>;
            3   20     4  classTypeParamRepresentsWholeField  Ljava/lang/Integer;
            7   19     5                             builder  Lorg/bson/codecs/pojo/TypeData$Builder<TV;>;
            8   19     6                      typeParameters  Ljava/util/List<Lorg/bson/codecs/pojo/TypeData<*>;>;
            9   17     7                                   i  I
           12   14     8                             mapping  Ljava/util/Map$Entry<Ljava/lang/Integer;Ljava/lang/Integer;>;
    Signature: <V:Ljava/lang/Object;>(Lorg/bson/codecs/pojo/PropertyModelBuilder<TV;>;Lorg/bson/codecs/pojo/PropertyMetadata<TV;>;)V
    MethodParameters:
                      Name  Flags
      propertyModelBuilder  final
      propertyMetadata      final

  static <V> V stateNotNull(java.lang.String, );
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // java.lang.String property
        start local 1 // java.lang.Object value
         0: .line 279
            aload 1 /* value */
            ifnonnull 2
         1: .line 280
            new java.lang.IllegalStateException
            dup
            ldc "%s cannot be null"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* property */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 282
      StackMap locals:
      StackMap stack:
            aload 1 /* value */
            areturn
        end local 1 // java.lang.Object value
        end local 0 // java.lang.String property
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  property  Ljava/lang/String;
            0    3     1     value  TV;
    Signature: <V:Ljava/lang/Object;>(Ljava/lang/String;TV;)TV;
    MethodParameters:
          Name  Flags
      property  final
      value     final

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.codecs.pojo.PojoBuilderHelper this
         0: .line 285
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 286
            return
        end local 0 // org.bson.codecs.pojo.PojoBuilderHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/codecs/pojo/PojoBuilderHelper;
}
SourceFile: "PojoBuilderHelper.java"
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  PropertyMethods = org.bson.codecs.pojo.PropertyReflectionUtils$PropertyMethods of org.bson.codecs.pojo.PropertyReflectionUtils
  public final Builder = org.bson.codecs.pojo.TypeData$Builder of org.bson.codecs.pojo.TypeData
  final Builder = org.bson.codecs.pojo.TypeParameterMap$Builder of org.bson.codecs.pojo.TypeParameterMap