final class org.bson.codecs.pojo.ConventionAnnotationImpl implements org.bson.codecs.pojo.Convention
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: org.bson.codecs.pojo.ConventionAnnotationImpl
  super_class: java.lang.Object
{
  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
         0: .line 39
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/codecs/pojo/ConventionAnnotationImpl;

  public void apply(org.bson.codecs.pojo.ClassModelBuilder<?>);
    descriptor: (Lorg/bson/codecs/pojo/ClassModelBuilder;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
        start local 1 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
         0: .line 43
            aload 1 /* classModelBuilder */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.getAnnotations:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 3
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.annotation.Annotation
            astore 2 /* annotation */
        start local 2 // java.lang.annotation.Annotation annotation
         2: .line 44
            aload 0 /* this */
            aload 1 /* classModelBuilder */
            aload 2 /* annotation */
            invokevirtual org.bson.codecs.pojo.ConventionAnnotationImpl.processClassAnnotation:(Lorg/bson/codecs/pojo/ClassModelBuilder;Ljava/lang/annotation/Annotation;)V
        end local 2 // java.lang.annotation.Annotation annotation
         3: .line 43
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 47
            aload 1 /* classModelBuilder */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.getPropertyModelBuilders:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 7
      StackMap locals:
      StackMap stack:
         5: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bson.codecs.pojo.PropertyModelBuilder
            astore 2 /* propertyModelBuilder */
        start local 2 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
         6: .line 48
            aload 0 /* this */
            aload 1 /* classModelBuilder */
            aload 2 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.ConventionAnnotationImpl.processPropertyAnnotations:(Lorg/bson/codecs/pojo/ClassModelBuilder;Lorg/bson/codecs/pojo/PropertyModelBuilder;)V
        end local 2 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
         7: .line 47
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
         8: .line 51
            aload 0 /* this */
            aload 1 /* classModelBuilder */
            invokevirtual org.bson.codecs.pojo.ConventionAnnotationImpl.processCreatorAnnotation:(Lorg/bson/codecs/pojo/ClassModelBuilder;)V
         9: .line 53
            aload 0 /* this */
            aload 1 /* classModelBuilder */
            invokevirtual org.bson.codecs.pojo.ConventionAnnotationImpl.cleanPropertyBuilders:(Lorg/bson/codecs/pojo/ClassModelBuilder;)V
        10: .line 54
            return
        end local 1 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
        end local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   11     0                  this  Lorg/bson/codecs/pojo/ConventionAnnotationImpl;
            0   11     1     classModelBuilder  Lorg/bson/codecs/pojo/ClassModelBuilder<*>;
            2    3     2            annotation  Ljava/lang/annotation/Annotation;
            6    7     2  propertyModelBuilder  Lorg/bson/codecs/pojo/PropertyModelBuilder<*>;
    Signature: (Lorg/bson/codecs/pojo/ClassModelBuilder<*>;)V
    MethodParameters:
                   Name  Flags
      classModelBuilder  final

  private void processClassAnnotation(org.bson.codecs.pojo.ClassModelBuilder<?>, java.lang.annotation.Annotation);
    descriptor: (Lorg/bson/codecs/pojo/ClassModelBuilder;Ljava/lang/annotation/Annotation;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=6, args_size=3
        start local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
        start local 1 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
        start local 2 // java.lang.annotation.Annotation annotation
         0: .line 57
            aload 2 /* annotation */
            instanceof org.bson.codecs.pojo.annotations.BsonDiscriminator
            ifeq 9
         1: .line 58
            aload 2 /* annotation */
            checkcast org.bson.codecs.pojo.annotations.BsonDiscriminator
            astore 3 /* discriminator */
        start local 3 // org.bson.codecs.pojo.annotations.BsonDiscriminator discriminator
         2: .line 59
            aload 3 /* discriminator */
            invokeinterface org.bson.codecs.pojo.annotations.BsonDiscriminator.key:()Ljava/lang/String;
            astore 4 /* key */
        start local 4 // java.lang.String key
         3: .line 60
            aload 4 /* key */
            ldc ""
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 61
            aload 1 /* classModelBuilder */
            aload 4 /* key */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.discriminatorKey:(Ljava/lang/String;)Lorg/bson/codecs/pojo/ClassModelBuilder;
            pop
         5: .line 64
      StackMap locals: org.bson.codecs.pojo.annotations.BsonDiscriminator java.lang.String
      StackMap stack:
            aload 3 /* discriminator */
            invokeinterface org.bson.codecs.pojo.annotations.BsonDiscriminator.value:()Ljava/lang/String;
            astore 5 /* name */
        start local 5 // java.lang.String name
         6: .line 65
            aload 5 /* name */
            ldc ""
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
         7: .line 66
            aload 1 /* classModelBuilder */
            aload 5 /* name */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.discriminator:(Ljava/lang/String;)Lorg/bson/codecs/pojo/ClassModelBuilder;
            pop
         8: .line 68
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* classModelBuilder */
            iconst_1
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.enableDiscriminator:(Z)Lorg/bson/codecs/pojo/ClassModelBuilder;
            pop
        end local 5 // java.lang.String name
        end local 4 // java.lang.String key
        end local 3 // org.bson.codecs.pojo.annotations.BsonDiscriminator discriminator
         9: .line 70
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.annotation.Annotation annotation
        end local 1 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
        end local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   10     0               this  Lorg/bson/codecs/pojo/ConventionAnnotationImpl;
            0   10     1  classModelBuilder  Lorg/bson/codecs/pojo/ClassModelBuilder<*>;
            0   10     2         annotation  Ljava/lang/annotation/Annotation;
            2    9     3      discriminator  Lorg/bson/codecs/pojo/annotations/BsonDiscriminator;
            3    9     4                key  Ljava/lang/String;
            6    9     5               name  Ljava/lang/String;
    Signature: (Lorg/bson/codecs/pojo/ClassModelBuilder<*>;Ljava/lang/annotation/Annotation;)V
    MethodParameters:
                   Name  Flags
      classModelBuilder  final
      annotation         final

  private void processPropertyAnnotations(org.bson.codecs.pojo.ClassModelBuilder<?>, org.bson.codecs.pojo.PropertyModelBuilder<?>);
    descriptor: (Lorg/bson/codecs/pojo/ClassModelBuilder;Lorg/bson/codecs/pojo/PropertyModelBuilder;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=6, args_size=3
        start local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
        start local 1 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
        start local 2 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
         0: .line 74
            aload 2 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getReadAnnotations:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 15
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder org.bson.codecs.pojo.PropertyModelBuilder top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.annotation.Annotation
            astore 3 /* annotation */
        start local 3 // java.lang.annotation.Annotation annotation
         2: .line 75
            aload 3 /* annotation */
            instanceof org.bson.codecs.pojo.annotations.BsonProperty
            ifeq 10
         3: .line 76
            aload 3 /* annotation */
            checkcast org.bson.codecs.pojo.annotations.BsonProperty
            astore 5 /* bsonProperty */
        start local 5 // org.bson.codecs.pojo.annotations.BsonProperty bsonProperty
         4: .line 77
            ldc ""
            aload 5 /* bsonProperty */
            invokeinterface org.bson.codecs.pojo.annotations.BsonProperty.value:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
         5: .line 78
            aload 2 /* propertyModelBuilder */
            aload 5 /* bsonProperty */
            invokeinterface org.bson.codecs.pojo.annotations.BsonProperty.value:()Ljava/lang/String;
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.readName:(Ljava/lang/String;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
            pop
         6: .line 80
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder org.bson.codecs.pojo.PropertyModelBuilder java.lang.annotation.Annotation java.util.Iterator org.bson.codecs.pojo.annotations.BsonProperty
      StackMap stack:
            aload 2 /* propertyModelBuilder */
            aload 5 /* bsonProperty */
            invokeinterface org.bson.codecs.pojo.annotations.BsonProperty.useDiscriminator:()Z
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.discriminatorEnabled:(Z)Lorg/bson/codecs/pojo/PropertyModelBuilder;
            pop
         7: .line 81
            aload 2 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getName:()Ljava/lang/String;
            aload 1 /* classModelBuilder */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.getIdPropertyName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 15
         8: .line 82
            aload 1 /* classModelBuilder */
            aconst_null
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.idPropertyName:(Ljava/lang/String;)Lorg/bson/codecs/pojo/ClassModelBuilder;
            pop
        end local 5 // org.bson.codecs.pojo.annotations.BsonProperty bsonProperty
         9: .line 84
            goto 15
      StackMap locals:
      StackMap stack:
        10: aload 3 /* annotation */
            instanceof org.bson.codecs.pojo.annotations.BsonId
            ifeq 13
        11: .line 85
            aload 1 /* classModelBuilder */
            aload 2 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getName:()Ljava/lang/String;
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.idPropertyName:(Ljava/lang/String;)Lorg/bson/codecs/pojo/ClassModelBuilder;
            pop
        12: .line 86
            goto 15
      StackMap locals:
      StackMap stack:
        13: aload 3 /* annotation */
            instanceof org.bson.codecs.pojo.annotations.BsonIgnore
            ifeq 15
        14: .line 87
            aload 2 /* propertyModelBuilder */
            aconst_null
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.readName:(Ljava/lang/String;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
            pop
        end local 3 // java.lang.annotation.Annotation annotation
        15: .line 74
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder org.bson.codecs.pojo.PropertyModelBuilder top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        16: .line 91
            aload 2 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getWriteAnnotations:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 25
      StackMap locals:
      StackMap stack:
        17: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.annotation.Annotation
            astore 3 /* annotation */
        start local 3 // java.lang.annotation.Annotation annotation
        18: .line 92
            aload 3 /* annotation */
            instanceof org.bson.codecs.pojo.annotations.BsonProperty
            ifeq 23
        19: .line 93
            aload 3 /* annotation */
            checkcast org.bson.codecs.pojo.annotations.BsonProperty
            astore 5 /* bsonProperty */
        start local 5 // org.bson.codecs.pojo.annotations.BsonProperty bsonProperty
        20: .line 94
            ldc ""
            aload 5 /* bsonProperty */
            invokeinterface org.bson.codecs.pojo.annotations.BsonProperty.value:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 25
        21: .line 95
            aload 2 /* propertyModelBuilder */
            aload 5 /* bsonProperty */
            invokeinterface org.bson.codecs.pojo.annotations.BsonProperty.value:()Ljava/lang/String;
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.writeName:(Ljava/lang/String;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
            pop
        end local 5 // org.bson.codecs.pojo.annotations.BsonProperty bsonProperty
        22: .line 97
            goto 25
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder org.bson.codecs.pojo.PropertyModelBuilder java.lang.annotation.Annotation java.util.Iterator
      StackMap stack:
        23: aload 3 /* annotation */
            instanceof org.bson.codecs.pojo.annotations.BsonIgnore
            ifeq 25
        24: .line 98
            aload 2 /* propertyModelBuilder */
            aconst_null
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.writeName:(Ljava/lang/String;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
            pop
        end local 3 // java.lang.annotation.Annotation annotation
        25: .line 91
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder org.bson.codecs.pojo.PropertyModelBuilder top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 17
        26: .line 101
            return
        end local 2 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
        end local 1 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
        end local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   27     0                  this  Lorg/bson/codecs/pojo/ConventionAnnotationImpl;
            0   27     1     classModelBuilder  Lorg/bson/codecs/pojo/ClassModelBuilder<*>;
            0   27     2  propertyModelBuilder  Lorg/bson/codecs/pojo/PropertyModelBuilder<*>;
            2   15     3            annotation  Ljava/lang/annotation/Annotation;
            4    9     5          bsonProperty  Lorg/bson/codecs/pojo/annotations/BsonProperty;
           18   25     3            annotation  Ljava/lang/annotation/Annotation;
           20   22     5          bsonProperty  Lorg/bson/codecs/pojo/annotations/BsonProperty;
    Signature: (Lorg/bson/codecs/pojo/ClassModelBuilder<*>;Lorg/bson/codecs/pojo/PropertyModelBuilder<*>;)V
    MethodParameters:
                      Name  Flags
      classModelBuilder     final
      propertyModelBuilder  final

  private <T> void processCreatorAnnotation(org.bson.codecs.pojo.ClassModelBuilder<T>);
    descriptor: (Lorg/bson/codecs/pojo/ClassModelBuilder;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=17, args_size=2
        start local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
        start local 1 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
         0: .line 105
            aload 1 /* classModelBuilder */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.getType:()Ljava/lang/Class;
            astore 2 /* clazz */
        start local 2 // java.lang.Class clazz
         1: .line 106
            aconst_null
            astore 3 /* creatorExecutable */
        start local 3 // org.bson.codecs.pojo.CreatorExecutable creatorExecutable
         2: .line 107
            aload 2 /* clazz */
            invokevirtual java.lang.Class.getDeclaredConstructors:()[Ljava/lang/reflect/Constructor;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 14
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable top int int java.lang.reflect.Constructor[]
      StackMap stack:
         3: aload 7
            iload 5
            aaload
            astore 4 /* constructor */
        start local 4 // java.lang.reflect.Constructor constructor
         4: .line 108
            aload 4 /* constructor */
            invokevirtual java.lang.reflect.Constructor.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
            ifeq 13
            aload 4 /* constructor */
            invokevirtual java.lang.reflect.Constructor.isSynthetic:()Z
            ifne 13
         5: .line 109
            aload 4 /* constructor */
            invokevirtual java.lang.reflect.Constructor.getDeclaredAnnotations:()[Ljava/lang/annotation/Annotation;
            dup
            astore 11
            arraylength
            istore 10
            iconst_0
            istore 9
            goto 12
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.reflect.Constructor int int java.lang.reflect.Constructor[] top int int java.lang.annotation.Annotation[]
      StackMap stack:
         6: aload 11
            iload 9
            aaload
            astore 8 /* annotation */
        start local 8 // java.lang.annotation.Annotation annotation
         7: .line 110
            aload 8 /* annotation */
            invokeinterface java.lang.annotation.Annotation.annotationType:()Ljava/lang/Class;
            ldc Lorg/bson/codecs/pojo/annotations/BsonCreator;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 11
         8: .line 111
            aload 3 /* creatorExecutable */
            ifnull 10
         9: .line 112
            new org.bson.codecs.configuration.CodecConfigurationException
            dup
            ldc "Found multiple constructors annotated with @BsonCreator"
            invokespecial org.bson.codecs.configuration.CodecConfigurationException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 114
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.reflect.Constructor int int java.lang.reflect.Constructor[] java.lang.annotation.Annotation int int java.lang.annotation.Annotation[]
      StackMap stack:
            new org.bson.codecs.pojo.CreatorExecutable
            dup
            aload 2 /* clazz */
            aload 4 /* constructor */
            invokespecial org.bson.codecs.pojo.CreatorExecutable.<init>:(Ljava/lang/Class;Ljava/lang/reflect/Constructor;)V
            astore 3 /* creatorExecutable */
        end local 8 // java.lang.annotation.Annotation annotation
        11: .line 109
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.reflect.Constructor int int java.lang.reflect.Constructor[] top int int java.lang.annotation.Annotation[]
      StackMap stack:
            iinc 9 1
      StackMap locals:
      StackMap stack:
        12: iload 9
            iload 10
            if_icmplt 6
        end local 4 // java.lang.reflect.Constructor constructor
        13: .line 107
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable top int int java.lang.reflect.Constructor[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        14: iload 5
            iload 6
            if_icmplt 3
        15: .line 120
            aload 2 /* clazz */
            astore 4 /* bsonCreatorClass */
        start local 4 // java.lang.Class bsonCreatorClass
        16: .line 121
            iconst_0
            istore 5 /* foundStaticBsonCreatorMethod */
        start local 5 // boolean foundStaticBsonCreatorMethod
        17: .line 122
            goto 39
        18: .line 123
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int
      StackMap stack:
            aload 4 /* bsonCreatorClass */
            invokevirtual java.lang.Class.getDeclaredMethods:()[Ljava/lang/reflect/Method;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 37
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int top int int java.lang.reflect.Method[]
      StackMap stack:
        19: aload 9
            iload 7
            aaload
            astore 6 /* method */
        start local 6 // java.lang.reflect.Method method
        20: .line 124
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isStatic:(I)Z
            ifeq 36
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.isSynthetic:()Z
            ifne 36
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.isBridge:()Z
            ifne 36
        21: .line 125
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.getDeclaredAnnotations:()[Ljava/lang/annotation/Annotation;
            dup
            astore 13
            arraylength
            istore 12
            iconst_0
            istore 11
            goto 35
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int java.lang.reflect.Method int int java.lang.reflect.Method[] top int int java.lang.annotation.Annotation[]
      StackMap stack:
        22: aload 13
            iload 11
            aaload
            astore 10 /* annotation */
        start local 10 // java.lang.annotation.Annotation annotation
        23: .line 126
            aload 10 /* annotation */
            invokeinterface java.lang.annotation.Annotation.annotationType:()Ljava/lang/Class;
            ldc Lorg/bson/codecs/pojo/annotations/BsonCreator;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 34
        24: .line 127
            aload 3 /* creatorExecutable */
            ifnull 26
        25: .line 128
            new org.bson.codecs.configuration.CodecConfigurationException
            dup
            ldc "Found multiple constructors / methods annotated with @BsonCreator"
            invokespecial org.bson.codecs.configuration.CodecConfigurationException.<init>:(Ljava/lang/String;)V
            athrow
        26: .line 129
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int java.lang.reflect.Method int int java.lang.reflect.Method[] java.lang.annotation.Annotation int int java.lang.annotation.Annotation[]
      StackMap stack:
            aload 4 /* bsonCreatorClass */
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 32
        27: .line 130
            new org.bson.codecs.configuration.CodecConfigurationException
            dup
        28: .line 131
            ldc "Invalid method annotated with @BsonCreator. Returns '%s', expected %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        29: .line 132
            aload 6 /* method */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            aastore
            dup
            iconst_1
            aload 4 /* bsonCreatorClass */
            aastore
        30: .line 131
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        31: .line 130
            invokespecial org.bson.codecs.configuration.CodecConfigurationException.<init>:(Ljava/lang/String;)V
            athrow
        32: .line 134
      StackMap locals:
      StackMap stack:
            new org.bson.codecs.pojo.CreatorExecutable
            dup
            aload 2 /* clazz */
            aload 6 /* method */
            invokespecial org.bson.codecs.pojo.CreatorExecutable.<init>:(Ljava/lang/Class;Ljava/lang/reflect/Method;)V
            astore 3 /* creatorExecutable */
        33: .line 135
            iconst_1
            istore 5 /* foundStaticBsonCreatorMethod */
        end local 10 // java.lang.annotation.Annotation annotation
        34: .line 125
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int java.lang.reflect.Method int int java.lang.reflect.Method[] top int int java.lang.annotation.Annotation[]
      StackMap stack:
            iinc 11 1
      StackMap locals:
      StackMap stack:
        35: iload 11
            iload 12
            if_icmplt 22
        end local 6 // java.lang.reflect.Method method
        36: .line 123
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int top int int java.lang.reflect.Method[]
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
        37: iload 7
            iload 8
            if_icmplt 19
        38: .line 141
            aload 4 /* bsonCreatorClass */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 4 /* bsonCreatorClass */
        39: .line 122
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int
      StackMap stack:
            aload 4 /* bsonCreatorClass */
            ifnull 40
            iload 5 /* foundStaticBsonCreatorMethod */
            ifeq 18
        40: .line 144
      StackMap locals:
      StackMap stack:
            aload 3 /* creatorExecutable */
            ifnull 83
        41: .line 145
            aload 3 /* creatorExecutable */
            invokevirtual org.bson.codecs.pojo.CreatorExecutable.getProperties:()Ljava/util/List;
            astore 6 /* properties */
        start local 6 // java.util.List properties
        42: .line 146
            aload 3 /* creatorExecutable */
            invokevirtual org.bson.codecs.pojo.CreatorExecutable.getParameterTypes:()Ljava/util/List;
            astore 7 /* parameterTypes */
        start local 7 // java.util.List parameterTypes
        43: .line 147
            aload 3 /* creatorExecutable */
            invokevirtual org.bson.codecs.pojo.CreatorExecutable.getParameterGenericTypes:()Ljava/util/List;
            astore 8 /* parameterGenericTypes */
        start local 8 // java.util.List parameterGenericTypes
        44: .line 149
            aload 6 /* properties */
            invokeinterface java.util.List.size:()I
            aload 7 /* parameterTypes */
            invokeinterface java.util.List.size:()I
            if_icmpeq 46
        45: .line 150
            aload 3 /* creatorExecutable */
            aload 2 /* clazz */
            ldc "All parameters in the @BsonCreator method / constructor must be annotated with a @BsonProperty."
            invokevirtual org.bson.codecs.pojo.CreatorExecutable.getError:(Ljava/lang/Class;Ljava/lang/String;)Lorg/bson/codecs/configuration/CodecConfigurationException;
            athrow
        46: .line 153
      StackMap locals: java.util.List java.util.List java.util.List
      StackMap stack:
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        47: goto 81
        48: .line 154
      StackMap locals: int
      StackMap stack:
            aload 3 /* creatorExecutable */
            invokevirtual org.bson.codecs.pojo.CreatorExecutable.getIdPropertyIndex:()Ljava/lang/Integer;
            ifnull 49
            aload 3 /* creatorExecutable */
            invokevirtual org.bson.codecs.pojo.CreatorExecutable.getIdPropertyIndex:()Ljava/lang/Integer;
            iload 9 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.lang.Integer.equals:(Ljava/lang/Object;)Z
            ifeq 49
            iconst_1
            goto 50
      StackMap locals:
      StackMap stack:
        49: iconst_0
      StackMap locals:
      StackMap stack: int
        50: istore 10 /* isIdProperty */
        start local 10 // boolean isIdProperty
        51: .line 155
            aload 7 /* parameterTypes */
            iload 9 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.Class
            astore 11 /* parameterType */
        start local 11 // java.lang.Class parameterType
        52: .line 156
            aload 8 /* parameterGenericTypes */
            iload 9 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.reflect.Type
            astore 12 /* genericType */
        start local 12 // java.lang.reflect.Type genericType
        53: .line 157
            aconst_null
            astore 13 /* propertyModelBuilder */
        start local 13 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
        54: .line 159
            iload 10 /* isIdProperty */
            ifeq 57
        55: .line 160
            aload 1 /* classModelBuilder */
            aload 1 /* classModelBuilder */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.getIdPropertyName:()Ljava/lang/String;
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.getProperty:(Ljava/lang/String;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
            astore 13 /* propertyModelBuilder */
        56: .line 161
            goto 76
        57: .line 162
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int java.util.List java.util.List java.util.List int int java.lang.Class java.lang.reflect.Type org.bson.codecs.pojo.PropertyModelBuilder
      StackMap stack:
            aload 6 /* properties */
            iload 9 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.bson.codecs.pojo.annotations.BsonProperty
            astore 14 /* bsonProperty */
        start local 14 // org.bson.codecs.pojo.annotations.BsonProperty bsonProperty
        58: .line 165
            aload 1 /* classModelBuilder */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.getPropertyModelBuilders:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 16
            goto 65
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int java.util.List java.util.List java.util.List int int java.lang.Class java.lang.reflect.Type org.bson.codecs.pojo.PropertyModelBuilder org.bson.codecs.pojo.annotations.BsonProperty top java.util.Iterator
      StackMap stack:
        59: aload 16
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bson.codecs.pojo.PropertyModelBuilder
            astore 15 /* builder */
        start local 15 // org.bson.codecs.pojo.PropertyModelBuilder builder
        60: .line 166
            aload 14 /* bsonProperty */
            invokeinterface org.bson.codecs.pojo.annotations.BsonProperty.value:()Ljava/lang/String;
            aload 15 /* builder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getWriteName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 63
        61: .line 167
            aload 15 /* builder */
            astore 13 /* propertyModelBuilder */
        62: .line 168
            goto 66
        63: .line 169
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int java.util.List java.util.List java.util.List int int java.lang.Class java.lang.reflect.Type org.bson.codecs.pojo.PropertyModelBuilder org.bson.codecs.pojo.annotations.BsonProperty org.bson.codecs.pojo.PropertyModelBuilder java.util.Iterator
      StackMap stack:
            aload 14 /* bsonProperty */
            invokeinterface org.bson.codecs.pojo.annotations.BsonProperty.value:()Ljava/lang/String;
            aload 15 /* builder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getReadName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 65
        64: .line 172
            aload 15 /* builder */
            astore 13 /* propertyModelBuilder */
        end local 15 // org.bson.codecs.pojo.PropertyModelBuilder builder
        65: .line 165
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int java.util.List java.util.List java.util.List int int java.lang.Class java.lang.reflect.Type org.bson.codecs.pojo.PropertyModelBuilder org.bson.codecs.pojo.annotations.BsonProperty top java.util.Iterator
      StackMap stack:
            aload 16
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 59
        66: .line 177
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int java.util.List java.util.List java.util.List int int java.lang.Class java.lang.reflect.Type org.bson.codecs.pojo.PropertyModelBuilder org.bson.codecs.pojo.annotations.BsonProperty
      StackMap stack:
            aload 13 /* propertyModelBuilder */
            ifnonnull 68
        67: .line 178
            aload 1 /* classModelBuilder */
            aload 14 /* bsonProperty */
            invokeinterface org.bson.codecs.pojo.annotations.BsonProperty.value:()Ljava/lang/String;
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.getProperty:(Ljava/lang/String;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
            astore 13 /* propertyModelBuilder */
        68: .line 181
      StackMap locals:
      StackMap stack:
            aload 13 /* propertyModelBuilder */
            ifnonnull 73
        69: .line 182
            aload 0 /* this */
            aload 1 /* classModelBuilder */
            aload 14 /* bsonProperty */
            invokeinterface org.bson.codecs.pojo.annotations.BsonProperty.value:()Ljava/lang/String;
        70: .line 183
            aload 11 /* parameterType */
        71: .line 182
            invokevirtual org.bson.codecs.pojo.ConventionAnnotationImpl.addCreatorPropertyToClassModelBuilder:(Lorg/bson/codecs/pojo/ClassModelBuilder;Ljava/lang/String;Ljava/lang/Class;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
            astore 13 /* propertyModelBuilder */
        72: .line 184
            goto 76
        73: .line 186
      StackMap locals:
      StackMap stack:
            aload 14 /* bsonProperty */
            invokeinterface org.bson.codecs.pojo.annotations.BsonProperty.value:()Ljava/lang/String;
            aload 13 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 75
        74: .line 187
            aload 13 /* propertyModelBuilder */
            aload 14 /* bsonProperty */
            invokeinterface org.bson.codecs.pojo.annotations.BsonProperty.value:()Ljava/lang/String;
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.writeName:(Ljava/lang/String;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
            pop
        75: .line 189
      StackMap locals:
      StackMap stack:
            aload 11 /* parameterType */
            aload 13 /* propertyModelBuilder */
            aload 12 /* genericType */
            invokestatic org.bson.codecs.pojo.ConventionAnnotationImpl.tryToExpandToGenericType:(Ljava/lang/Class;Lorg/bson/codecs/pojo/PropertyModelBuilder;Ljava/lang/reflect/Type;)V
        end local 14 // org.bson.codecs.pojo.annotations.BsonProperty bsonProperty
        76: .line 193
      StackMap locals:
      StackMap stack:
            aload 13 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getTypeData:()Lorg/bson/codecs/pojo/TypeData;
            aload 11 /* parameterType */
            invokevirtual org.bson.codecs.pojo.TypeData.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 80
        77: .line 194
            aload 3 /* creatorExecutable */
            aload 2 /* clazz */
            ldc "Invalid Property type for '%s'. Expected %s, found %s."
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        78: .line 195
            aload 13 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getWriteName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 13 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getTypeData:()Lorg/bson/codecs/pojo/TypeData;
            invokevirtual org.bson.codecs.pojo.TypeData.getType:()Ljava/lang/Class;
            aastore
            dup
            iconst_2
            aload 11 /* parameterType */
            aastore
        79: .line 194
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual org.bson.codecs.pojo.CreatorExecutable.getError:(Ljava/lang/Class;Ljava/lang/String;)Lorg/bson/codecs/configuration/CodecConfigurationException;
            athrow
        end local 13 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
        end local 12 // java.lang.reflect.Type genericType
        end local 11 // java.lang.Class parameterType
        end local 10 // boolean isIdProperty
        80: .line 153
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int java.util.List java.util.List java.util.List int
      StackMap stack:
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        81: iload 9 /* i */
            aload 6 /* properties */
            invokeinterface java.util.List.size:()I
            if_icmplt 48
        end local 9 // int i
        82: .line 198
            aload 1 /* classModelBuilder */
            new org.bson.codecs.pojo.InstanceCreatorFactoryImpl
            dup
            aload 3 /* creatorExecutable */
            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
        end local 8 // java.util.List parameterGenericTypes
        end local 7 // java.util.List parameterTypes
        end local 6 // java.util.List properties
        83: .line 200
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.lang.Class org.bson.codecs.pojo.CreatorExecutable java.lang.Class int
      StackMap stack:
            return
        end local 5 // boolean foundStaticBsonCreatorMethod
        end local 4 // java.lang.Class bsonCreatorClass
        end local 3 // org.bson.codecs.pojo.CreatorExecutable creatorExecutable
        end local 2 // java.lang.Class clazz
        end local 1 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
        end local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   84     0                          this  Lorg/bson/codecs/pojo/ConventionAnnotationImpl;
            0   84     1             classModelBuilder  Lorg/bson/codecs/pojo/ClassModelBuilder<TT;>;
            1   84     2                         clazz  Ljava/lang/Class<TT;>;
            2   84     3             creatorExecutable  Lorg/bson/codecs/pojo/CreatorExecutable<TT;>;
            4   13     4                   constructor  Ljava/lang/reflect/Constructor<*>;
            7   11     8                    annotation  Ljava/lang/annotation/Annotation;
           16   84     4              bsonCreatorClass  Ljava/lang/Class<*>;
           17   84     5  foundStaticBsonCreatorMethod  Z
           20   36     6                        method  Ljava/lang/reflect/Method;
           23   34    10                    annotation  Ljava/lang/annotation/Annotation;
           42   83     6                    properties  Ljava/util/List<Lorg/bson/codecs/pojo/annotations/BsonProperty;>;
           43   83     7                parameterTypes  Ljava/util/List<Ljava/lang/Class<*>;>;
           44   83     8         parameterGenericTypes  Ljava/util/List<Ljava/lang/reflect/Type;>;
           47   82     9                             i  I
           51   80    10                  isIdProperty  Z
           52   80    11                 parameterType  Ljava/lang/Class<*>;
           53   80    12                   genericType  Ljava/lang/reflect/Type;
           54   80    13          propertyModelBuilder  Lorg/bson/codecs/pojo/PropertyModelBuilder<*>;
           58   76    14                  bsonProperty  Lorg/bson/codecs/pojo/annotations/BsonProperty;
           60   65    15                       builder  Lorg/bson/codecs/pojo/PropertyModelBuilder<*>;
    Signature: <T:Ljava/lang/Object;>(Lorg/bson/codecs/pojo/ClassModelBuilder<TT;>;)V
    MethodParameters:
                   Name  Flags
      classModelBuilder  final

  private static <T> void tryToExpandToGenericType(java.lang.Class<?>, org.bson.codecs.pojo.PropertyModelBuilder<T>, java.lang.reflect.Type);
    descriptor: (Ljava/lang/Class;Lorg/bson/codecs/pojo/PropertyModelBuilder;Ljava/lang/reflect/Type;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.lang.Class parameterType
        start local 1 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
        start local 2 // java.lang.reflect.Type genericType
         0: .line 205
            aload 0 /* parameterType */
            aload 1 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getTypeData:()Lorg/bson/codecs/pojo/TypeData;
            invokevirtual org.bson.codecs.pojo.TypeData.getType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 2
         1: .line 209
            aload 1 /* propertyModelBuilder */
            aload 2 /* genericType */
            aload 0 /* parameterType */
            invokestatic org.bson.codecs.pojo.TypeData.newInstance:(Ljava/lang/reflect/Type;Ljava/lang/Class;)Lorg/bson/codecs/pojo/TypeData;
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.typeData:(Lorg/bson/codecs/pojo/TypeData;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
            pop
         2: .line 211
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.reflect.Type genericType
        end local 1 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
        end local 0 // java.lang.Class parameterType
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    3     0         parameterType  Ljava/lang/Class<*>;
            0    3     1  propertyModelBuilder  Lorg/bson/codecs/pojo/PropertyModelBuilder<TT;>;
            0    3     2           genericType  Ljava/lang/reflect/Type;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<*>;Lorg/bson/codecs/pojo/PropertyModelBuilder<TT;>;Ljava/lang/reflect/Type;)V
    MethodParameters:
                      Name  Flags
      parameterType         final
      propertyModelBuilder  final
      genericType           final

  private <T, S> org.bson.codecs.pojo.PropertyModelBuilder<S> addCreatorPropertyToClassModelBuilder(org.bson.codecs.pojo.ClassModelBuilder<T>, java.lang.String, java.lang.Class<S>);
    descriptor: (Lorg/bson/codecs/pojo/ClassModelBuilder;Ljava/lang/String;Ljava/lang/Class;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
        start local 1 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
        start local 2 // java.lang.String name
        start local 3 // java.lang.Class clazz
         0: .line 216
            new org.bson.codecs.pojo.PropertyMetadata
            dup
            aload 2 /* name */
         1: .line 217
            aload 1 /* classModelBuilder */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.getType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aload 3 /* clazz */
            invokestatic org.bson.codecs.pojo.TypeData.builder:(Ljava/lang/Class;)Lorg/bson/codecs/pojo/TypeData$Builder;
            invokevirtual org.bson.codecs.pojo.TypeData$Builder.build:()Lorg/bson/codecs/pojo/TypeData;
         2: .line 216
            invokespecial org.bson.codecs.pojo.PropertyMetadata.<init>:(Ljava/lang/String;Ljava/lang/String;Lorg/bson/codecs/pojo/TypeData;)V
            invokestatic org.bson.codecs.pojo.PojoBuilderHelper.createPropertyModelBuilder:(Lorg/bson/codecs/pojo/PropertyMetadata;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
         3: .line 217
            aconst_null
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.readName:(Ljava/lang/String;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
            aload 2 /* name */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.writeName:(Ljava/lang/String;)Lorg/bson/codecs/pojo/PropertyModelBuilder;
         4: .line 216
            astore 4 /* propertyModelBuilder */
        start local 4 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
         5: .line 218
            aload 1 /* classModelBuilder */
            aload 4 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.addProperty:(Lorg/bson/codecs/pojo/PropertyModelBuilder;)Lorg/bson/codecs/pojo/ClassModelBuilder;
            pop
         6: .line 219
            aload 4 /* propertyModelBuilder */
            areturn
        end local 4 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
        end local 3 // java.lang.Class clazz
        end local 2 // java.lang.String name
        end local 1 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
        end local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    7     0                  this  Lorg/bson/codecs/pojo/ConventionAnnotationImpl;
            0    7     1     classModelBuilder  Lorg/bson/codecs/pojo/ClassModelBuilder<TT;>;
            0    7     2                  name  Ljava/lang/String;
            0    7     3                 clazz  Ljava/lang/Class<TS;>;
            5    7     4  propertyModelBuilder  Lorg/bson/codecs/pojo/PropertyModelBuilder<TS;>;
    Signature: <T:Ljava/lang/Object;S:Ljava/lang/Object;>(Lorg/bson/codecs/pojo/ClassModelBuilder<TT;>;Ljava/lang/String;Ljava/lang/Class<TS;>;)Lorg/bson/codecs/pojo/PropertyModelBuilder<TS;>;
    MethodParameters:
                   Name  Flags
      classModelBuilder  final
      name               final
      clazz              final

  private void cleanPropertyBuilders(org.bson.codecs.pojo.ClassModelBuilder<?>);
    descriptor: (Lorg/bson/codecs/pojo/ClassModelBuilder;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
        start local 1 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
         0: .line 223
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* propertiesToRemove */
        start local 2 // java.util.List propertiesToRemove
         1: .line 224
            aload 1 /* classModelBuilder */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.getPropertyModelBuilders:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 5
      StackMap locals: org.bson.codecs.pojo.ConventionAnnotationImpl org.bson.codecs.pojo.ClassModelBuilder java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bson.codecs.pojo.PropertyModelBuilder
            astore 3 /* propertyModelBuilder */
        start local 3 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
         3: .line 225
            aload 3 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.isReadable:()Z
            ifne 5
            aload 3 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.isWritable:()Z
            ifne 5
         4: .line 226
            aload 2 /* propertiesToRemove */
            aload 3 /* propertyModelBuilder */
            invokevirtual org.bson.codecs.pojo.PropertyModelBuilder.getName:()Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // org.bson.codecs.pojo.PropertyModelBuilder propertyModelBuilder
         5: .line 224
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 229
            aload 2 /* propertiesToRemove */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 9
      StackMap locals:
      StackMap stack:
         7: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* propertyName */
        start local 3 // java.lang.String propertyName
         8: .line 230
            aload 1 /* classModelBuilder */
            aload 3 /* propertyName */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.removeProperty:(Ljava/lang/String;)Z
            pop
        end local 3 // java.lang.String propertyName
         9: .line 229
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        10: .line 232
            return
        end local 2 // java.util.List propertiesToRemove
        end local 1 // org.bson.codecs.pojo.ClassModelBuilder classModelBuilder
        end local 0 // org.bson.codecs.pojo.ConventionAnnotationImpl this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   11     0                  this  Lorg/bson/codecs/pojo/ConventionAnnotationImpl;
            0   11     1     classModelBuilder  Lorg/bson/codecs/pojo/ClassModelBuilder<*>;
            1   11     2    propertiesToRemove  Ljava/util/List<Ljava/lang/String;>;
            3    5     3  propertyModelBuilder  Lorg/bson/codecs/pojo/PropertyModelBuilder<*>;
            8    9     3          propertyName  Ljava/lang/String;
    Signature: (Lorg/bson/codecs/pojo/ClassModelBuilder<*>;)V
    MethodParameters:
                   Name  Flags
      classModelBuilder  final
}
SourceFile: "ConventionAnnotationImpl.java"
InnerClasses:
  public final Builder = org.bson.codecs.pojo.TypeData$Builder of org.bson.codecs.pojo.TypeData