public class org.bson.BSON
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bson.BSON
  super_class: java.lang.Object
{
  public static final byte EOO;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final byte NUMBER;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final byte STRING;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public static final byte OBJECT;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  public static final byte ARRAY;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  public static final byte BINARY;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 5

  public static final byte UNDEFINED;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 6

  public static final byte OID;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 7

  public static final byte BOOLEAN;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  public static final byte DATE;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 9

  public static final byte NULL;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 10

  public static final byte REGEX;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 11

  public static final byte REF;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 12

  public static final byte CODE;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 13

  public static final byte SYMBOL;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 14

  public static final byte CODE_W_SCOPE;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 15

  public static final byte NUMBER_INT;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 16

  public static final byte TIMESTAMP;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 17

  public static final byte NUMBER_LONG;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 18

  public static final byte MINKEY;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  public static final byte MAXKEY;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 127

  public static final byte B_GENERAL;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final byte B_FUNC;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final byte B_BINARY;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public static final byte B_UUID;
    descriptor: B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  private static final int FLAG_GLOBAL;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 256

  private static final int[] FLAG_LOOKUP;
    descriptor: [I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static volatile boolean encodeHooks;
    descriptor: Z
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

  private static volatile boolean decodeHooks;
    descriptor: Z
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

  private static final org.bson.util.ClassMap<java.util.List<org.bson.Transformer>> encodingHooks;
    descriptor: Lorg/bson/util/ClassMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/bson/util/ClassMap<Ljava/util/List<Lorg/bson/Transformer;>;>;

  private static final org.bson.util.ClassMap<java.util.List<org.bson.Transformer>> decodingHooks;
    descriptor: Lorg/bson/util/ClassMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/bson/util/ClassMap<Ljava/util/List<Lorg/bson/Transformer;>;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 73
            ldc 65535
            newarray 10
            putstatic org.bson.BSON.FLAG_LOOKUP:[I
         1: .line 76
            getstatic org.bson.BSON.FLAG_LOOKUP:[I
            bipush 103
            sipush 256
            iastore
         2: .line 77
            getstatic org.bson.BSON.FLAG_LOOKUP:[I
            bipush 105
            iconst_2
            iastore
         3: .line 78
            getstatic org.bson.BSON.FLAG_LOOKUP:[I
            bipush 109
            bipush 8
            iastore
         4: .line 79
            getstatic org.bson.BSON.FLAG_LOOKUP:[I
            bipush 115
            bipush 32
            iastore
         5: .line 80
            getstatic org.bson.BSON.FLAG_LOOKUP:[I
            bipush 99
            sipush 128
            iastore
         6: .line 81
            getstatic org.bson.BSON.FLAG_LOOKUP:[I
            bipush 120
            iconst_4
            iastore
         7: .line 82
            getstatic org.bson.BSON.FLAG_LOOKUP:[I
            bipush 100
            iconst_1
            iastore
         8: .line 83
            getstatic org.bson.BSON.FLAG_LOOKUP:[I
            bipush 116
            bipush 16
            iastore
         9: .line 84
            getstatic org.bson.BSON.FLAG_LOOKUP:[I
            bipush 117
            bipush 64
            iastore
        10: .line 87
            iconst_0
            putstatic org.bson.BSON.encodeHooks:Z
        11: .line 88
            iconst_0
            putstatic org.bson.BSON.decodeHooks:Z
        12: .line 89
            new org.bson.util.ClassMap
            dup
            invokespecial org.bson.util.ClassMap.<init>:()V
            putstatic org.bson.BSON.encodingHooks:Lorg/bson/util/ClassMap;
        13: .line 90
            new org.bson.util.ClassMap
            dup
            invokespecial org.bson.util.ClassMap.<init>:()V
            putstatic org.bson.BSON.decodingHooks:Lorg/bson/util/ClassMap;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BSON this
         0: .line 32
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.bson.BSON this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BSON;

  public static boolean hasEncodeHooks();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 98
            getstatic org.bson.BSON.encodeHooks:Z
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static boolean hasDecodeHooks();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 107
            getstatic org.bson.BSON.decodeHooks:Z
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void addEncodingHook(java.lang.Class<?>, org.bson.Transformer);
    descriptor: (Ljava/lang/Class;Lorg/bson/Transformer;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.Class clazz
        start local 1 // org.bson.Transformer transformer
         0: .line 117
            iconst_1
            putstatic org.bson.BSON.encodeHooks:Z
         1: .line 118
            getstatic org.bson.BSON.encodingHooks:Lorg/bson/util/ClassMap;
            aload 0 /* clazz */
            invokevirtual org.bson.util.ClassMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 2 /* transformersForClass */
        start local 2 // java.util.List transformersForClass
         2: .line 119
            aload 2 /* transformersForClass */
            ifnonnull 5
         3: .line 120
            new java.util.concurrent.CopyOnWriteArrayList
            dup
            invokespecial java.util.concurrent.CopyOnWriteArrayList.<init>:()V
            astore 2 /* transformersForClass */
         4: .line 121
            getstatic org.bson.BSON.encodingHooks:Lorg/bson/util/ClassMap;
            aload 0 /* clazz */
            aload 2 /* transformersForClass */
            invokevirtual org.bson.util.ClassMap.put:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 123
      StackMap locals: java.util.List
      StackMap stack:
            aload 2 /* transformersForClass */
            aload 1 /* transformer */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 124
            return
        end local 2 // java.util.List transformersForClass
        end local 1 // org.bson.Transformer transformer
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    7     0                 clazz  Ljava/lang/Class<*>;
            0    7     1           transformer  Lorg/bson/Transformer;
            2    7     2  transformersForClass  Ljava/util/List<Lorg/bson/Transformer;>;
    Signature: (Ljava/lang/Class<*>;Lorg/bson/Transformer;)V
    MethodParameters:
             Name  Flags
      clazz        final
      transformer  final

  public static void addDecodingHook(java.lang.Class<?>, org.bson.Transformer);
    descriptor: (Ljava/lang/Class;Lorg/bson/Transformer;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.Class clazz
        start local 1 // org.bson.Transformer transformer
         0: .line 134
            iconst_1
            putstatic org.bson.BSON.decodeHooks:Z
         1: .line 135
            getstatic org.bson.BSON.decodingHooks:Lorg/bson/util/ClassMap;
            aload 0 /* clazz */
            invokevirtual org.bson.util.ClassMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 2 /* transformersForClass */
        start local 2 // java.util.List transformersForClass
         2: .line 136
            aload 2 /* transformersForClass */
            ifnonnull 5
         3: .line 137
            new java.util.concurrent.CopyOnWriteArrayList
            dup
            invokespecial java.util.concurrent.CopyOnWriteArrayList.<init>:()V
            astore 2 /* transformersForClass */
         4: .line 138
            getstatic org.bson.BSON.decodingHooks:Lorg/bson/util/ClassMap;
            aload 0 /* clazz */
            aload 2 /* transformersForClass */
            invokevirtual org.bson.util.ClassMap.put:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 140
      StackMap locals: java.util.List
      StackMap stack:
            aload 2 /* transformersForClass */
            aload 1 /* transformer */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 141
            return
        end local 2 // java.util.List transformersForClass
        end local 1 // org.bson.Transformer transformer
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    7     0                 clazz  Ljava/lang/Class<*>;
            0    7     1           transformer  Lorg/bson/Transformer;
            2    7     2  transformersForClass  Ljava/util/List<Lorg/bson/Transformer;>;
    Signature: (Ljava/lang/Class<*>;Lorg/bson/Transformer;)V
    MethodParameters:
             Name  Flags
      clazz        final
      transformer  final

  public static java.lang.Object applyEncodingHooks(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // java.lang.Object objectToEncode
         0: .line 150
            aload 0 /* objectToEncode */
            astore 1 /* transformedObject */
        start local 1 // java.lang.Object transformedObject
         1: .line 151
            invokestatic org.bson.BSON.hasEncodeHooks:()Z
            ifeq 2
            aload 0 /* objectToEncode */
            ifnull 2
            getstatic org.bson.BSON.encodingHooks:Lorg/bson/util/ClassMap;
            invokevirtual org.bson.util.ClassMap.size:()I
            ifne 3
         2: .line 152
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* transformedObject */
            areturn
         3: .line 154
      StackMap locals:
      StackMap stack:
            getstatic org.bson.BSON.encodingHooks:Lorg/bson/util/ClassMap;
            aload 0 /* objectToEncode */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual org.bson.util.ClassMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 2 /* transformersForObject */
        start local 2 // java.util.List transformersForObject
         4: .line 155
            aload 2 /* transformersForObject */
            ifnull 9
         5: .line 156
            aload 2 /* transformersForObject */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 8
      StackMap locals: java.lang.Object java.lang.Object java.util.List top java.util.Iterator
      StackMap stack:
         6: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bson.Transformer
            astore 3 /* transformer */
        start local 3 // org.bson.Transformer transformer
         7: .line 157
            aload 3 /* transformer */
            aload 0 /* objectToEncode */
            invokeinterface org.bson.Transformer.transform:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 1 /* transformedObject */
        end local 3 // org.bson.Transformer transformer
         8: .line 156
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
         9: .line 160
      StackMap locals: java.lang.Object java.lang.Object java.util.List
      StackMap stack:
            aload 1 /* transformedObject */
            areturn
        end local 2 // java.util.List transformersForObject
        end local 1 // java.lang.Object transformedObject
        end local 0 // java.lang.Object objectToEncode
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   10     0         objectToEncode  Ljava/lang/Object;
            1   10     1      transformedObject  Ljava/lang/Object;
            4   10     2  transformersForObject  Ljava/util/List<Lorg/bson/Transformer;>;
            7    8     3            transformer  Lorg/bson/Transformer;
    MethodParameters:
                Name  Flags
      objectToEncode  final

  public static java.lang.Object applyDecodingHooks(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // java.lang.Object objectToDecode
         0: .line 170
            aload 0 /* objectToDecode */
            astore 1 /* transformedObject */
        start local 1 // java.lang.Object transformedObject
         1: .line 171
            invokestatic org.bson.BSON.hasDecodeHooks:()Z
            ifeq 2
            aload 0 /* objectToDecode */
            ifnull 2
            getstatic org.bson.BSON.decodingHooks:Lorg/bson/util/ClassMap;
            invokevirtual org.bson.util.ClassMap.size:()I
            ifne 3
         2: .line 172
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* transformedObject */
            areturn
         3: .line 175
      StackMap locals:
      StackMap stack:
            getstatic org.bson.BSON.decodingHooks:Lorg/bson/util/ClassMap;
            aload 0 /* objectToDecode */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual org.bson.util.ClassMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 2 /* transformersForObject */
        start local 2 // java.util.List transformersForObject
         4: .line 176
            aload 2 /* transformersForObject */
            ifnull 9
         5: .line 177
            aload 2 /* transformersForObject */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 8
      StackMap locals: java.lang.Object java.lang.Object java.util.List top java.util.Iterator
      StackMap stack:
         6: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bson.Transformer
            astore 3 /* transformer */
        start local 3 // org.bson.Transformer transformer
         7: .line 178
            aload 3 /* transformer */
            aload 0 /* objectToDecode */
            invokeinterface org.bson.Transformer.transform:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 1 /* transformedObject */
        end local 3 // org.bson.Transformer transformer
         8: .line 177
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
         9: .line 181
      StackMap locals: java.lang.Object java.lang.Object java.util.List
      StackMap stack:
            aload 1 /* transformedObject */
            areturn
        end local 2 // java.util.List transformersForObject
        end local 1 // java.lang.Object transformedObject
        end local 0 // java.lang.Object objectToDecode
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   10     0         objectToDecode  Ljava/lang/Object;
            1   10     1      transformedObject  Ljava/lang/Object;
            4   10     2  transformersForObject  Ljava/util/List<Lorg/bson/Transformer;>;
            7    8     3            transformer  Lorg/bson/Transformer;
    MethodParameters:
                Name  Flags
      objectToDecode  final

  public static java.util.List<org.bson.Transformer> getEncodingHooks(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class clazz
         0: .line 191
            getstatic org.bson.BSON.encodingHooks:Lorg/bson/util/ClassMap;
            aload 0 /* clazz */
            invokevirtual org.bson.util.ClassMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            areturn
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  clazz  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Ljava/util/List<Lorg/bson/Transformer;>;
    MethodParameters:
       Name  Flags
      clazz  final

  public static void clearEncodingHooks();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 198
            iconst_0
            putstatic org.bson.BSON.encodeHooks:Z
         1: .line 199
            getstatic org.bson.BSON.encodingHooks:Lorg/bson/util/ClassMap;
            invokevirtual org.bson.util.ClassMap.clear:()V
         2: .line 200
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void removeEncodingHooks(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class clazz
         0: .line 208
            getstatic org.bson.BSON.encodingHooks:Lorg/bson/util/ClassMap;
            aload 0 /* clazz */
            invokevirtual org.bson.util.ClassMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 209
            return
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0  clazz  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
       Name  Flags
      clazz  final

  public static void removeEncodingHook(java.lang.Class<?>, org.bson.Transformer);
    descriptor: (Ljava/lang/Class;Lorg/bson/Transformer;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Class clazz
        start local 1 // org.bson.Transformer transformer
         0: .line 219
            aload 0 /* clazz */
            invokestatic org.bson.BSON.getEncodingHooks:(Ljava/lang/Class;)Ljava/util/List;
            aload 1 /* transformer */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
         1: .line 220
            return
        end local 1 // org.bson.Transformer transformer
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0        clazz  Ljava/lang/Class<*>;
            0    2     1  transformer  Lorg/bson/Transformer;
    Signature: (Ljava/lang/Class<*>;Lorg/bson/Transformer;)V
    MethodParameters:
             Name  Flags
      clazz        final
      transformer  final

  public static java.util.List<org.bson.Transformer> getDecodingHooks(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class clazz
         0: .line 229
            getstatic org.bson.BSON.decodingHooks:Lorg/bson/util/ClassMap;
            aload 0 /* clazz */
            invokevirtual org.bson.util.ClassMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            areturn
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  clazz  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Ljava/util/List<Lorg/bson/Transformer;>;
    MethodParameters:
       Name  Flags
      clazz  final

  public static void clearDecodingHooks();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 236
            iconst_0
            putstatic org.bson.BSON.decodeHooks:Z
         1: .line 237
            getstatic org.bson.BSON.decodingHooks:Lorg/bson/util/ClassMap;
            invokevirtual org.bson.util.ClassMap.clear:()V
         2: .line 238
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void removeDecodingHooks(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class clazz
         0: .line 246
            getstatic org.bson.BSON.decodingHooks:Lorg/bson/util/ClassMap;
            aload 0 /* clazz */
            invokevirtual org.bson.util.ClassMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 247
            return
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0  clazz  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
       Name  Flags
      clazz  final

  public static void removeDecodingHook(java.lang.Class<?>, org.bson.Transformer);
    descriptor: (Ljava/lang/Class;Lorg/bson/Transformer;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Class clazz
        start local 1 // org.bson.Transformer transformer
         0: .line 257
            aload 0 /* clazz */
            invokestatic org.bson.BSON.getDecodingHooks:(Ljava/lang/Class;)Ljava/util/List;
            aload 1 /* transformer */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
         1: .line 258
            return
        end local 1 // org.bson.Transformer transformer
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0        clazz  Ljava/lang/Class<*>;
            0    2     1  transformer  Lorg/bson/Transformer;
    Signature: (Ljava/lang/Class<*>;Lorg/bson/Transformer;)V
    MethodParameters:
             Name  Flags
      clazz        final
      transformer  final

  public static void clearAllHooks();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=0, locals=0, args_size=0
         0: .line 264
            invokestatic org.bson.BSON.clearEncodingHooks:()V
         1: .line 265
            invokestatic org.bson.BSON.clearDecodingHooks:()V
         2: .line 266
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static byte[] encode(org.bson.BSONObject);
    descriptor: (Lorg/bson/BSONObject;)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bson.BSONObject doc
         0: .line 277
            new org.bson.BasicBSONEncoder
            dup
            invokespecial org.bson.BasicBSONEncoder.<init>:()V
            aload 0 /* doc */
            invokevirtual org.bson.BasicBSONEncoder.encode:(Lorg/bson/BSONObject;)[B
            areturn
        end local 0 // org.bson.BSONObject doc
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   doc  Lorg/bson/BSONObject;
    MethodParameters:
      Name  Flags
      doc   final

  public static org.bson.BSONObject decode(byte[]);
    descriptor: ([B)Lorg/bson/BSONObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // byte[] bytes
         0: .line 287
            new org.bson.BasicBSONDecoder
            dup
            invokespecial org.bson.BasicBSONDecoder.<init>:()V
            aload 0 /* bytes */
            invokevirtual org.bson.BasicBSONDecoder.readObject:([B)Lorg/bson/BSONObject;
            areturn
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  bytes  [B
    MethodParameters:
       Name  Flags
      bytes  final

  public static int regexFlags(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // java.lang.String s
         0: .line 298
            iconst_0
            istore 1 /* flags */
        start local 1 // int flags
         1: .line 300
            aload 0 /* s */
            ifnonnull 3
         2: .line 301
            iload 1 /* flags */
            ireturn
         3: .line 304
      StackMap locals: int
      StackMap stack:
            aload 0 /* s */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            invokevirtual java.lang.String.toCharArray:()[C
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 7
      StackMap locals: java.lang.String int top int int char[]
      StackMap stack:
         4: aload 5
            iload 3
            caload
            istore 2 /* f */
        start local 2 // char f
         5: .line 305
            iload 1 /* flags */
            iload 2 /* f */
            invokestatic org.bson.BSON.regexFlag:(C)I
            ior
            istore 1 /* flags */
        end local 2 // char f
         6: .line 304
            iinc 3 1
      StackMap locals:
      StackMap stack:
         7: iload 3
            iload 4
            if_icmplt 4
         8: .line 308
            iload 1 /* flags */
            ireturn
        end local 1 // int flags
        end local 0 // java.lang.String s
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0      s  Ljava/lang/String;
            1    9     1  flags  I
            5    6     2      f  C
    MethodParameters:
      Name  Flags
      s     final

  public static int regexFlag(char);
    descriptor: (C)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=2, args_size=1
        start local 0 // char c
         0: .line 320
            getstatic org.bson.BSON.FLAG_LOOKUP:[I
            iload 0 /* c */
            iaload
            istore 1 /* flag */
        start local 1 // int flag
         1: .line 322
            iload 1 /* flag */
            ifne 3
         2: .line 323
            new java.lang.IllegalArgumentException
            dup
            ldc "Unrecognized flag [%c]"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            iload 0 /* c */
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 326
      StackMap locals: int
      StackMap stack:
            iload 1 /* flag */
            ireturn
        end local 1 // int flag
        end local 0 // char c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0     c  C
            1    4     1  flag  I
    MethodParameters:
      Name  Flags
      c     final

  public static java.lang.String regexFlags(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // int flags
         0: .line 337
            iload 0 /* flags */
            istore 1 /* processedFlags */
        start local 1 // int processedFlags
         1: .line 338
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* buf */
        start local 2 // java.lang.StringBuilder buf
         2: .line 340
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 8
         4: .line 341
      StackMap locals: int java.lang.StringBuilder int
      StackMap stack:
            iload 1 /* processedFlags */
            getstatic org.bson.BSON.FLAG_LOOKUP:[I
            iload 3 /* i */
            iaload
            iand
            ifle 7
         5: .line 342
            aload 2 /* buf */
            iload 3 /* i */
            i2c
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         6: .line 343
            iload 1 /* processedFlags */
            getstatic org.bson.BSON.FLAG_LOOKUP:[I
            iload 3 /* i */
            iaload
            isub
            istore 1 /* processedFlags */
         7: .line 340
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 3 /* i */
            getstatic org.bson.BSON.FLAG_LOOKUP:[I
            arraylength
            if_icmplt 4
        end local 3 // int i
         9: .line 347
            iload 1 /* processedFlags */
            ifle 11
        10: .line 348
            new java.lang.IllegalArgumentException
            dup
            ldc "Some flags could not be recognized."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 351
      StackMap locals:
      StackMap stack:
            aload 2 /* buf */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuilder buf
        end local 1 // int processedFlags
        end local 0 // int flags
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   12     0           flags  I
            1   12     1  processedFlags  I
            2   12     2             buf  Ljava/lang/StringBuilder;
            3    9     3               i  I
    MethodParameters:
       Name  Flags
      flags  final

  public static int toInt(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.lang.Object number
         0: .line 363
            aload 0 /* number */
            ifnonnull 2
         1: .line 364
            new java.lang.IllegalArgumentException
            dup
            ldc "Argument shouldn't be null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 367
      StackMap locals:
      StackMap stack:
            aload 0 /* number */
            instanceof java.lang.Number
            ifeq 4
         3: .line 368
            aload 0 /* number */
            checkcast java.lang.Number
            invokevirtual java.lang.Number.intValue:()I
            ireturn
         4: .line 371
      StackMap locals:
      StackMap stack:
            aload 0 /* number */
            instanceof java.lang.Boolean
            ifeq 8
         5: .line 372
            aload 0 /* number */
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 6
            iconst_1
            goto 7
      StackMap locals:
      StackMap stack:
         6: iconst_0
      StackMap locals:
      StackMap stack: int
         7: ireturn
         8: .line 375
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Can't convert: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* number */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " to int"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.Object number
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0  number  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      number  final
}
SourceFile: "BSON.java"
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()