public class com.mongodb.util.JSONCallback extends org.bson.BasicBSONCallback
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.mongodb.util.JSONCallback
  super_class: org.bson.BasicBSONCallback
{
  private boolean _lastArray;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  public static final java.lang.String _msDateFormat;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"

  public static final java.lang.String _secDateFormat;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "yyyy-MM-dd'T'HH:mm:ss'Z'"

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.util.JSONCallback this
         0: .line 53
            aload 0 /* this */
            invokespecial org.bson.BasicBSONCallback.<init>:()V
         1: .line 151
            aload 0 /* this */
            iconst_0
            putfield com.mongodb.util.JSONCallback._lastArray:Z
         2: .line 53
            return
        end local 0 // com.mongodb.util.JSONCallback this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/util/JSONCallback;

  public org.bson.BSONObject create();
    descriptor: ()Lorg/bson/BSONObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.util.JSONCallback this
         0: .line 57
            new com.mongodb.BasicDBObject
            dup
            invokespecial com.mongodb.BasicDBObject.<init>:()V
            areturn
        end local 0 // com.mongodb.util.JSONCallback this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/util/JSONCallback;

  protected org.bson.BSONObject createList();
    descriptor: ()Lorg/bson/BSONObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.util.JSONCallback this
         0: .line 62
            new com.mongodb.BasicDBList
            dup
            invokespecial com.mongodb.BasicDBList.<init>:()V
            areturn
        end local 0 // com.mongodb.util.JSONCallback this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/util/JSONCallback;

  public void arrayStart(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.util.JSONCallback this
        start local 1 // java.lang.String name
         0: .line 67
            aload 0 /* this */
            iconst_1
            putfield com.mongodb.util.JSONCallback._lastArray:Z
         1: .line 68
            aload 0 /* this */
            aload 1 /* name */
            invokespecial org.bson.BasicBSONCallback.arrayStart:(Ljava/lang/String;)V
         2: .line 69
            return
        end local 1 // java.lang.String name
        end local 0 // com.mongodb.util.JSONCallback this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/util/JSONCallback;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void objectStart(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.util.JSONCallback this
        start local 1 // java.lang.String name
         0: .line 73
            aload 0 /* this */
            iconst_0
            putfield com.mongodb.util.JSONCallback._lastArray:Z
         1: .line 74
            aload 0 /* this */
            aload 1 /* name */
            invokespecial org.bson.BasicBSONCallback.objectStart:(Ljava/lang/String;)V
         2: .line 75
            return
        end local 1 // java.lang.String name
        end local 0 // com.mongodb.util.JSONCallback this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/util/JSONCallback;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public java.lang.Object objectDone();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=7, args_size=1
        start local 0 // com.mongodb.util.JSONCallback this
         0: .line 79
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONCallback.curName:()Ljava/lang/String;
            astore 1 /* name */
        start local 1 // java.lang.String name
         1: .line 80
            aload 0 /* this */
            invokespecial org.bson.BasicBSONCallback.objectDone:()Ljava/lang/Object;
            astore 2 /* o */
        start local 2 // java.lang.Object o
         2: .line 81
            aload 0 /* this */
            getfield com.mongodb.util.JSONCallback._lastArray:Z
            ifeq 4
         3: .line 82
            aload 2 /* o */
            areturn
         4: .line 84
      StackMap locals: java.lang.String java.lang.Object
      StackMap stack:
            aload 2 /* o */
            checkcast org.bson.BSONObject
            astore 3 /* b */
        start local 3 // org.bson.BSONObject b
         5: .line 87
            aload 3 /* b */
            ldc "$oid"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 8
         6: .line 88
            new org.bson.types.ObjectId
            dup
            aload 3 /* b */
            ldc "$oid"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            invokespecial org.bson.types.ObjectId.<init>:(Ljava/lang/String;)V
            astore 2 /* o */
         7: .line 89
            goto 69
      StackMap locals: org.bson.BSONObject
      StackMap stack:
         8: aload 3 /* b */
            ldc "$date"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 20
         9: .line 90
            aload 3 /* b */
            ldc "$date"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            instanceof java.lang.Number
            ifeq 12
        10: .line 91
            new java.util.Date
            dup
            aload 3 /* b */
            ldc "$date"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.Number
            invokevirtual java.lang.Number.longValue:()J
            invokespecial java.util.Date.<init>:(J)V
            astore 2 /* o */
        11: .line 92
            goto 69
        12: .line 93
      StackMap locals:
      StackMap stack:
            new java.text.SimpleDateFormat
            dup
            ldc "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
            invokespecial java.text.SimpleDateFormat.<init>:(Ljava/lang/String;)V
            astore 4 /* format */
        start local 4 // java.text.SimpleDateFormat format
        13: .line 94
            aload 4 /* format */
            new java.util.GregorianCalendar
            dup
            new java.util.SimpleTimeZone
            dup
            iconst_0
            ldc "GMT"
            invokespecial java.util.SimpleTimeZone.<init>:(ILjava/lang/String;)V
            invokespecial java.util.GregorianCalendar.<init>:(Ljava/util/TimeZone;)V
            invokevirtual java.text.SimpleDateFormat.setCalendar:(Ljava/util/Calendar;)V
        14: .line 95
            aload 4 /* format */
            aload 3 /* b */
            ldc "$date"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            new java.text.ParsePosition
            dup
            iconst_0
            invokespecial java.text.ParsePosition.<init>:(I)V
            invokevirtual java.text.SimpleDateFormat.parse:(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;
            astore 2 /* o */
        15: .line 97
            aload 2 /* o */
            ifnonnull 69
        16: .line 99
            new java.text.SimpleDateFormat
            dup
            ldc "yyyy-MM-dd'T'HH:mm:ss'Z'"
            invokespecial java.text.SimpleDateFormat.<init>:(Ljava/lang/String;)V
            astore 4 /* format */
        17: .line 100
            aload 4 /* format */
            new java.util.GregorianCalendar
            dup
            new java.util.SimpleTimeZone
            dup
            iconst_0
            ldc "GMT"
            invokespecial java.util.SimpleTimeZone.<init>:(ILjava/lang/String;)V
            invokespecial java.util.GregorianCalendar.<init>:(Ljava/util/TimeZone;)V
            invokevirtual java.text.SimpleDateFormat.setCalendar:(Ljava/util/Calendar;)V
        18: .line 101
            aload 4 /* format */
            aload 3 /* b */
            ldc "$date"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            new java.text.ParsePosition
            dup
            iconst_0
            invokespecial java.text.ParsePosition.<init>:(I)V
            invokevirtual java.text.SimpleDateFormat.parse:(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;
            astore 2 /* o */
        end local 4 // java.text.SimpleDateFormat format
        19: .line 104
            goto 69
      StackMap locals:
      StackMap stack:
        20: aload 3 /* b */
            ldc "$regex"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 25
        21: .line 105
            aload 3 /* b */
            ldc "$regex"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
        22: .line 106
            aload 3 /* b */
            ldc "$options"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic org.bson.BSON.regexFlags:(Ljava/lang/String;)I
        23: .line 105
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
            astore 2 /* o */
        24: .line 107
            goto 69
      StackMap locals:
      StackMap stack:
        25: aload 3 /* b */
            ldc "$ts"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 30
        26: .line 108
            aload 3 /* b */
            ldc "$ts"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.Number
            invokevirtual java.lang.Number.intValue:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 4 /* ts */
        start local 4 // java.lang.Integer ts
        27: .line 109
            aload 3 /* b */
            ldc "$inc"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.Number
            invokevirtual java.lang.Number.intValue:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 5 /* inc */
        start local 5 // java.lang.Integer inc
        28: .line 110
            new org.bson.types.BSONTimestamp
            dup
            aload 4 /* ts */
            invokevirtual java.lang.Integer.intValue:()I
            aload 5 /* inc */
            invokevirtual java.lang.Integer.intValue:()I
            invokespecial org.bson.types.BSONTimestamp.<init>:(II)V
            astore 2 /* o */
        end local 5 // java.lang.Integer inc
        end local 4 // java.lang.Integer ts
        29: .line 111
            goto 69
      StackMap locals:
      StackMap stack:
        30: aload 3 /* b */
            ldc "$timestamp"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 36
        31: .line 112
            aload 3 /* b */
            ldc "$timestamp"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast org.bson.BSONObject
            astore 4 /* tsObject */
        start local 4 // org.bson.BSONObject tsObject
        32: .line 113
            aload 4 /* tsObject */
            ldc "t"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.Number
            invokevirtual java.lang.Number.intValue:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 5 /* ts */
        start local 5 // java.lang.Integer ts
        33: .line 114
            aload 4 /* tsObject */
            ldc "i"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.Number
            invokevirtual java.lang.Number.intValue:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 6 /* inc */
        start local 6 // java.lang.Integer inc
        34: .line 115
            new org.bson.types.BSONTimestamp
            dup
            aload 5 /* ts */
            invokevirtual java.lang.Integer.intValue:()I
            aload 6 /* inc */
            invokevirtual java.lang.Integer.intValue:()I
            invokespecial org.bson.types.BSONTimestamp.<init>:(II)V
            astore 2 /* o */
        end local 6 // java.lang.Integer inc
        end local 5 // java.lang.Integer ts
        end local 4 // org.bson.BSONObject tsObject
        35: .line 116
            goto 69
      StackMap locals:
      StackMap stack:
        36: aload 3 /* b */
            ldc "$code"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 42
        37: .line 117
            aload 3 /* b */
            ldc "$scope"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 40
        38: .line 118
            new org.bson.types.CodeWScope
            dup
            aload 3 /* b */
            ldc "$code"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            aload 3 /* b */
            ldc "$scope"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast com.mongodb.DBObject
            invokespecial org.bson.types.CodeWScope.<init>:(Ljava/lang/String;Lorg/bson/BSONObject;)V
            astore 2 /* o */
        39: .line 119
            goto 69
        40: .line 120
      StackMap locals:
      StackMap stack:
            new org.bson.types.Code
            dup
            aload 3 /* b */
            ldc "$code"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            invokespecial org.bson.types.Code.<init>:(Ljava/lang/String;)V
            astore 2 /* o */
        41: .line 122
            goto 69
      StackMap locals:
      StackMap stack:
        42: aload 3 /* b */
            ldc "$ref"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 45
        43: .line 123
            new com.mongodb.DBRef
            dup
            aload 3 /* b */
            ldc "$ref"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            aload 3 /* b */
            ldc "$id"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            invokespecial com.mongodb.DBRef.<init>:(Ljava/lang/String;Ljava/lang/Object;)V
            astore 2 /* o */
        44: .line 124
            goto 69
      StackMap locals:
      StackMap stack:
        45: aload 3 /* b */
            ldc "$minKey"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 48
        46: .line 125
            new org.bson.types.MinKey
            dup
            invokespecial org.bson.types.MinKey.<init>:()V
            astore 2 /* o */
        47: .line 126
            goto 69
      StackMap locals:
      StackMap stack:
        48: aload 3 /* b */
            ldc "$maxKey"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 51
        49: .line 127
            new org.bson.types.MaxKey
            dup
            invokespecial org.bson.types.MaxKey.<init>:()V
            astore 2 /* o */
        50: .line 128
            goto 69
      StackMap locals:
      StackMap stack:
        51: aload 3 /* b */
            ldc "$uuid"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 54
        52: .line 129
            aload 3 /* b */
            ldc "$uuid"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic java.util.UUID.fromString:(Ljava/lang/String;)Ljava/util/UUID;
            astore 2 /* o */
        53: .line 130
            goto 69
      StackMap locals:
      StackMap stack:
        54: aload 3 /* b */
            ldc "$binary"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 61
        55: .line 131
            aload 3 /* b */
            ldc "$type"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            instanceof java.lang.String
            ifeq 56
            aload 3 /* b */
            ldc "$type"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            bipush 16
            invokestatic java.lang.Integer.valueOf:(Ljava/lang/String;I)Ljava/lang/Integer;
            goto 57
      StackMap locals:
      StackMap stack:
        56: aload 3 /* b */
            ldc "$type"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.Integer
      StackMap locals:
      StackMap stack: java.lang.Integer
        57: invokevirtual java.lang.Integer.intValue:()I
            istore 4 /* type */
        start local 4 // int type
        58: .line 132
            aload 3 /* b */
            ldc "$binary"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic org.bson.internal.Base64.decode:(Ljava/lang/String;)[B
            astore 5 /* bytes */
        start local 5 // byte[] bytes
        59: .line 133
            new org.bson.types.Binary
            dup
            iload 4 /* type */
            i2b
            aload 5 /* bytes */
            invokespecial org.bson.types.Binary.<init>:(B[B)V
            astore 2 /* o */
        end local 5 // byte[] bytes
        end local 4 // int type
        60: .line 134
            goto 69
      StackMap locals:
      StackMap stack:
        61: aload 3 /* b */
            ldc "$undefined"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 64
            aload 3 /* b */
            ldc "$undefined"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 64
        62: .line 135
            new org.bson.BsonUndefined
            dup
            invokespecial org.bson.BsonUndefined.<init>:()V
            astore 2 /* o */
        63: .line 136
            goto 69
      StackMap locals:
      StackMap stack:
        64: aload 3 /* b */
            ldc "$numberLong"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 67
        65: .line 137
            aload 3 /* b */
            ldc "$numberLong"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic java.lang.Long.valueOf:(Ljava/lang/String;)Ljava/lang/Long;
            astore 2 /* o */
        66: .line 138
            goto 69
      StackMap locals:
      StackMap stack:
        67: aload 3 /* b */
            ldc "$numberDecimal"
            invokeinterface org.bson.BSONObject.containsField:(Ljava/lang/String;)Z
            ifeq 69
        68: .line 139
            aload 3 /* b */
            ldc "$numberDecimal"
            invokeinterface org.bson.BSONObject.get:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic org.bson.types.Decimal128.parse:(Ljava/lang/String;)Lorg/bson/types/Decimal128;
            astore 2 /* o */
        69: .line 142
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONCallback.isStackEmpty:()Z
            ifne 72
        70: .line 143
            aload 0 /* this */
            aload 1 /* name */
            aload 2 /* o */
            invokevirtual com.mongodb.util.JSONCallback._put:(Ljava/lang/String;Ljava/lang/Object;)V
        71: .line 144
            goto 76
        72: .line 145
      StackMap locals:
      StackMap stack:
            invokestatic org.bson.BSON.hasDecodeHooks:()Z
            ifne 73
            aload 2 /* o */
            goto 74
      StackMap locals:
      StackMap stack:
        73: aload 2 /* o */
            invokestatic org.bson.BSON.applyDecodingHooks:(Ljava/lang/Object;)Ljava/lang/Object;
      StackMap locals:
      StackMap stack: java.lang.Object
        74: astore 2 /* o */
        75: .line 146
            aload 0 /* this */
            aload 2 /* o */
            invokevirtual com.mongodb.util.JSONCallback.setRoot:(Ljava/lang/Object;)V
        76: .line 148
      StackMap locals:
      StackMap stack:
            aload 2 /* o */
            areturn
        end local 3 // org.bson.BSONObject b
        end local 2 // java.lang.Object o
        end local 1 // java.lang.String name
        end local 0 // com.mongodb.util.JSONCallback this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   77     0      this  Lcom/mongodb/util/JSONCallback;
            1   77     1      name  Ljava/lang/String;
            2   77     2         o  Ljava/lang/Object;
            5   77     3         b  Lorg/bson/BSONObject;
           13   19     4    format  Ljava/text/SimpleDateFormat;
           27   29     4        ts  Ljava/lang/Integer;
           28   29     5       inc  Ljava/lang/Integer;
           32   35     4  tsObject  Lorg/bson/BSONObject;
           33   35     5        ts  Ljava/lang/Integer;
           34   35     6       inc  Ljava/lang/Integer;
           58   60     4      type  I
           59   60     5     bytes  [B
}
SourceFile: "JSONCallback.java"
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()