class com.mongodb.util.JSONParser
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.mongodb.util.JSONParser
  super_class: java.lang.Object
{
  final java.lang.String s;
    descriptor: Ljava/lang/String;
    flags: (0x0010) ACC_FINAL

  int pos;
    descriptor: I
    flags: (0x0000) 

  final org.bson.BSONCallback _callback;
    descriptor: Lorg/bson/BSONCallback;
    flags: (0x0010) ACC_FINAL

  void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.util.JSONParser this
        start local 1 // java.lang.String s
         0: .line 140
            aload 0 /* this */
            aload 1 /* s */
            aconst_null
            invokespecial com.mongodb.util.JSONParser.<init>:(Ljava/lang/String;Lorg/bson/BSONCallback;)V
         1: .line 141
            return
        end local 1 // java.lang.String s
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/util/JSONParser;
            0    2     1     s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      s     final

  void <init>(java.lang.String, org.bson.BSONCallback);
    descriptor: (Ljava/lang/String;Lorg/bson/BSONCallback;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.mongodb.util.JSONParser this
        start local 1 // java.lang.String s
        start local 2 // org.bson.BSONCallback callback
         0: .line 144
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 136
            aload 0 /* this */
            iconst_0
            putfield com.mongodb.util.JSONParser.pos:I
         2: .line 145
            aload 0 /* this */
            aload 1 /* s */
            putfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
         3: .line 146
            aload 0 /* this */
            aload 2 /* callback */
            ifnonnull 4
            new com.mongodb.util.JSONCallback
            dup
            invokespecial com.mongodb.util.JSONCallback.<init>:()V
            goto 5
      StackMap locals: com.mongodb.util.JSONParser java.lang.String org.bson.BSONCallback
      StackMap stack: com.mongodb.util.JSONParser
         4: aload 2 /* callback */
      StackMap locals: com.mongodb.util.JSONParser java.lang.String org.bson.BSONCallback
      StackMap stack: com.mongodb.util.JSONParser org.bson.BSONCallback
         5: putfield com.mongodb.util.JSONParser._callback:Lorg/bson/BSONCallback;
         6: .line 147
            return
        end local 2 // org.bson.BSONCallback callback
        end local 1 // java.lang.String s
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lcom/mongodb/util/JSONParser;
            0    7     1         s  Ljava/lang/String;
            0    7     2  callback  Lorg/bson/BSONCallback;
    MethodParameters:
          Name  Flags
      s         final
      callback  final

  public java.lang.Object parse();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.util.JSONParser this
         0: .line 157
            aload 0 /* this */
            aconst_null
            invokevirtual com.mongodb.util.JSONParser.parse:(Ljava/lang/String;)Ljava/lang/Object;
            areturn
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/util/JSONParser;

  protected java.lang.Object parse(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.mongodb.util.JSONParser this
        start local 1 // java.lang.String name
         0: .line 167
            aconst_null
            astore 2 /* value */
        start local 2 // java.lang.Object value
         1: .line 168
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.get:()C
            istore 3 /* current */
        start local 3 // char current
         2: .line 170
            iload 3 /* current */
            lookupswitch { // 20
                   34: 27
                   39: 27
                   43: 29
                   45: 29
                   48: 29
                   49: 29
                   50: 29
                   51: 29
                   52: 29
                   53: 29
                   54: 29
                   55: 29
                   56: 29
                   57: 29
                   78: 9
                   91: 31
                  102: 20
                  110: 3
                  116: 14
                  123: 33
              default: 35
          }
         3: .line 173
      StackMap locals: java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            bipush 110
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
         4: .line 174
            aload 0 /* this */
            bipush 117
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
         5: .line 175
            aload 0 /* this */
            bipush 108
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
         6: .line 176
            aload 0 /* this */
            bipush 108
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
         7: .line 177
            aconst_null
            astore 2 /* value */
         8: .line 178
            goto 36
         9: .line 181
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 78
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        10: .line 182
            aload 0 /* this */
            bipush 97
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        11: .line 183
            aload 0 /* this */
            bipush 78
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        12: .line 184
            ldc NaN
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            astore 2 /* value */
        13: .line 185
            goto 36
        14: .line 188
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 116
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        15: .line 189
            aload 0 /* this */
            bipush 114
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        16: .line 190
            aload 0 /* this */
            bipush 117
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        17: .line 191
            aload 0 /* this */
            bipush 101
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        18: .line 192
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            astore 2 /* value */
        19: .line 193
            goto 36
        20: .line 196
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 102
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        21: .line 197
            aload 0 /* this */
            bipush 97
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        22: .line 198
            aload 0 /* this */
            bipush 108
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        23: .line 199
            aload 0 /* this */
            bipush 115
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        24: .line 200
            aload 0 /* this */
            bipush 101
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        25: .line 201
            iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            astore 2 /* value */
        26: .line 202
            goto 36
        27: .line 206
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            invokevirtual com.mongodb.util.JSONParser.parseString:(Z)Ljava/lang/String;
            astore 2 /* value */
        28: .line 207
            goto 36
        29: .line 221
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.parseNumber:()Ljava/lang/Number;
            astore 2 /* value */
        30: .line 222
            goto 36
        31: .line 225
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual com.mongodb.util.JSONParser.parseArray:(Ljava/lang/String;)Ljava/lang/Object;
            astore 2 /* value */
        32: .line 226
            goto 36
        33: .line 229
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual com.mongodb.util.JSONParser.parseObject:(Ljava/lang/String;)Ljava/lang/Object;
            astore 2 /* value */
        34: .line 230
            goto 36
        35: .line 232
      StackMap locals:
      StackMap stack:
            new com.mongodb.util.JSONParseException
            dup
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokespecial com.mongodb.util.JSONParseException.<init>:(Ljava/lang/String;I)V
            athrow
        36: .line 234
      StackMap locals:
      StackMap stack:
            aload 2 /* value */
            areturn
        end local 3 // char current
        end local 2 // java.lang.Object value
        end local 1 // java.lang.String name
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   37     0     this  Lcom/mongodb/util/JSONParser;
            0   37     1     name  Ljava/lang/String;
            1   37     2    value  Ljava/lang/Object;
            2   37     3  current  C
    MethodParameters:
      Name  Flags
      name  final

  public java.lang.Object parseObject();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.util.JSONParser this
         0: .line 244
            aload 0 /* this */
            aconst_null
            invokevirtual com.mongodb.util.JSONParser.parseObject:(Ljava/lang/String;)Ljava/lang/Object;
            areturn
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/util/JSONParser;

  protected java.lang.Object parseObject(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.mongodb.util.JSONParser this
        start local 1 // java.lang.String name
         0: .line 254
            aload 1 /* name */
            ifnull 3
         1: .line 255
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser._callback:Lorg/bson/BSONCallback;
            aload 1 /* name */
            invokeinterface org.bson.BSONCallback.objectStart:(Ljava/lang/String;)V
         2: .line 256
            goto 4
         3: .line 257
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser._callback:Lorg/bson/BSONCallback;
            invokeinterface org.bson.BSONCallback.objectStart:()V
         4: .line 260
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 123
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
         5: .line 261
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.get:()C
            pop
         6: .line 262
            goto 13
         7: .line 263
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            invokevirtual com.mongodb.util.JSONParser.parseString:(Z)Ljava/lang/String;
            astore 2 /* key */
        start local 2 // java.lang.String key
         8: .line 264
            aload 0 /* this */
            bipush 58
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
         9: .line 265
            aload 0 /* this */
            aload 2 /* key */
            invokevirtual com.mongodb.util.JSONParser.parse:(Ljava/lang/String;)Ljava/lang/Object;
            astore 3 /* value */
        start local 3 // java.lang.Object value
        10: .line 266
            aload 0 /* this */
            aload 2 /* key */
            aload 3 /* value */
            invokevirtual com.mongodb.util.JSONParser.doCallback:(Ljava/lang/String;Ljava/lang/Object;)V
        11: .line 268
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.get:()C
            bipush 44
            if_icmpne 14
        12: .line 269
            aload 0 /* this */
            bipush 44
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        end local 3 // java.lang.Object value
        end local 2 // java.lang.String key
        13: .line 262
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.get:()C
            bipush 125
            if_icmpne 7
        14: .line 274
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 125
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        15: .line 276
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser._callback:Lorg/bson/BSONCallback;
            invokeinterface org.bson.BSONCallback.objectDone:()Ljava/lang/Object;
            areturn
        end local 1 // java.lang.String name
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   16     0   this  Lcom/mongodb/util/JSONParser;
            0   16     1   name  Ljava/lang/String;
            8   13     2    key  Ljava/lang/String;
           10   13     3  value  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      name  final

  protected void doCallback(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.util.JSONParser this
        start local 1 // java.lang.String name
        start local 2 // java.lang.Object value
         0: .line 280
            aload 2 /* value */
            ifnonnull 3
         1: .line 281
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser._callback:Lorg/bson/BSONCallback;
            aload 1 /* name */
            invokeinterface org.bson.BSONCallback.gotNull:(Ljava/lang/String;)V
         2: .line 282
            goto 17
      StackMap locals:
      StackMap stack:
         3: aload 2 /* value */
            instanceof java.lang.String
            ifeq 6
         4: .line 283
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser._callback:Lorg/bson/BSONCallback;
            aload 1 /* name */
            aload 2 /* value */
            checkcast java.lang.String
            invokeinterface org.bson.BSONCallback.gotString:(Ljava/lang/String;Ljava/lang/String;)V
         5: .line 284
            goto 17
      StackMap locals:
      StackMap stack:
         6: aload 2 /* value */
            instanceof java.lang.Boolean
            ifeq 9
         7: .line 285
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser._callback:Lorg/bson/BSONCallback;
            aload 1 /* name */
            aload 2 /* value */
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokeinterface org.bson.BSONCallback.gotBoolean:(Ljava/lang/String;Z)V
         8: .line 286
            goto 17
      StackMap locals:
      StackMap stack:
         9: aload 2 /* value */
            instanceof java.lang.Integer
            ifeq 12
        10: .line 287
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser._callback:Lorg/bson/BSONCallback;
            aload 1 /* name */
            aload 2 /* value */
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            invokeinterface org.bson.BSONCallback.gotInt:(Ljava/lang/String;I)V
        11: .line 288
            goto 17
      StackMap locals:
      StackMap stack:
        12: aload 2 /* value */
            instanceof java.lang.Long
            ifeq 15
        13: .line 289
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser._callback:Lorg/bson/BSONCallback;
            aload 1 /* name */
            aload 2 /* value */
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
            invokeinterface org.bson.BSONCallback.gotLong:(Ljava/lang/String;J)V
        14: .line 290
            goto 17
      StackMap locals:
      StackMap stack:
        15: aload 2 /* value */
            instanceof java.lang.Double
            ifeq 17
        16: .line 291
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser._callback:Lorg/bson/BSONCallback;
            aload 1 /* name */
            aload 2 /* value */
            checkcast java.lang.Double
            invokevirtual java.lang.Double.doubleValue:()D
            invokeinterface org.bson.BSONCallback.gotDouble:(Ljava/lang/String;D)V
        17: .line 293
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Object value
        end local 1 // java.lang.String name
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   18     0   this  Lcom/mongodb/util/JSONParser;
            0   18     1   name  Ljava/lang/String;
            0   18     2  value  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      name   final
      value  final

  public void read(char);
    descriptor: (C)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.util.JSONParser this
        start local 1 // char ch
         0: .line 302
            aload 0 /* this */
            iload 1 /* ch */
            invokevirtual com.mongodb.util.JSONParser.check:(C)Z
            ifne 2
         1: .line 303
            new com.mongodb.util.JSONParseException
            dup
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokespecial com.mongodb.util.JSONParseException.<init>:(Ljava/lang/String;I)V
            athrow
         2: .line 305
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
         3: .line 306
            return
        end local 1 // char ch
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/mongodb/util/JSONParser;
            0    4     1    ch  C
    MethodParameters:
      Name  Flags
      ch    final

  public char read();
    descriptor: ()C
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.mongodb.util.JSONParser this
         0: .line 309
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            if_icmplt 2
         1: .line 310
            new java.lang.IllegalStateException
            dup
            ldc "string done"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 312
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            dup_x1
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.charAt:(I)C
            ireturn
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/util/JSONParser;

  public void readHex();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.mongodb.util.JSONParser this
         0: .line 321
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            if_icmpge 6
         1: .line 322
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.charAt:(I)C
            bipush 48
            if_icmplt 2
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.charAt:(I)C
            bipush 57
            if_icmple 4
         2: .line 323
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.charAt:(I)C
            bipush 65
            if_icmplt 3
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.charAt:(I)C
            bipush 70
            if_icmple 4
         3: .line 324
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.charAt:(I)C
            bipush 97
            if_icmplt 6
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.charAt:(I)C
            bipush 102
            if_icmpgt 6
         4: .line 325
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
         5: .line 326
            goto 7
         6: .line 327
      StackMap locals:
      StackMap stack:
            new com.mongodb.util.JSONParseException
            dup
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokespecial com.mongodb.util.JSONParseException.<init>:(Ljava/lang/String;I)V
            athrow
         7: .line 329
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/mongodb/util/JSONParser;

  public boolean check(char);
    descriptor: (C)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.util.JSONParser this
        start local 1 // char ch
         0: .line 338
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.get:()C
            iload 1 /* ch */
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // char ch
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/util/JSONParser;
            0    2     1    ch  C
    MethodParameters:
      Name  Flags
      ch    final

  public void skipWS();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.mongodb.util.JSONParser this
         0: .line 345
            goto 2
         1: .line 346
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
         2: .line 345
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            if_icmpge 3
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic java.lang.Character.isWhitespace:(C)Z
            ifne 1
         3: .line 348
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/mongodb/util/JSONParser;

  public char get();
    descriptor: ()C
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.util.JSONParser this
         0: .line 356
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.skipWS:()V
         1: .line 357
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            if_icmpge 3
         2: .line 358
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.charAt:(I)C
            ireturn
         3: .line 360
      StackMap locals:
      StackMap stack:
            ldc 65535
            ireturn
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/mongodb/util/JSONParser;

  public java.lang.String parseString(boolean);
    descriptor: (Z)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // com.mongodb.util.JSONParser this
        start local 1 // boolean needQuote
         0: .line 370
            iconst_0
            istore 2 /* quot */
        start local 2 // char quot
         1: .line 371
            aload 0 /* this */
            bipush 39
            invokevirtual com.mongodb.util.JSONParser.check:(C)Z
            ifeq 4
         2: .line 372
            bipush 39
            istore 2 /* quot */
         3: .line 373
            goto 9
      StackMap locals: int
      StackMap stack:
         4: aload 0 /* this */
            bipush 34
            invokevirtual com.mongodb.util.JSONParser.check:(C)Z
            ifeq 7
         5: .line 374
            bipush 34
            istore 2 /* quot */
         6: .line 375
            goto 9
      StackMap locals:
      StackMap stack:
         7: iload 1 /* needQuote */
            ifeq 9
         8: .line 376
            new com.mongodb.util.JSONParseException
            dup
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokespecial com.mongodb.util.JSONParseException.<init>:(Ljava/lang/String;I)V
            athrow
         9: .line 381
      StackMap locals:
      StackMap stack:
            iload 2 /* quot */
            ifle 11
        10: .line 382
            aload 0 /* this */
            iload 2 /* quot */
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        11: .line 384
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 4 /* buf */
        start local 4 // java.lang.StringBuilder buf
        12: .line 385
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            istore 5 /* start */
        start local 5 // int start
        13: .line 386
            goto 55
        14: .line 387
      StackMap locals: com.mongodb.util.JSONParser int int top java.lang.StringBuilder int
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.charAt:(I)C
            istore 3 /* current */
        start local 3 // char current
        15: .line 388
            iload 2 /* quot */
            ifle 18
        16: .line 389
            iload 3 /* current */
            iload 2 /* quot */
            if_icmpne 20
        17: .line 390
            goto 56
        18: .line 393
      StackMap locals: com.mongodb.util.JSONParser int int int java.lang.StringBuilder int
      StackMap stack:
            iload 3 /* current */
            bipush 58
            if_icmpeq 56
            iload 3 /* current */
            bipush 32
            if_icmpne 20
        19: .line 394
            goto 56
        20: .line 398
      StackMap locals:
      StackMap stack:
            iload 3 /* current */
            bipush 92
            if_icmpne 54
        21: .line 399
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
        22: .line 401
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.get:()C
            istore 6 /* x */
        start local 6 // char x
        23: .line 403
            iconst_0
            istore 7 /* special */
        start local 7 // char special
        24: .line 406
            iload 6 /* x */
            lookupswitch { // 7
                   34: 44
                   92: 46
                   98: 42
                  110: 36
                  114: 38
                  116: 40
                  117: 25
              default: 48
          }
        25: .line 408
      StackMap locals: int int
      StackMap stack:
            aload 4 /* buf */
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            iload 5 /* start */
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        26: .line 409
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
        27: .line 410
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            istore 8 /* tempPos */
        start local 8 // int tempPos
        28: .line 412
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.readHex:()V
        29: .line 413
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.readHex:()V
        30: .line 414
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.readHex:()V
        31: .line 415
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.readHex:()V
        32: .line 417
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            iload 8 /* tempPos */
            iload 8 /* tempPos */
            iconst_4
            iadd
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            bipush 16
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;I)I
            istore 9 /* codePoint */
        start local 9 // int codePoint
        33: .line 418
            aload 4 /* buf */
            iload 9 /* codePoint */
            i2c
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        34: .line 420
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            istore 5 /* start */
        35: .line 421
            goto 55
        end local 9 // int codePoint
        end local 8 // int tempPos
        36: .line 423
      StackMap locals:
      StackMap stack:
            bipush 10
            istore 7 /* special */
        37: .line 424
            goto 48
        38: .line 426
      StackMap locals:
      StackMap stack:
            bipush 13
            istore 7 /* special */
        39: .line 427
            goto 48
        40: .line 429
      StackMap locals:
      StackMap stack:
            bipush 9
            istore 7 /* special */
        41: .line 430
            goto 48
        42: .line 432
      StackMap locals:
      StackMap stack:
            bipush 8
            istore 7 /* special */
        43: .line 433
            goto 48
        44: .line 435
      StackMap locals:
      StackMap stack:
            bipush 34
            istore 7 /* special */
        45: .line 436
            goto 48
        46: .line 438
      StackMap locals:
      StackMap stack:
            bipush 92
            istore 7 /* special */
        47: .line 439
            goto 48
        48: .line 445
      StackMap locals:
      StackMap stack:
            aload 4 /* buf */
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            iload 5 /* start */
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        49: .line 446
            iload 7 /* special */
            ifeq 52
        50: .line 447
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
        51: .line 448
            aload 4 /* buf */
            iload 7 /* special */
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        52: .line 450
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            istore 5 /* start */
        53: .line 451
            goto 55
        end local 7 // char special
        end local 6 // char x
        54: .line 453
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
        end local 3 // char current
        55: .line 386
      StackMap locals: com.mongodb.util.JSONParser int int top java.lang.StringBuilder int
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            if_icmplt 14
        56: .line 455
      StackMap locals:
      StackMap stack:
            aload 4 /* buf */
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            iload 5 /* start */
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        57: .line 456
            iload 2 /* quot */
            ifle 59
        58: .line 457
            aload 0 /* this */
            iload 2 /* quot */
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        59: .line 459
      StackMap locals:
      StackMap stack:
            aload 4 /* buf */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 5 // int start
        end local 4 // java.lang.StringBuilder buf
        end local 2 // char quot
        end local 1 // boolean needQuote
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   60     0       this  Lcom/mongodb/util/JSONParser;
            0   60     1  needQuote  Z
            1   60     2       quot  C
           15   55     3    current  C
           12   60     4        buf  Ljava/lang/StringBuilder;
           13   60     5      start  I
           23   54     6          x  C
           24   54     7    special  C
           28   36     8    tempPos  I
           33   36     9  codePoint  I
    MethodParameters:
           Name  Flags
      needQuote  final

  public java.lang.Number parseNumber();
    descriptor: ()Ljava/lang/Number;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // com.mongodb.util.JSONParser this
         0: .line 470
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.get:()C
            pop
         1: .line 471
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            istore 1 /* start */
        start local 1 // int start
         2: .line 472
            iconst_0
            istore 2 /* isDouble */
        start local 2 // boolean isDouble
         3: .line 474
            aload 0 /* this */
            bipush 45
            invokevirtual com.mongodb.util.JSONParser.check:(C)Z
            ifne 4
            aload 0 /* this */
            bipush 43
            invokevirtual com.mongodb.util.JSONParser.check:(C)Z
            ifeq 16
         4: .line 475
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
         5: .line 479
            goto 16
         6: .line 480
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.charAt:(I)C
            lookupswitch { // 13
                   46: 9
                   48: 7
                   49: 7
                   50: 7
                   51: 7
                   52: 7
                   53: 7
                   54: 7
                   55: 7
                   56: 7
                   57: 7
                   69: 12
                  101: 12
              default: 15
          }
         7: .line 491
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
         8: .line 492
            goto 16
         9: .line 494
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 2 /* isDouble */
        10: .line 495
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.parseFraction:()V
        11: .line 496
            goto 16
        12: .line 499
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 2 /* isDouble */
        13: .line 500
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.parseExponent:()V
        14: .line 501
            goto 16
        15: .line 503
      StackMap locals:
      StackMap stack:
            goto 17
        16: .line 479
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            if_icmplt 6
        17: .line 508
      StackMap locals:
      StackMap stack:
            iload 2 /* isDouble */
            ifeq 20
        18: .line 509
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            iload 1 /* start */
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokestatic java.lang.Double.valueOf:(Ljava/lang/String;)Ljava/lang/Double;
        19: areturn
        20: .line 512
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            iload 1 /* start */
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokestatic java.lang.Long.valueOf:(Ljava/lang/String;)Ljava/lang/Long;
            astore 3 /* val */
        start local 3 // java.lang.Long val
        21: .line 513
            aload 3 /* val */
            invokevirtual java.lang.Long.longValue:()J
            ldc 2147483647
            lcmp
            ifgt 24
            aload 3 /* val */
            invokevirtual java.lang.Long.longValue:()J
            ldc -2147483648
            lcmp
            iflt 24
        22: .line 514
            aload 3 /* val */
            invokevirtual java.lang.Long.intValue:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        23: areturn
        24: .line 516
      StackMap locals: java.lang.Long
      StackMap stack:
            aload 3 /* val */
        25: areturn
        end local 3 // java.lang.Long val
        26: .line 517
      StackMap locals: com.mongodb.util.JSONParser int int
      StackMap stack: java.lang.NumberFormatException
            astore 3 /* e */
        start local 3 // java.lang.NumberFormatException e
        27: .line 518
            new com.mongodb.util.JSONParseException
            dup
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            iload 1 /* start */
            aload 3 /* e */
            invokespecial com.mongodb.util.JSONParseException.<init>:(Ljava/lang/String;ILjava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.NumberFormatException e
        end local 2 // boolean isDouble
        end local 1 // int start
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   28     0      this  Lcom/mongodb/util/JSONParser;
            2   28     1     start  I
            3   28     2  isDouble  Z
           21   26     3       val  Ljava/lang/Long;
           27   28     3         e  Ljava/lang/NumberFormatException;
      Exception table:
        from    to  target  type
          17    19      26  Class java.lang.NumberFormatException
          20    23      26  Class java.lang.NumberFormatException
          24    25      26  Class java.lang.NumberFormatException

  public void parseFraction();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.mongodb.util.JSONParser this
         0: .line 527
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
         1: .line 530
            goto 8
         2: .line 531
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.charAt:(I)C
            lookupswitch { // 12
                   48: 3
                   49: 3
                   50: 3
                   51: 3
                   52: 3
                   53: 3
                   54: 3
                   55: 3
                   56: 3
                   57: 3
                   69: 5
                  101: 5
              default: 7
          }
         3: .line 542
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
         4: .line 543
            goto 8
         5: .line 546
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.parseExponent:()V
         6: .line 547
            goto 8
         7: .line 549
      StackMap locals:
      StackMap stack:
            goto 9
         8: .line 530
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            if_icmplt 2
         9: .line 552
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lcom/mongodb/util/JSONParser;

  public void parseExponent();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.mongodb.util.JSONParser this
         0: .line 559
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
         1: .line 561
            aload 0 /* this */
            bipush 45
            invokevirtual com.mongodb.util.JSONParser.check:(C)Z
            ifne 2
            aload 0 /* this */
            bipush 43
            invokevirtual com.mongodb.util.JSONParser.check:(C)Z
            ifeq 8
         2: .line 562
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
         3: .line 566
            goto 8
         4: .line 567
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokevirtual java.lang.String.charAt:(I)C
            tableswitch { // 48 - 57
                   48: 5
                   49: 5
                   50: 5
                   51: 5
                   52: 5
                   53: 5
                   54: 5
                   55: 5
                   56: 5
                   57: 5
              default: 7
          }
         5: .line 578
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.mongodb.util.JSONParser.pos:I
            iconst_1
            iadd
            putfield com.mongodb.util.JSONParser.pos:I
         6: .line 579
            goto 8
         7: .line 581
      StackMap locals:
      StackMap stack:
            goto 9
         8: .line 566
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            if_icmplt 4
         9: .line 584
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lcom/mongodb/util/JSONParser;

  public java.lang.Object parseArray();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.util.JSONParser this
         0: .line 593
            aload 0 /* this */
            aconst_null
            invokevirtual com.mongodb.util.JSONParser.parseArray:(Ljava/lang/String;)Ljava/lang/Object;
            areturn
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/util/JSONParser;

  protected java.lang.Object parseArray(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // com.mongodb.util.JSONParser this
        start local 1 // java.lang.String name
         0: .line 603
            aload 1 /* name */
            ifnull 3
         1: .line 604
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser._callback:Lorg/bson/BSONCallback;
            aload 1 /* name */
            invokeinterface org.bson.BSONCallback.arrayStart:(Ljava/lang/String;)V
         2: .line 605
            goto 4
         3: .line 606
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser._callback:Lorg/bson/BSONCallback;
            invokeinterface org.bson.BSONCallback.arrayStart:()V
         4: .line 609
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 91
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
         5: .line 611
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         6: .line 612
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.get:()C
            istore 3 /* current */
        start local 3 // char current
         7: .line 613
            goto 17
         8: .line 614
      StackMap locals: int int
      StackMap stack:
            iload 2 /* i */
            iinc 2 /* i */ 1
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            astore 4 /* elemName */
        start local 4 // java.lang.String elemName
         9: .line 615
            aload 0 /* this */
            aload 4 /* elemName */
            invokevirtual com.mongodb.util.JSONParser.parse:(Ljava/lang/String;)Ljava/lang/Object;
            astore 5 /* elem */
        start local 5 // java.lang.Object elem
        10: .line 616
            aload 0 /* this */
            aload 4 /* elemName */
            aload 5 /* elem */
            invokevirtual com.mongodb.util.JSONParser.doCallback:(Ljava/lang/String;Ljava/lang/Object;)V
        11: .line 618
            aload 0 /* this */
            invokevirtual com.mongodb.util.JSONParser.get:()C
            dup
            istore 3 /* current */
            bipush 44
            if_icmpne 14
        12: .line 619
            aload 0 /* this */
            bipush 44
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        13: .line 620
            goto 17
      StackMap locals: java.lang.String java.lang.Object
      StackMap stack:
        14: iload 3 /* current */
            bipush 93
            if_icmpne 16
        15: .line 621
            goto 18
        16: .line 623
      StackMap locals:
      StackMap stack:
            new com.mongodb.util.JSONParseException
            dup
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.s:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser.pos:I
            invokespecial com.mongodb.util.JSONParseException.<init>:(Ljava/lang/String;I)V
            athrow
        end local 5 // java.lang.Object elem
        end local 4 // java.lang.String elemName
        17: .line 613
      StackMap locals:
      StackMap stack:
            iload 3 /* current */
            bipush 93
            if_icmpne 8
        18: .line 627
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush 93
            invokevirtual com.mongodb.util.JSONParser.read:(C)V
        19: .line 629
            aload 0 /* this */
            getfield com.mongodb.util.JSONParser._callback:Lorg/bson/BSONCallback;
            invokeinterface org.bson.BSONCallback.arrayDone:()Ljava/lang/Object;
            areturn
        end local 3 // char current
        end local 2 // int i
        end local 1 // java.lang.String name
        end local 0 // com.mongodb.util.JSONParser this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   20     0      this  Lcom/mongodb/util/JSONParser;
            0   20     1      name  Ljava/lang/String;
            6   20     2         i  I
            7   20     3   current  C
            9   17     4  elemName  Ljava/lang/String;
           10   17     5      elem  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      name  final
}
SourceFile: "JSON.java"