public final class org.bson.codecs.pojo.PojoCodecProvider implements org.bson.codecs.configuration.CodecProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.bson.codecs.pojo.PojoCodecProvider
  super_class: java.lang.Object
{
  static final org.bson.diagnostics.Logger LOGGER;
    descriptor: Lorg/bson/diagnostics/Logger;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private final boolean automatic;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Map<java.lang.Class<?>, org.bson.codecs.pojo.ClassModel<?>> classModels;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Class<*>;Lorg/bson/codecs/pojo/ClassModel<*>;>;

  private final java.util.Set<java.lang.String> packages;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private final java.util.List<org.bson.codecs.pojo.Convention> conventions;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/bson/codecs/pojo/Convention;>;

  private final org.bson.codecs.pojo.DiscriminatorLookup discriminatorLookup;
    descriptor: Lorg/bson/codecs/pojo/DiscriminatorLookup;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.List<org.bson.codecs.pojo.PropertyCodecProvider> propertyCodecProviders;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/bson/codecs/pojo/PropertyCodecProvider;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 42
            ldc "codecs.pojo"
            invokestatic org.bson.diagnostics.Loggers.getLogger:(Ljava/lang/String;)Lorg/bson/diagnostics/Logger;
            putstatic org.bson.codecs.pojo.PojoCodecProvider.LOGGER:Lorg/bson/diagnostics/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(boolean, java.util.Map<java.lang.Class<?>, org.bson.codecs.pojo.ClassModel<?>>, java.util.Set<java.lang.String>, java.util.List<org.bson.codecs.pojo.Convention>, java.util.List<org.bson.codecs.pojo.PropertyCodecProvider>);
    descriptor: (ZLjava/util/Map;Ljava/util/Set;Ljava/util/List;Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // org.bson.codecs.pojo.PojoCodecProvider this
        start local 1 // boolean automatic
        start local 2 // java.util.Map classModels
        start local 3 // java.util.Set packages
        start local 4 // java.util.List conventions
        start local 5 // java.util.List propertyCodecProviders
         0: .line 50
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 52
            aload 0 /* this */
            iload 1 /* automatic */
            putfield org.bson.codecs.pojo.PojoCodecProvider.automatic:Z
         2: .line 53
            aload 0 /* this */
            aload 2 /* classModels */
            putfield org.bson.codecs.pojo.PojoCodecProvider.classModels:Ljava/util/Map;
         3: .line 54
            aload 0 /* this */
            aload 3 /* packages */
            putfield org.bson.codecs.pojo.PojoCodecProvider.packages:Ljava/util/Set;
         4: .line 55
            aload 0 /* this */
            aload 4 /* conventions */
            putfield org.bson.codecs.pojo.PojoCodecProvider.conventions:Ljava/util/List;
         5: .line 56
            aload 0 /* this */
            new org.bson.codecs.pojo.DiscriminatorLookup
            dup
            aload 2 /* classModels */
            aload 3 /* packages */
            invokespecial org.bson.codecs.pojo.DiscriminatorLookup.<init>:(Ljava/util/Map;Ljava/util/Set;)V
            putfield org.bson.codecs.pojo.PojoCodecProvider.discriminatorLookup:Lorg/bson/codecs/pojo/DiscriminatorLookup;
         6: .line 57
            aload 0 /* this */
            aload 5 /* propertyCodecProviders */
            putfield org.bson.codecs.pojo.PojoCodecProvider.propertyCodecProviders:Ljava/util/List;
         7: .line 58
            return
        end local 5 // java.util.List propertyCodecProviders
        end local 4 // java.util.List conventions
        end local 3 // java.util.Set packages
        end local 2 // java.util.Map classModels
        end local 1 // boolean automatic
        end local 0 // org.bson.codecs.pojo.PojoCodecProvider this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    8     0                    this  Lorg/bson/codecs/pojo/PojoCodecProvider;
            0    8     1               automatic  Z
            0    8     2             classModels  Ljava/util/Map<Ljava/lang/Class<*>;Lorg/bson/codecs/pojo/ClassModel<*>;>;
            0    8     3                packages  Ljava/util/Set<Ljava/lang/String;>;
            0    8     4             conventions  Ljava/util/List<Lorg/bson/codecs/pojo/Convention;>;
            0    8     5  propertyCodecProviders  Ljava/util/List<Lorg/bson/codecs/pojo/PropertyCodecProvider;>;
    Signature: (ZLjava/util/Map<Ljava/lang/Class<*>;Lorg/bson/codecs/pojo/ClassModel<*>;>;Ljava/util/Set<Ljava/lang/String;>;Ljava/util/List<Lorg/bson/codecs/pojo/Convention;>;Ljava/util/List<Lorg/bson/codecs/pojo/PropertyCodecProvider;>;)V
    MethodParameters:
                        Name  Flags
      automatic               final
      classModels             final
      packages                final
      conventions             final
      propertyCodecProviders  final

  public static org.bson.codecs.pojo.PojoCodecProvider$Builder builder();
    descriptor: ()Lorg/bson/codecs/pojo/PojoCodecProvider$Builder;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 67
            new org.bson.codecs.pojo.PojoCodecProvider$Builder
            dup
            invokespecial org.bson.codecs.pojo.PojoCodecProvider$Builder.<init>:()V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public <T> org.bson.codecs.Codec<T> get(java.lang.Class<T>, org.bson.codecs.configuration.CodecRegistry);
    descriptor: (Ljava/lang/Class;Lorg/bson/codecs/configuration/CodecRegistry;)Lorg/bson/codecs/Codec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.bson.codecs.pojo.PojoCodecProvider this
        start local 1 // java.lang.Class clazz
        start local 2 // org.bson.codecs.configuration.CodecRegistry registry
         0: .line 72
            aload 0 /* this */
            aload 1 /* clazz */
            aload 2 /* registry */
            invokevirtual org.bson.codecs.pojo.PojoCodecProvider.getPojoCodec:(Ljava/lang/Class;Lorg/bson/codecs/configuration/CodecRegistry;)Lorg/bson/codecs/pojo/PojoCodec;
            areturn
        end local 2 // org.bson.codecs.configuration.CodecRegistry registry
        end local 1 // java.lang.Class clazz
        end local 0 // org.bson.codecs.pojo.PojoCodecProvider this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/bson/codecs/pojo/PojoCodecProvider;
            0    1     1     clazz  Ljava/lang/Class<TT;>;
            0    1     2  registry  Lorg/bson/codecs/configuration/CodecRegistry;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Lorg/bson/codecs/configuration/CodecRegistry;)Lorg/bson/codecs/Codec<TT;>;
    MethodParameters:
          Name  Flags
      clazz     final
      registry  final

  private <T> org.bson.codecs.pojo.PojoCodec<T> getPojoCodec(java.lang.Class<T>, org.bson.codecs.configuration.CodecRegistry);
    descriptor: (Ljava/lang/Class;Lorg/bson/codecs/configuration/CodecRegistry;)Lorg/bson/codecs/pojo/PojoCodec;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=5, args_size=3
        start local 0 // org.bson.codecs.pojo.PojoCodecProvider this
        start local 1 // java.lang.Class clazz
        start local 2 // org.bson.codecs.configuration.CodecRegistry registry
         0: .line 77
            aload 0 /* this */
            getfield org.bson.codecs.pojo.PojoCodecProvider.classModels:Ljava/util/Map;
            aload 1 /* clazz */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.bson.codecs.pojo.ClassModel
            astore 3 /* classModel */
        start local 3 // org.bson.codecs.pojo.ClassModel classModel
         1: .line 78
            aload 3 /* classModel */
            ifnull 3
         2: .line 79
            new org.bson.codecs.pojo.PojoCodecImpl
            dup
            aload 3 /* classModel */
            aload 2 /* registry */
            aload 0 /* this */
            getfield org.bson.codecs.pojo.PojoCodecProvider.propertyCodecProviders:Ljava/util/List;
            aload 0 /* this */
            getfield org.bson.codecs.pojo.PojoCodecProvider.discriminatorLookup:Lorg/bson/codecs/pojo/DiscriminatorLookup;
            invokespecial org.bson.codecs.pojo.PojoCodecImpl.<init>:(Lorg/bson/codecs/pojo/ClassModel;Lorg/bson/codecs/configuration/CodecRegistry;Ljava/util/List;Lorg/bson/codecs/pojo/DiscriminatorLookup;)V
            areturn
         3: .line 80
      StackMap locals: org.bson.codecs.pojo.ClassModel
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.codecs.pojo.PojoCodecProvider.automatic:Z
            ifne 4
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getPackage:()Ljava/lang/Package;
            ifnull 14
            aload 0 /* this */
            getfield org.bson.codecs.pojo.PojoCodecProvider.packages:Ljava/util/Set;
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getPackage:()Ljava/lang/Package;
            invokevirtual java.lang.Package.getName:()Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 14
         4: .line 82
      StackMap locals:
      StackMap stack:
            aload 1 /* clazz */
            aload 0 /* this */
            getfield org.bson.codecs.pojo.PojoCodecProvider.conventions:Ljava/util/List;
            invokestatic org.bson.codecs.pojo.PojoCodecProvider.createClassModel:(Ljava/lang/Class;Ljava/util/List;)Lorg/bson/codecs/pojo/ClassModel;
            astore 3 /* classModel */
         5: .line 83
            aload 1 /* clazz */
            invokevirtual java.lang.Class.isInterface:()Z
            ifne 6
            aload 3 /* classModel */
            invokevirtual org.bson.codecs.pojo.ClassModel.getPropertyModels:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 14
         6: .line 84
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.codecs.pojo.PojoCodecProvider.discriminatorLookup:Lorg/bson/codecs/pojo/DiscriminatorLookup;
            aload 3 /* classModel */
            invokevirtual org.bson.codecs.pojo.DiscriminatorLookup.addClassModel:(Lorg/bson/codecs/pojo/ClassModel;)V
         7: .line 85
            new org.bson.codecs.pojo.AutomaticPojoCodec
            dup
            new org.bson.codecs.pojo.PojoCodecImpl
            dup
            aload 3 /* classModel */
            aload 2 /* registry */
            aload 0 /* this */
            getfield org.bson.codecs.pojo.PojoCodecProvider.propertyCodecProviders:Ljava/util/List;
         8: .line 86
            aload 0 /* this */
            getfield org.bson.codecs.pojo.PojoCodecProvider.discriminatorLookup:Lorg/bson/codecs/pojo/DiscriminatorLookup;
            invokespecial org.bson.codecs.pojo.PojoCodecImpl.<init>:(Lorg/bson/codecs/pojo/ClassModel;Lorg/bson/codecs/configuration/CodecRegistry;Ljava/util/List;Lorg/bson/codecs/pojo/DiscriminatorLookup;)V
         9: .line 85
            invokespecial org.bson.codecs.pojo.AutomaticPojoCodec.<init>:(Lorg/bson/codecs/pojo/PojoCodec;)V
        10: areturn
        11: .line 88
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 4 /* e */
        start local 4 // java.lang.Exception e
        12: .line 89
            getstatic org.bson.codecs.pojo.PojoCodecProvider.LOGGER:Lorg/bson/diagnostics/Logger;
            ldc "Cannot use '%s' with the PojoCodec."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 4 /* e */
            invokeinterface org.bson.diagnostics.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        13: .line 90
            aconst_null
            areturn
        end local 4 // java.lang.Exception e
        14: .line 93
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 3 // org.bson.codecs.pojo.ClassModel classModel
        end local 2 // org.bson.codecs.configuration.CodecRegistry registry
        end local 1 // java.lang.Class clazz
        end local 0 // org.bson.codecs.pojo.PojoCodecProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Lorg/bson/codecs/pojo/PojoCodecProvider;
            0   15     1       clazz  Ljava/lang/Class<TT;>;
            0   15     2    registry  Lorg/bson/codecs/configuration/CodecRegistry;
            1   15     3  classModel  Lorg/bson/codecs/pojo/ClassModel<TT;>;
           12   14     4           e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           4    10      11  Class java.lang.Exception
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Lorg/bson/codecs/configuration/CodecRegistry;)Lorg/bson/codecs/pojo/PojoCodec<TT;>;
    MethodParameters:
          Name  Flags
      clazz     final
      registry  final

  private static <T> org.bson.codecs.pojo.ClassModel<T> createClassModel(java.lang.Class<T>, java.util.List<org.bson.codecs.pojo.Convention>);
    descriptor: (Ljava/lang/Class;Ljava/util/List;)Lorg/bson/codecs/pojo/ClassModel;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.Class clazz
        start local 1 // java.util.List conventions
         0: .line 215
            aload 0 /* clazz */
            invokestatic org.bson.codecs.pojo.ClassModel.builder:(Ljava/lang/Class;)Lorg/bson/codecs/pojo/ClassModelBuilder;
            astore 2 /* builder */
        start local 2 // org.bson.codecs.pojo.ClassModelBuilder builder
         1: .line 216
            aload 1 /* conventions */
            ifnull 3
         2: .line 217
            aload 2 /* builder */
            aload 1 /* conventions */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.conventions:(Ljava/util/List;)Lorg/bson/codecs/pojo/ClassModelBuilder;
            pop
         3: .line 219
      StackMap locals: org.bson.codecs.pojo.ClassModelBuilder
      StackMap stack:
            aload 2 /* builder */
            invokevirtual org.bson.codecs.pojo.ClassModelBuilder.build:()Lorg/bson/codecs/pojo/ClassModel;
            areturn
        end local 2 // org.bson.codecs.pojo.ClassModelBuilder builder
        end local 1 // java.util.List conventions
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0        clazz  Ljava/lang/Class<TT;>;
            0    4     1  conventions  Ljava/util/List<Lorg/bson/codecs/pojo/Convention;>;
            1    4     2      builder  Lorg/bson/codecs/pojo/ClassModelBuilder<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/util/List<Lorg/bson/codecs/pojo/Convention;>;)Lorg/bson/codecs/pojo/ClassModel<TT;>;
    MethodParameters:
             Name  Flags
      clazz        final
      conventions  final
}
SourceFile: "PojoCodecProvider.java"
NestMembers:
  org.bson.codecs.pojo.PojoCodecProvider$Builder
InnerClasses:
  public final Builder = org.bson.codecs.pojo.PojoCodecProvider$Builder of org.bson.codecs.pojo.PojoCodecProvider