public abstract class org.bson.AbstractBsonReader implements org.bson.BsonReader
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.bson.AbstractBsonReader
  super_class: java.lang.Object
{
  private org.bson.AbstractBsonReader$State state;
    descriptor: Lorg/bson/AbstractBsonReader$State;
    flags: (0x0002) ACC_PRIVATE

  private org.bson.AbstractBsonReader$Context context;
    descriptor: Lorg/bson/AbstractBsonReader$Context;
    flags: (0x0002) ACC_PRIVATE

  private org.bson.BsonType currentBsonType;
    descriptor: Lorg/bson/BsonType;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String currentName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private boolean closed;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private static volatile int[] $SWITCH_TABLE$org$bson$BsonContextType;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 40
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 41
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.INITIAL:Lorg/bson/AbstractBsonReader$State;
            putfield org.bson.AbstractBsonReader.state:Lorg/bson/AbstractBsonReader$State;
         2: .line 42
            return
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public org.bson.BsonType getCurrentBsonType();
    descriptor: ()Lorg/bson/BsonType;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 46
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.currentBsonType:Lorg/bson/BsonType;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/AbstractBsonReader;

  public java.lang.String getCurrentName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 51
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.state:Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.VALUE:Lorg/bson/AbstractBsonReader$State;
            if_acmpeq 2
         1: .line 52
            aload 0 /* this */
            ldc "getCurrentName"
            iconst_1
            anewarray org.bson.AbstractBsonReader$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonReader$State.VALUE:Lorg/bson/AbstractBsonReader$State;
            aastore
            invokevirtual org.bson.AbstractBsonReader.throwInvalidState:(Ljava/lang/String;[Lorg/bson/AbstractBsonReader$State;)V
         2: .line 54
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.currentName:Ljava/lang/String;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  protected void setCurrentBsonType(org.bson.BsonType);
    descriptor: (Lorg/bson/BsonType;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // org.bson.BsonType newType
         0: .line 63
            aload 0 /* this */
            aload 1 /* newType */
            putfield org.bson.AbstractBsonReader.currentBsonType:Lorg/bson/BsonType;
         1: .line 64
            return
        end local 1 // org.bson.BsonType newType
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/bson/AbstractBsonReader;
            0    2     1  newType  Lorg/bson/BsonType;
    MethodParameters:
         Name  Flags
      newType  final

  public org.bson.AbstractBsonReader$State getState();
    descriptor: ()Lorg/bson/AbstractBsonReader$State;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 70
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.state:Lorg/bson/AbstractBsonReader$State;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/AbstractBsonReader;

  protected void setState(org.bson.AbstractBsonReader$State);
    descriptor: (Lorg/bson/AbstractBsonReader$State;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // org.bson.AbstractBsonReader$State newState
         0: .line 79
            aload 0 /* this */
            aload 1 /* newState */
            putfield org.bson.AbstractBsonReader.state:Lorg/bson/AbstractBsonReader$State;
         1: .line 80
            return
        end local 1 // org.bson.AbstractBsonReader$State newState
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/bson/AbstractBsonReader;
            0    2     1  newState  Lorg/bson/AbstractBsonReader$State;
    MethodParameters:
          Name  Flags
      newState  final

  protected void setCurrentName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String newName
         0: .line 88
            aload 0 /* this */
            aload 1 /* newName */
            putfield org.bson.AbstractBsonReader.currentName:Ljava/lang/String;
         1: .line 89
            return
        end local 1 // java.lang.String newName
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/bson/AbstractBsonReader;
            0    2     1  newName  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      newName  final

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 95
            aload 0 /* this */
            iconst_1
            putfield org.bson.AbstractBsonReader.closed:Z
         1: .line 96
            return
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;

  protected boolean isClosed();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 104
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.closed:Z
            ireturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/AbstractBsonReader;

  protected abstract org.bson.BsonBinary doReadBinaryData();
    descriptor: ()Lorg/bson/BsonBinary;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract byte doPeekBinarySubType();
    descriptor: ()B
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract int doPeekBinarySize();
    descriptor: ()I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract boolean doReadBoolean();
    descriptor: ()Z
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract long doReadDateTime();
    descriptor: ()J
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract double doReadDouble();
    descriptor: ()D
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract void doReadEndArray();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract void doReadEndDocument();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract int doReadInt32();
    descriptor: ()I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract long doReadInt64();
    descriptor: ()J
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract org.bson.types.Decimal128 doReadDecimal128();
    descriptor: ()Lorg/bson/types/Decimal128;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract java.lang.String doReadJavaScript();
    descriptor: ()Ljava/lang/String;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract java.lang.String doReadJavaScriptWithScope();
    descriptor: ()Ljava/lang/String;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract void doReadMaxKey();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract void doReadMinKey();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract void doReadNull();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract org.bson.types.ObjectId doReadObjectId();
    descriptor: ()Lorg/bson/types/ObjectId;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract org.bson.BsonRegularExpression doReadRegularExpression();
    descriptor: ()Lorg/bson/BsonRegularExpression;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract org.bson.BsonDbPointer doReadDBPointer();
    descriptor: ()Lorg/bson/BsonDbPointer;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract void doReadStartArray();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract void doReadStartDocument();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract java.lang.String doReadString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract java.lang.String doReadSymbol();
    descriptor: ()Ljava/lang/String;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract org.bson.BsonTimestamp doReadTimestamp();
    descriptor: ()Lorg/bson/BsonTimestamp;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract void doReadUndefined();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract void doSkipName();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract void doSkipValue();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public org.bson.BsonBinary readBinaryData();
    descriptor: ()Lorg/bson/BsonBinary;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 281
            aload 0 /* this */
            ldc "readBinaryData"
            getstatic org.bson.BsonType.BINARY:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 282
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 283
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadBinaryData:()Lorg/bson/BsonBinary;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public byte peekBinarySubType();
    descriptor: ()B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 288
            aload 0 /* this */
            ldc "readBinaryData"
            getstatic org.bson.BsonType.BINARY:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 289
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doPeekBinarySubType:()B
            ireturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;

  public int peekBinarySize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 294
            aload 0 /* this */
            ldc "readBinaryData"
            getstatic org.bson.BsonType.BINARY:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 295
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doPeekBinarySize:()I
            ireturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;

  public boolean readBoolean();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 300
            aload 0 /* this */
            ldc "readBoolean"
            getstatic org.bson.BsonType.BOOLEAN:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 301
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 302
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadBoolean:()Z
            ireturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public abstract org.bson.BsonType readBsonType();
    descriptor: ()Lorg/bson/BsonType;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public long readDateTime();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 310
            aload 0 /* this */
            ldc "readDateTime"
            getstatic org.bson.BsonType.DATE_TIME:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 311
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 312
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadDateTime:()J
            lreturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public double readDouble();
    descriptor: ()D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 317
            aload 0 /* this */
            ldc "readDouble"
            getstatic org.bson.BsonType.DOUBLE:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 318
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 319
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadDouble:()D
            dreturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public void readEndArray();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 324
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.isClosed:()Z
            ifeq 2
         1: .line 325
            new java.lang.IllegalStateException
            dup
            ldc "BSONBinaryWriter"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 327
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getContext:()Lorg/bson/AbstractBsonReader$Context;
            invokevirtual org.bson.AbstractBsonReader$Context.getContextType:()Lorg/bson/BsonContextType;
            getstatic org.bson.BsonContextType.ARRAY:Lorg/bson/BsonContextType;
            if_acmpeq 4
         3: .line 328
            aload 0 /* this */
            ldc "readEndArray"
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getContext:()Lorg/bson/AbstractBsonReader$Context;
            invokevirtual org.bson.AbstractBsonReader$Context.getContextType:()Lorg/bson/BsonContextType;
            iconst_1
            anewarray org.bson.BsonContextType
            dup
            iconst_0
            getstatic org.bson.BsonContextType.ARRAY:Lorg/bson/BsonContextType;
            aastore
            invokevirtual org.bson.AbstractBsonReader.throwInvalidContextType:(Ljava/lang/String;Lorg/bson/BsonContextType;[Lorg/bson/BsonContextType;)V
         4: .line 330
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getState:()Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.TYPE:Lorg/bson/AbstractBsonReader$State;
            if_acmpne 6
         5: .line 331
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readBsonType:()Lorg/bson/BsonType;
            pop
         6: .line 333
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getState:()Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.END_OF_ARRAY:Lorg/bson/AbstractBsonReader$State;
            if_acmpeq 8
         7: .line 334
            aload 0 /* this */
            ldc "ReadEndArray"
            iconst_1
            anewarray org.bson.AbstractBsonReader$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonReader$State.END_OF_ARRAY:Lorg/bson/AbstractBsonReader$State;
            aastore
            invokevirtual org.bson.AbstractBsonReader.throwInvalidState:(Ljava/lang/String;[Lorg/bson/AbstractBsonReader$State;)V
         8: .line 337
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadEndArray:()V
         9: .line 339
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.setStateOnEnd:()V
        10: .line 340
            return
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/bson/AbstractBsonReader;

  public void readEndDocument();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 344
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.isClosed:()Z
            ifeq 2
         1: .line 345
            new java.lang.IllegalStateException
            dup
            ldc "BSONBinaryWriter"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 347
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getContext:()Lorg/bson/AbstractBsonReader$Context;
            invokevirtual org.bson.AbstractBsonReader$Context.getContextType:()Lorg/bson/BsonContextType;
            getstatic org.bson.BsonContextType.DOCUMENT:Lorg/bson/BsonContextType;
            if_acmpeq 6
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getContext:()Lorg/bson/AbstractBsonReader$Context;
            invokevirtual org.bson.AbstractBsonReader$Context.getContextType:()Lorg/bson/BsonContextType;
            getstatic org.bson.BsonContextType.SCOPE_DOCUMENT:Lorg/bson/BsonContextType;
            if_acmpeq 6
         3: .line 348
            aload 0 /* this */
            ldc "readEndDocument"
         4: .line 349
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getContext:()Lorg/bson/AbstractBsonReader$Context;
            invokevirtual org.bson.AbstractBsonReader$Context.getContextType:()Lorg/bson/BsonContextType;
            iconst_2
            anewarray org.bson.BsonContextType
            dup
            iconst_0
            getstatic org.bson.BsonContextType.DOCUMENT:Lorg/bson/BsonContextType;
            aastore
            dup
            iconst_1
            getstatic org.bson.BsonContextType.SCOPE_DOCUMENT:Lorg/bson/BsonContextType;
            aastore
         5: .line 348
            invokevirtual org.bson.AbstractBsonReader.throwInvalidContextType:(Ljava/lang/String;Lorg/bson/BsonContextType;[Lorg/bson/BsonContextType;)V
         6: .line 351
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getState:()Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.TYPE:Lorg/bson/AbstractBsonReader$State;
            if_acmpne 8
         7: .line 352
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readBsonType:()Lorg/bson/BsonType;
            pop
         8: .line 354
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getState:()Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.END_OF_DOCUMENT:Lorg/bson/AbstractBsonReader$State;
            if_acmpeq 10
         9: .line 355
            aload 0 /* this */
            ldc "readEndDocument"
            iconst_1
            anewarray org.bson.AbstractBsonReader$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonReader$State.END_OF_DOCUMENT:Lorg/bson/AbstractBsonReader$State;
            aastore
            invokevirtual org.bson.AbstractBsonReader.throwInvalidState:(Ljava/lang/String;[Lorg/bson/AbstractBsonReader$State;)V
        10: .line 358
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadEndDocument:()V
        11: .line 360
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.setStateOnEnd:()V
        12: .line 361
            return
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lorg/bson/AbstractBsonReader;

  public int readInt32();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 365
            aload 0 /* this */
            ldc "readInt32"
            getstatic org.bson.BsonType.INT32:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 366
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 367
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadInt32:()I
            ireturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public long readInt64();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 373
            aload 0 /* this */
            ldc "readInt64"
            getstatic org.bson.BsonType.INT64:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 374
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 375
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadInt64:()J
            lreturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public org.bson.types.Decimal128 readDecimal128();
    descriptor: ()Lorg/bson/types/Decimal128;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 380
            aload 0 /* this */
            ldc "readDecimal"
            getstatic org.bson.BsonType.DECIMAL128:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 381
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 382
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadDecimal128:()Lorg/bson/types/Decimal128;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public java.lang.String readJavaScript();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 387
            aload 0 /* this */
            ldc "readJavaScript"
            getstatic org.bson.BsonType.JAVASCRIPT:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 388
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 389
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadJavaScript:()Ljava/lang/String;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public java.lang.String readJavaScriptWithScope();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 394
            aload 0 /* this */
            ldc "readJavaScriptWithScope"
            getstatic org.bson.BsonType.JAVASCRIPT_WITH_SCOPE:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 395
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.SCOPE_DOCUMENT:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 396
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadJavaScriptWithScope:()Ljava/lang/String;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public void readMaxKey();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 401
            aload 0 /* this */
            ldc "readMaxKey"
            getstatic org.bson.BsonType.MAX_KEY:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 402
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 403
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadMaxKey:()V
         3: .line 404
            return
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bson/AbstractBsonReader;

  public void readMinKey();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 408
            aload 0 /* this */
            ldc "readMinKey"
            getstatic org.bson.BsonType.MIN_KEY:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 409
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 410
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadMinKey:()V
         3: .line 411
            return
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bson/AbstractBsonReader;

  public void readNull();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 415
            aload 0 /* this */
            ldc "readNull"
            getstatic org.bson.BsonType.NULL:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 416
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 417
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadNull:()V
         3: .line 418
            return
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bson/AbstractBsonReader;

  public org.bson.types.ObjectId readObjectId();
    descriptor: ()Lorg/bson/types/ObjectId;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 422
            aload 0 /* this */
            ldc "readObjectId"
            getstatic org.bson.BsonType.OBJECT_ID:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 423
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 424
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadObjectId:()Lorg/bson/types/ObjectId;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public org.bson.BsonRegularExpression readRegularExpression();
    descriptor: ()Lorg/bson/BsonRegularExpression;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 429
            aload 0 /* this */
            ldc "readRegularExpression"
            getstatic org.bson.BsonType.REGULAR_EXPRESSION:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 430
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 431
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadRegularExpression:()Lorg/bson/BsonRegularExpression;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public org.bson.BsonDbPointer readDBPointer();
    descriptor: ()Lorg/bson/BsonDbPointer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 436
            aload 0 /* this */
            ldc "readDBPointer"
            getstatic org.bson.BsonType.DB_POINTER:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 437
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 438
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadDBPointer:()Lorg/bson/BsonDbPointer;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public void readStartArray();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 443
            aload 0 /* this */
            ldc "readStartArray"
            getstatic org.bson.BsonType.ARRAY:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 444
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadStartArray:()V
         2: .line 445
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.TYPE:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         3: .line 446
            return
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bson/AbstractBsonReader;

  public void readStartDocument();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 450
            aload 0 /* this */
            ldc "readStartDocument"
            getstatic org.bson.BsonType.DOCUMENT:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 451
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadStartDocument:()V
         2: .line 452
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.TYPE:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         3: .line 453
            return
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bson/AbstractBsonReader;

  public java.lang.String readString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 457
            aload 0 /* this */
            ldc "readString"
            getstatic org.bson.BsonType.STRING:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 458
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 459
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadString:()Ljava/lang/String;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public java.lang.String readSymbol();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 464
            aload 0 /* this */
            ldc "readSymbol"
            getstatic org.bson.BsonType.SYMBOL:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 465
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 466
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadSymbol:()Ljava/lang/String;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public org.bson.BsonTimestamp readTimestamp();
    descriptor: ()Lorg/bson/BsonTimestamp;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 471
            aload 0 /* this */
            ldc "readTimestamp"
            getstatic org.bson.BsonType.TIMESTAMP:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 472
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 473
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadTimestamp:()Lorg/bson/BsonTimestamp;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;

  public void readUndefined();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 478
            aload 0 /* this */
            ldc "readUndefined"
            getstatic org.bson.BsonType.UNDEFINED:Lorg/bson/BsonType;
            invokevirtual org.bson.AbstractBsonReader.checkPreconditions:(Ljava/lang/String;Lorg/bson/BsonType;)V
         1: .line 479
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getNextState:()Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 480
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doReadUndefined:()V
         3: .line 481
            return
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bson/AbstractBsonReader;

  public void skipName();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 485
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.isClosed:()Z
            ifeq 2
         1: .line 486
            new java.lang.IllegalStateException
            dup
            ldc "This instance has been closed"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 488
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getState:()Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.NAME:Lorg/bson/AbstractBsonReader$State;
            if_acmpeq 4
         3: .line 489
            aload 0 /* this */
            ldc "skipName"
            iconst_1
            anewarray org.bson.AbstractBsonReader$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonReader$State.NAME:Lorg/bson/AbstractBsonReader$State;
            aastore
            invokevirtual org.bson.AbstractBsonReader.throwInvalidState:(Ljava/lang/String;[Lorg/bson/AbstractBsonReader$State;)V
         4: .line 491
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.VALUE:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         5: .line 492
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doSkipName:()V
         6: .line 493
            return
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/bson/AbstractBsonReader;

  public void skipValue();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 497
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.isClosed:()Z
            ifeq 2
         1: .line 498
            new java.lang.IllegalStateException
            dup
            ldc "BSONBinaryWriter"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 500
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getState:()Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.VALUE:Lorg/bson/AbstractBsonReader$State;
            if_acmpeq 4
         3: .line 501
            aload 0 /* this */
            ldc "skipValue"
            iconst_1
            anewarray org.bson.AbstractBsonReader$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonReader$State.VALUE:Lorg/bson/AbstractBsonReader$State;
            aastore
            invokevirtual org.bson.AbstractBsonReader.throwInvalidState:(Ljava/lang/String;[Lorg/bson/AbstractBsonReader$State;)V
         4: .line 504
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.doSkipValue:()V
         5: .line 506
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.TYPE:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         6: .line 507
            return
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/bson/AbstractBsonReader;

  public org.bson.BsonBinary readBinaryData(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/bson/BsonBinary;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 511
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 512
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readBinaryData:()Lorg/bson/BsonBinary;
            areturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public boolean readBoolean(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 517
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 518
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readBoolean:()Z
            ireturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public long readDateTime(java.lang.String);
    descriptor: (Ljava/lang/String;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 523
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 524
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readDateTime:()J
            lreturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public double readDouble(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 529
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 530
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readDouble:()D
            dreturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public int readInt32(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 535
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 536
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readInt32:()I
            ireturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public long readInt64(java.lang.String);
    descriptor: (Ljava/lang/String;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 541
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 542
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readInt64:()J
            lreturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public org.bson.types.Decimal128 readDecimal128(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/bson/types/Decimal128;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 547
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 548
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readDecimal128:()Lorg/bson/types/Decimal128;
            areturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public java.lang.String readJavaScript(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 553
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 554
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readJavaScript:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public java.lang.String readJavaScriptWithScope(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 559
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 560
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readJavaScriptWithScope:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void readMaxKey(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 565
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 566
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readMaxKey:()V
         2: .line 567
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void readMinKey(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 571
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 572
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readMinKey:()V
         2: .line 573
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public java.lang.String readName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 577
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.state:Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.TYPE:Lorg/bson/AbstractBsonReader$State;
            if_acmpne 2
         1: .line 578
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readBsonType:()Lorg/bson/BsonType;
            pop
         2: .line 580
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.state:Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.NAME:Lorg/bson/AbstractBsonReader$State;
            if_acmpeq 4
         3: .line 581
            aload 0 /* this */
            ldc "readName"
            iconst_1
            anewarray org.bson.AbstractBsonReader$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonReader$State.NAME:Lorg/bson/AbstractBsonReader$State;
            aastore
            invokevirtual org.bson.AbstractBsonReader.throwInvalidState:(Ljava/lang/String;[Lorg/bson/AbstractBsonReader$State;)V
         4: .line 584
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.VALUE:Lorg/bson/AbstractBsonReader$State;
            putfield org.bson.AbstractBsonReader.state:Lorg/bson/AbstractBsonReader$State;
         5: .line 585
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.currentName:Ljava/lang/String;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/bson/AbstractBsonReader;

  public void readName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 590
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 591
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void readNull(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 595
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 596
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readNull:()V
         2: .line 597
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public org.bson.types.ObjectId readObjectId(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/bson/types/ObjectId;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 601
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 602
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readObjectId:()Lorg/bson/types/ObjectId;
            areturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public org.bson.BsonRegularExpression readRegularExpression(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/bson/BsonRegularExpression;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 607
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 608
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readRegularExpression:()Lorg/bson/BsonRegularExpression;
            areturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public org.bson.BsonDbPointer readDBPointer(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/bson/BsonDbPointer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 613
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 614
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readDBPointer:()Lorg/bson/BsonDbPointer;
            areturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public java.lang.String readString(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 620
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 621
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public java.lang.String readSymbol(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 626
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 627
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readSymbol:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public org.bson.BsonTimestamp readTimestamp(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/bson/BsonTimestamp;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 632
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 633
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readTimestamp:()Lorg/bson/BsonTimestamp;
            areturn
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/AbstractBsonReader;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void readUndefined(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String name
         0: .line 638
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonReader.verifyName:(Ljava/lang/String;)V
         1: .line 639
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readUndefined:()V
         2: .line 640
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonReader;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  protected void throwInvalidContextType(java.lang.String, org.bson.BsonContextType, org.bson.BsonContextType[]);
    descriptor: (Ljava/lang/String;Lorg/bson/BsonContextType;[Lorg/bson/BsonContextType;)V
    flags: (0x0084) ACC_PROTECTED, ACC_VARARGS
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String methodName
        start local 2 // org.bson.BsonContextType actualContextType
        start local 3 // org.bson.BsonContextType[] validContextTypes
         0: .line 652
            ldc " or "
            aload 3 /* validContextTypes */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic org.bson.StringUtils.join:(Ljava/lang/String;Ljava/util/Collection;)Ljava/lang/String;
            astore 4 /* validContextTypesString */
        start local 4 // java.lang.String validContextTypesString
         1: .line 653
            ldc "%s can only be called when ContextType is %s, not when ContextType is %s."
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 654
            aload 1 /* methodName */
            aastore
            dup
            iconst_1
            aload 4 /* validContextTypesString */
            aastore
            dup
            iconst_2
            aload 2 /* actualContextType */
            aastore
         3: .line 653
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 5 /* message */
        start local 5 // java.lang.String message
         4: .line 655
            new org.bson.BsonInvalidOperationException
            dup
            aload 5 /* message */
            invokespecial org.bson.BsonInvalidOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // java.lang.String message
        end local 4 // java.lang.String validContextTypesString
        end local 3 // org.bson.BsonContextType[] validContextTypes
        end local 2 // org.bson.BsonContextType actualContextType
        end local 1 // java.lang.String methodName
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    5     0                     this  Lorg/bson/AbstractBsonReader;
            0    5     1               methodName  Ljava/lang/String;
            0    5     2        actualContextType  Lorg/bson/BsonContextType;
            0    5     3        validContextTypes  [Lorg/bson/BsonContextType;
            1    5     4  validContextTypesString  Ljava/lang/String;
            4    5     5                  message  Ljava/lang/String;
    MethodParameters:
                   Name  Flags
      methodName         final
      actualContextType  final
      validContextTypes  final

  protected void throwInvalidState(java.lang.String, org.bson.AbstractBsonReader$State[]);
    descriptor: (Ljava/lang/String;[Lorg/bson/AbstractBsonReader$State;)V
    flags: (0x0084) ACC_PROTECTED, ACC_VARARGS
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String methodName
        start local 2 // org.bson.AbstractBsonReader$State[] validStates
         0: .line 666
            ldc " or "
            aload 2 /* validStates */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic org.bson.StringUtils.join:(Ljava/lang/String;Ljava/util/Collection;)Ljava/lang/String;
            astore 3 /* validStatesString */
        start local 3 // java.lang.String validStatesString
         1: .line 667
            ldc "%s can only be called when State is %s, not when State is %s."
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 668
            aload 1 /* methodName */
            aastore
            dup
            iconst_1
            aload 3 /* validStatesString */
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.state:Lorg/bson/AbstractBsonReader$State;
            aastore
         3: .line 667
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 4 /* message */
        start local 4 // java.lang.String message
         4: .line 669
            new org.bson.BsonInvalidOperationException
            dup
            aload 4 /* message */
            invokespecial org.bson.BsonInvalidOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.lang.String message
        end local 3 // java.lang.String validStatesString
        end local 2 // org.bson.AbstractBsonReader$State[] validStates
        end local 1 // java.lang.String methodName
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    5     0               this  Lorg/bson/AbstractBsonReader;
            0    5     1         methodName  Ljava/lang/String;
            0    5     2        validStates  [Lorg/bson/AbstractBsonReader$State;
            1    5     3  validStatesString  Ljava/lang/String;
            4    5     4            message  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      methodName   final
      validStates  final

  protected void verifyBSONType(java.lang.String, org.bson.BsonType);
    descriptor: (Ljava/lang/String;Lorg/bson/BsonType;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String methodName
        start local 2 // org.bson.BsonType requiredBsonType
         0: .line 679
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.state:Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.INITIAL:Lorg/bson/AbstractBsonReader$State;
            if_acmpeq 1
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.state:Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.SCOPE_DOCUMENT:Lorg/bson/AbstractBsonReader$State;
            if_acmpeq 1
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.state:Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.TYPE:Lorg/bson/AbstractBsonReader$State;
            if_acmpne 2
         1: .line 680
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readBsonType:()Lorg/bson/BsonType;
            pop
         2: .line 682
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.state:Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.NAME:Lorg/bson/AbstractBsonReader$State;
            if_acmpne 4
         3: .line 684
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.skipName:()V
         4: .line 686
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.state:Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.VALUE:Lorg/bson/AbstractBsonReader$State;
            if_acmpeq 6
         5: .line 687
            aload 0 /* this */
            aload 1 /* methodName */
            iconst_1
            anewarray org.bson.AbstractBsonReader$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonReader$State.VALUE:Lorg/bson/AbstractBsonReader$State;
            aastore
            invokevirtual org.bson.AbstractBsonReader.throwInvalidState:(Ljava/lang/String;[Lorg/bson/AbstractBsonReader$State;)V
         6: .line 689
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.currentBsonType:Lorg/bson/BsonType;
            aload 2 /* requiredBsonType */
            if_acmpeq 10
         7: .line 690
            new org.bson.BsonInvalidOperationException
            dup
            ldc "%s can only be called when CurrentBSONType is %s, not when CurrentBSONType is %s."
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         8: .line 692
            aload 1 /* methodName */
            aastore
            dup
            iconst_1
            aload 2 /* requiredBsonType */
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.currentBsonType:Lorg/bson/BsonType;
            aastore
         9: .line 690
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.bson.BsonInvalidOperationException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 694
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.bson.BsonType requiredBsonType
        end local 1 // java.lang.String methodName
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   11     0              this  Lorg/bson/AbstractBsonReader;
            0   11     1        methodName  Ljava/lang/String;
            0   11     2  requiredBsonType  Lorg/bson/BsonType;
    MethodParameters:
                  Name  Flags
      methodName        final
      requiredBsonType  final

  protected void verifyName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String expectedName
         0: .line 703
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readBsonType:()Lorg/bson/BsonType;
            pop
         1: .line 704
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.readName:()Ljava/lang/String;
            astore 2 /* actualName */
        start local 2 // java.lang.String actualName
         2: .line 705
            aload 2 /* actualName */
            aload 1 /* expectedName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
         3: .line 706
            new org.bson.BsonSerializationException
            dup
            ldc "Expected element name to be '%s', not '%s'."
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 707
            aload 1 /* expectedName */
            aastore
            dup
            iconst_1
            aload 2 /* actualName */
            aastore
         5: .line 706
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.bson.BsonSerializationException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 709
      StackMap locals: java.lang.String
      StackMap stack:
            return
        end local 2 // java.lang.String actualName
        end local 1 // java.lang.String expectedName
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lorg/bson/AbstractBsonReader;
            0    7     1  expectedName  Ljava/lang/String;
            2    7     2    actualName  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      expectedName  final

  protected void checkPreconditions(java.lang.String, org.bson.BsonType);
    descriptor: (Ljava/lang/String;Lorg/bson/BsonType;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // java.lang.String methodName
        start local 2 // org.bson.BsonType type
         0: .line 718
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.isClosed:()Z
            ifeq 2
         1: .line 719
            new java.lang.IllegalStateException
            dup
            ldc "BsonWriter is closed"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 722
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* methodName */
            aload 2 /* type */
            invokevirtual org.bson.AbstractBsonReader.verifyBSONType:(Ljava/lang/String;Lorg/bson/BsonType;)V
         3: .line 723
            return
        end local 2 // org.bson.BsonType type
        end local 1 // java.lang.String methodName
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lorg/bson/AbstractBsonReader;
            0    4     1  methodName  Ljava/lang/String;
            0    4     2        type  Lorg/bson/BsonType;
    MethodParameters:
            Name  Flags
      methodName  final
      type        final

  protected org.bson.AbstractBsonReader$Context getContext();
    descriptor: ()Lorg/bson/AbstractBsonReader$Context;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 731
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.context:Lorg/bson/AbstractBsonReader$Context;
            areturn
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/AbstractBsonReader;

  protected void setContext(org.bson.AbstractBsonReader$Context);
    descriptor: (Lorg/bson/AbstractBsonReader$Context;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonReader this
        start local 1 // org.bson.AbstractBsonReader$Context context
         0: .line 740
            aload 0 /* this */
            aload 1 /* context */
            putfield org.bson.AbstractBsonReader.context:Lorg/bson/AbstractBsonReader$Context;
         1: .line 741
            return
        end local 1 // org.bson.AbstractBsonReader$Context context
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/bson/AbstractBsonReader;
            0    2     1  context  Lorg/bson/AbstractBsonReader$Context;
    MethodParameters:
         Name  Flags
      context  final

  protected org.bson.AbstractBsonReader$State getNextState();
    descriptor: ()Lorg/bson/AbstractBsonReader$State;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 749
            invokestatic org.bson.AbstractBsonReader.$SWITCH_TABLE$org$bson$BsonContextType:()[I
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.context:Lorg/bson/AbstractBsonReader$Context;
            invokevirtual org.bson.AbstractBsonReader$Context.getContextType:()Lorg/bson/BsonContextType;
            invokevirtual org.bson.BsonContextType.ordinal:()I
            iaload
            tableswitch { // 1 - 5
                    1: 2
                    2: 1
                    3: 1
                    4: 3
                    5: 1
              default: 3
          }
         1: .line 753
      StackMap locals:
      StackMap stack:
            getstatic org.bson.AbstractBsonReader$State.TYPE:Lorg/bson/AbstractBsonReader$State;
            areturn
         2: .line 755
      StackMap locals:
      StackMap stack:
            getstatic org.bson.AbstractBsonReader$State.DONE:Lorg/bson/AbstractBsonReader$State;
            areturn
         3: .line 757
      StackMap locals:
      StackMap stack:
            new org.bson.BSONException
            dup
            ldc "Unexpected ContextType %s."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.bson.AbstractBsonReader.context:Lorg/bson/AbstractBsonReader$Context;
            invokevirtual org.bson.AbstractBsonReader$Context.getContextType:()Lorg/bson/BsonContextType;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.bson.BSONException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bson/AbstractBsonReader;

  private void setStateOnEnd();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonReader this
         0: .line 762
            invokestatic org.bson.AbstractBsonReader.$SWITCH_TABLE$org$bson$BsonContextType:()[I
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getContext:()Lorg/bson/AbstractBsonReader$Context;
            invokevirtual org.bson.AbstractBsonReader$Context.getContextType:()Lorg/bson/BsonContextType;
            invokevirtual org.bson.BsonContextType.ordinal:()I
            iaload
            tableswitch { // 1 - 3
                    1: 3
                    2: 1
                    3: 1
              default: 5
          }
         1: .line 765
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.TYPE:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         2: .line 766
            goto 6
         3: .line 768
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.DONE:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.AbstractBsonReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         4: .line 769
            goto 6
         5: .line 771
      StackMap locals:
      StackMap stack:
            new org.bson.BSONException
            dup
            ldc "Unexpected ContextType %s."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonReader.getContext:()Lorg/bson/AbstractBsonReader$Context;
            invokevirtual org.bson.AbstractBsonReader$Context.getContextType:()Lorg/bson/BsonContextType;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.bson.BSONException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 773
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.bson.AbstractBsonReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/bson/AbstractBsonReader;

  static int[] $SWITCH_TABLE$org$bson$BsonContextType();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 30
            getstatic org.bson.AbstractBsonReader.$SWITCH_TABLE$org$bson$BsonContextType:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.bson.BsonContextType.values:()[Lorg/bson/BsonContextType;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.bson.BsonContextType.ARRAY:Lorg/bson/BsonContextType;
            invokevirtual org.bson.BsonContextType.ordinal:()I
            iconst_3
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.bson.BsonContextType.DOCUMENT:Lorg/bson/BsonContextType;
            invokevirtual org.bson.BsonContextType.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic org.bson.BsonContextType.JAVASCRIPT_WITH_SCOPE:Lorg/bson/BsonContextType;
            invokevirtual org.bson.BsonContextType.ordinal:()I
            iconst_4
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic org.bson.BsonContextType.SCOPE_DOCUMENT:Lorg/bson/BsonContextType;
            invokevirtual org.bson.BsonContextType.ordinal:()I
            iconst_5
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic org.bson.BsonContextType.TOP_LEVEL:Lorg/bson/BsonContextType;
            invokevirtual org.bson.BsonContextType.ordinal:()I
            iconst_1
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            dup
            putstatic org.bson.AbstractBsonReader.$SWITCH_TABLE$org$bson$BsonContextType:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
}
SourceFile: "AbstractBsonReader.java"
NestMembers:
  org.bson.AbstractBsonReader$Context  org.bson.AbstractBsonReader$Mark  org.bson.AbstractBsonReader$State
InnerClasses:
  protected abstract Context = org.bson.AbstractBsonReader$Context of org.bson.AbstractBsonReader
  protected Mark = org.bson.AbstractBsonReader$Mark of org.bson.AbstractBsonReader
  public final State = org.bson.AbstractBsonReader$State of org.bson.AbstractBsonReader