public final class org.bson.internal.ProvidersCodecRegistry implements org.bson.codecs.configuration.CodecRegistry, org.bson.codecs.configuration.CodecProvider, org.bson.internal.CycleDetectingCodecRegistry
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.bson.internal.ProvidersCodecRegistry
  super_class: java.lang.Object
{
  private final java.util.List<org.bson.codecs.configuration.CodecProvider> codecProviders;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/bson/codecs/configuration/CodecProvider;>;

  private final org.bson.internal.CodecCache codecCache;
    descriptor: Lorg/bson/internal/CodecCache;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(java.util.List<? extends org.bson.codecs.configuration.CodecProvider>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.bson.internal.ProvidersCodecRegistry this
        start local 1 // java.util.List codecProviders
         0: .line 32
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 30
            aload 0 /* this */
            new org.bson.internal.CodecCache
            dup
            invokespecial org.bson.internal.CodecCache.<init>:()V
            putfield org.bson.internal.ProvidersCodecRegistry.codecCache:Lorg/bson/internal/CodecCache;
         2: .line 33
            ldc "codecProviders must not be null or empty"
            aload 1 /* codecProviders */
            ifnull 3
            aload 1 /* codecProviders */
            invokeinterface java.util.List.size:()I
            ifle 3
            iconst_1
            goto 4
      StackMap locals: org.bson.internal.ProvidersCodecRegistry java.util.List
      StackMap stack: java.lang.String
         3: iconst_0
      StackMap locals: org.bson.internal.ProvidersCodecRegistry java.util.List
      StackMap stack: java.lang.String int
         4: invokestatic org.bson.assertions.Assertions.isTrueArgument:(Ljava/lang/String;Z)V
         5: .line 34
            aload 0 /* this */
            new java.util.ArrayList
            dup
            aload 1 /* codecProviders */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            putfield org.bson.internal.ProvidersCodecRegistry.codecProviders:Ljava/util/List;
         6: .line 35
            return
        end local 1 // java.util.List codecProviders
        end local 0 // org.bson.internal.ProvidersCodecRegistry this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lorg/bson/internal/ProvidersCodecRegistry;
            0    7     1  codecProviders  Ljava/util/List<+Lorg/bson/codecs/configuration/CodecProvider;>;
    Signature: (Ljava/util/List<+Lorg/bson/codecs/configuration/CodecProvider;>;)V
    MethodParameters:
                Name  Flags
      codecProviders  final

  public <T> org.bson.codecs.Codec<T> get(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Lorg/bson/codecs/Codec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.bson.internal.ProvidersCodecRegistry this
        start local 1 // java.lang.Class clazz
         0: .line 39
            aload 0 /* this */
            new org.bson.internal.ChildCodecRegistry
            dup
            aload 0 /* this */
            aload 1 /* clazz */
            invokespecial org.bson.internal.ChildCodecRegistry.<init>:(Lorg/bson/internal/CycleDetectingCodecRegistry;Ljava/lang/Class;)V
            invokevirtual org.bson.internal.ProvidersCodecRegistry.get:(Lorg/bson/internal/ChildCodecRegistry;)Lorg/bson/codecs/Codec;
            areturn
        end local 1 // java.lang.Class clazz
        end local 0 // org.bson.internal.ProvidersCodecRegistry this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/bson/internal/ProvidersCodecRegistry;
            0    1     1  clazz  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)Lorg/bson/codecs/Codec<TT;>;
    MethodParameters:
       Name  Flags
      clazz  final

  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=6, args_size=3
        start local 0 // org.bson.internal.ProvidersCodecRegistry this
        start local 1 // java.lang.Class clazz
        start local 2 // org.bson.codecs.configuration.CodecRegistry registry
         0: .line 44
            aload 0 /* this */
            getfield org.bson.internal.ProvidersCodecRegistry.codecProviders:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 5
      StackMap locals: org.bson.internal.ProvidersCodecRegistry java.lang.Class org.bson.codecs.configuration.CodecRegistry top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bson.codecs.configuration.CodecProvider
            astore 3 /* provider */
        start local 3 // org.bson.codecs.configuration.CodecProvider provider
         2: .line 45
            aload 3 /* provider */
            aload 1 /* clazz */
            aload 2 /* registry */
            invokeinterface org.bson.codecs.configuration.CodecProvider.get:(Ljava/lang/Class;Lorg/bson/codecs/configuration/CodecRegistry;)Lorg/bson/codecs/Codec;
            astore 5 /* codec */
        start local 5 // org.bson.codecs.Codec codec
         3: .line 46
            aload 5 /* codec */
            ifnull 5
         4: .line 47
            aload 5 /* codec */
            areturn
        end local 5 // org.bson.codecs.Codec codec
        end local 3 // org.bson.codecs.configuration.CodecProvider provider
         5: .line 44
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         6: .line 50
            aconst_null
            areturn
        end local 2 // org.bson.codecs.configuration.CodecRegistry registry
        end local 1 // java.lang.Class clazz
        end local 0 // org.bson.internal.ProvidersCodecRegistry this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lorg/bson/internal/ProvidersCodecRegistry;
            0    7     1     clazz  Ljava/lang/Class<TT;>;
            0    7     2  registry  Lorg/bson/codecs/configuration/CodecRegistry;
            2    5     3  provider  Lorg/bson/codecs/configuration/CodecProvider;
            3    5     5     codec  Lorg/bson/codecs/Codec<TT;>;
    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

  public <T> org.bson.codecs.Codec<T> get(org.bson.internal.ChildCodecRegistry<T>);
    descriptor: (Lorg/bson/internal/ChildCodecRegistry;)Lorg/bson/codecs/Codec;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // org.bson.internal.ProvidersCodecRegistry this
        start local 1 // org.bson.internal.ChildCodecRegistry context
         0: .line 55
            aload 0 /* this */
            getfield org.bson.internal.ProvidersCodecRegistry.codecCache:Lorg/bson/internal/CodecCache;
            aload 1 /* context */
            invokevirtual org.bson.internal.ChildCodecRegistry.getCodecClass:()Ljava/lang/Class;
            invokevirtual org.bson.internal.CodecCache.containsKey:(Ljava/lang/Class;)Z
            ifne 8
         1: .line 56
            aload 0 /* this */
            getfield org.bson.internal.ProvidersCodecRegistry.codecProviders:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 6
      StackMap locals: org.bson.internal.ProvidersCodecRegistry org.bson.internal.ChildCodecRegistry top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bson.codecs.configuration.CodecProvider
            astore 2 /* provider */
        start local 2 // org.bson.codecs.configuration.CodecProvider provider
         3: .line 57
            aload 2 /* provider */
            aload 1 /* context */
            invokevirtual org.bson.internal.ChildCodecRegistry.getCodecClass:()Ljava/lang/Class;
            aload 1 /* context */
            invokeinterface org.bson.codecs.configuration.CodecProvider.get:(Ljava/lang/Class;Lorg/bson/codecs/configuration/CodecRegistry;)Lorg/bson/codecs/Codec;
            astore 4 /* codec */
        start local 4 // org.bson.codecs.Codec codec
         4: .line 58
            aload 4 /* codec */
            ifnull 6
         5: .line 59
            aload 0 /* this */
            getfield org.bson.internal.ProvidersCodecRegistry.codecCache:Lorg/bson/internal/CodecCache;
            aload 1 /* context */
            invokevirtual org.bson.internal.ChildCodecRegistry.getCodecClass:()Ljava/lang/Class;
            aload 4 /* codec */
            invokevirtual org.bson.internal.CodecCache.putIfMissing:(Ljava/lang/Class;Lorg/bson/codecs/Codec;)Lorg/bson/codecs/Codec;
            areturn
        end local 4 // org.bson.codecs.Codec codec
        end local 2 // org.bson.codecs.configuration.CodecProvider provider
         6: .line 56
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         7: .line 62
            aload 0 /* this */
            getfield org.bson.internal.ProvidersCodecRegistry.codecCache:Lorg/bson/internal/CodecCache;
            aload 1 /* context */
            invokevirtual org.bson.internal.ChildCodecRegistry.getCodecClass:()Ljava/lang/Class;
            aconst_null
            invokevirtual org.bson.internal.CodecCache.put:(Ljava/lang/Class;Lorg/bson/codecs/Codec;)V
         8: .line 64
      StackMap locals: org.bson.internal.ProvidersCodecRegistry org.bson.internal.ChildCodecRegistry
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.internal.ProvidersCodecRegistry.codecCache:Lorg/bson/internal/CodecCache;
            aload 1 /* context */
            invokevirtual org.bson.internal.ChildCodecRegistry.getCodecClass:()Ljava/lang/Class;
            invokevirtual org.bson.internal.CodecCache.getOrThrow:(Ljava/lang/Class;)Lorg/bson/codecs/Codec;
            areturn
        end local 1 // org.bson.internal.ChildCodecRegistry context
        end local 0 // org.bson.internal.ProvidersCodecRegistry this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lorg/bson/internal/ProvidersCodecRegistry;
            0    9     1   context  Lorg/bson/internal/ChildCodecRegistry<TT;>;
            3    6     2  provider  Lorg/bson/codecs/configuration/CodecProvider;
            4    6     4     codec  Lorg/bson/codecs/Codec<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lorg/bson/internal/ChildCodecRegistry<TT;>;)Lorg/bson/codecs/Codec<TT;>;
    MethodParameters:
         Name  Flags
      context  final

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.bson.internal.ProvidersCodecRegistry this
        start local 1 // java.lang.Object o
         0: .line 69
            aload 0 /* this */
            aload 1 /* o */
            if_acmpne 2
         1: .line 70
            iconst_1
            ireturn
         2: .line 72
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            ifnull 3
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 1 /* o */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            if_acmpeq 4
         3: .line 73
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         4: .line 76
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            checkcast org.bson.internal.ProvidersCodecRegistry
            astore 2 /* that */
        start local 2 // org.bson.internal.ProvidersCodecRegistry that
         5: .line 77
            aload 0 /* this */
            getfield org.bson.internal.ProvidersCodecRegistry.codecProviders:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            aload 2 /* that */
            getfield org.bson.internal.ProvidersCodecRegistry.codecProviders:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            if_icmpeq 7
         6: .line 78
            iconst_0
            ireturn
         7: .line 80
      StackMap locals: org.bson.internal.ProvidersCodecRegistry
      StackMap stack:
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         8: goto 12
         9: .line 81
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.internal.ProvidersCodecRegistry.codecProviders:Ljava/util/List;
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.bson.codecs.configuration.CodecProvider
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 2 /* that */
            getfield org.bson.internal.ProvidersCodecRegistry.codecProviders:Ljava/util/List;
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.bson.codecs.configuration.CodecProvider
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            if_acmpeq 11
        10: .line 82
            iconst_0
            ireturn
        11: .line 80
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 3 /* i */
            aload 0 /* this */
            getfield org.bson.internal.ProvidersCodecRegistry.codecProviders:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            if_icmplt 9
        end local 3 // int i
        13: .line 85
            iconst_1
            ireturn
        end local 2 // org.bson.internal.ProvidersCodecRegistry that
        end local 1 // java.lang.Object o
        end local 0 // org.bson.internal.ProvidersCodecRegistry this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lorg/bson/internal/ProvidersCodecRegistry;
            0   14     1     o  Ljava/lang/Object;
            5   14     2  that  Lorg/bson/internal/ProvidersCodecRegistry;
            8   13     3     i  I
    MethodParameters:
      Name  Flags
      o     final

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.internal.ProvidersCodecRegistry this
         0: .line 90
            aload 0 /* this */
            getfield org.bson.internal.ProvidersCodecRegistry.codecProviders:Ljava/util/List;
            invokeinterface java.util.List.hashCode:()I
            ireturn
        end local 0 // org.bson.internal.ProvidersCodecRegistry this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/internal/ProvidersCodecRegistry;
}
SourceFile: "ProvidersCodecRegistry.java"