public class org.bson.BsonDocumentReader extends org.bson.AbstractBsonReader
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bson.BsonDocumentReader
  super_class: org.bson.AbstractBsonReader
{
  private org.bson.BsonValue currentValue;
    descriptor: Lorg/bson/BsonValue;
    flags: (0x0002) ACC_PRIVATE

  private org.bson.BsonDocumentReader$Mark mark;
    descriptor: Lorg/bson/BsonDocumentReader$Mark;
    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

  public void <init>(org.bson.BsonDocument);
    descriptor: (Lorg/bson/BsonDocument;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // org.bson.BsonDocumentReader this
        start local 1 // org.bson.BsonDocument document
         0: .line 46
            aload 0 /* this */
            invokespecial org.bson.AbstractBsonReader.<init>:()V
         1: .line 47
            aload 0 /* this */
            new org.bson.BsonDocumentReader$Context
            dup
            aload 0 /* this */
            aconst_null
            getstatic org.bson.BsonContextType.TOP_LEVEL:Lorg/bson/BsonContextType;
            aload 1 /* document */
            invokespecial org.bson.BsonDocumentReader$Context.<init>:(Lorg/bson/BsonDocumentReader;Lorg/bson/BsonDocumentReader$Context;Lorg/bson/BsonContextType;Lorg/bson/BsonDocument;)V
            invokevirtual org.bson.BsonDocumentReader.setContext:(Lorg/bson/AbstractBsonReader$Context;)V
         2: .line 48
            aload 0 /* this */
            aload 1 /* document */
            putfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
         3: .line 49
            return
        end local 1 // org.bson.BsonDocument document
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lorg/bson/BsonDocumentReader;
            0    4     1  document  Lorg/bson/BsonDocument;
    MethodParameters:
          Name  Flags
      document  final

  protected org.bson.BsonBinary doReadBinaryData();
    descriptor: ()Lorg/bson/BsonBinary;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 53
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asBinary:()Lorg/bson/BsonBinary;
            areturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected byte doPeekBinarySubType();
    descriptor: ()B
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 58
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asBinary:()Lorg/bson/BsonBinary;
            invokevirtual org.bson.BsonBinary.getType:()B
            ireturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected int doPeekBinarySize();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 63
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asBinary:()Lorg/bson/BsonBinary;
            invokevirtual org.bson.BsonBinary.getData:()[B
            arraylength
            ireturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected boolean doReadBoolean();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 68
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asBoolean:()Lorg/bson/BsonBoolean;
            invokevirtual org.bson.BsonBoolean.getValue:()Z
            ireturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected long doReadDateTime();
    descriptor: ()J
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 73
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asDateTime:()Lorg/bson/BsonDateTime;
            invokevirtual org.bson.BsonDateTime.getValue:()J
            lreturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected double doReadDouble();
    descriptor: ()D
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 78
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asDouble:()Lorg/bson/BsonDouble;
            invokevirtual org.bson.BsonDouble.getValue:()D
            dreturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected void doReadEndArray();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 83
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.BsonDocumentReader.getContext:()Lorg/bson/BsonDocumentReader$Context;
            invokevirtual org.bson.BsonDocumentReader$Context.getParentContext:()Lorg/bson/AbstractBsonReader$Context;
            invokevirtual org.bson.BsonDocumentReader.setContext:(Lorg/bson/AbstractBsonReader$Context;)V
         1: .line 84
            return
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bson/BsonDocumentReader;

  protected void doReadEndDocument();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 88
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.BsonDocumentReader.getContext:()Lorg/bson/BsonDocumentReader$Context;
            invokevirtual org.bson.BsonDocumentReader$Context.getParentContext:()Lorg/bson/AbstractBsonReader$Context;
            invokevirtual org.bson.BsonDocumentReader.setContext:(Lorg/bson/AbstractBsonReader$Context;)V
         1: .line 89
            invokestatic org.bson.BsonDocumentReader.$SWITCH_TABLE$org$bson$BsonContextType:()[I
            aload 0 /* this */
            invokevirtual org.bson.BsonDocumentReader.getContext:()Lorg/bson/BsonDocumentReader$Context;
            invokevirtual org.bson.BsonDocumentReader$Context.getContextType:()Lorg/bson/BsonContextType;
            invokevirtual org.bson.BsonContextType.ordinal:()I
            iaload
            tableswitch { // 1 - 3
                    1: 4
                    2: 2
                    3: 2
              default: 6
          }
         2: .line 92
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.TYPE:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.BsonDocumentReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         3: .line 93
            goto 7
         4: .line 95
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.DONE:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.BsonDocumentReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         5: .line 96
            goto 7
         6: .line 98
      StackMap locals:
      StackMap stack:
            new org.bson.BSONException
            dup
            ldc "Unexpected ContextType."
            invokespecial org.bson.BSONException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 100
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/bson/BsonDocumentReader;

  protected int doReadInt32();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 104
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asInt32:()Lorg/bson/BsonInt32;
            invokevirtual org.bson.BsonInt32.getValue:()I
            ireturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected long doReadInt64();
    descriptor: ()J
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 109
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asInt64:()Lorg/bson/BsonInt64;
            invokevirtual org.bson.BsonInt64.getValue:()J
            lreturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  public org.bson.types.Decimal128 doReadDecimal128();
    descriptor: ()Lorg/bson/types/Decimal128;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 114
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asDecimal128:()Lorg/bson/BsonDecimal128;
            invokevirtual org.bson.BsonDecimal128.getValue:()Lorg/bson/types/Decimal128;
            areturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected java.lang.String doReadJavaScript();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 119
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asJavaScript:()Lorg/bson/BsonJavaScript;
            invokevirtual org.bson.BsonJavaScript.getCode:()Ljava/lang/String;
            areturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected java.lang.String doReadJavaScriptWithScope();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 124
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asJavaScriptWithScope:()Lorg/bson/BsonJavaScriptWithScope;
            invokevirtual org.bson.BsonJavaScriptWithScope.getCode:()Ljava/lang/String;
            areturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected void doReadMaxKey();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 129
            return
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected void doReadMinKey();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 133
            return
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected void doReadNull();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 137
            return
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected org.bson.types.ObjectId doReadObjectId();
    descriptor: ()Lorg/bson/types/ObjectId;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 141
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asObjectId:()Lorg/bson/BsonObjectId;
            invokevirtual org.bson.BsonObjectId.getValue:()Lorg/bson/types/ObjectId;
            areturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected org.bson.BsonRegularExpression doReadRegularExpression();
    descriptor: ()Lorg/bson/BsonRegularExpression;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 146
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asRegularExpression:()Lorg/bson/BsonRegularExpression;
            areturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected org.bson.BsonDbPointer doReadDBPointer();
    descriptor: ()Lorg/bson/BsonDbPointer;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 151
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asDBPointer:()Lorg/bson/BsonDbPointer;
            areturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected void doReadStartArray();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=2, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 156
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asArray:()Lorg/bson/BsonArray;
            astore 1 /* array */
        start local 1 // org.bson.BsonArray array
         1: .line 157
            aload 0 /* this */
            new org.bson.BsonDocumentReader$Context
            dup
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.BsonDocumentReader.getContext:()Lorg/bson/BsonDocumentReader$Context;
            getstatic org.bson.BsonContextType.ARRAY:Lorg/bson/BsonContextType;
            aload 1 /* array */
            invokespecial org.bson.BsonDocumentReader$Context.<init>:(Lorg/bson/BsonDocumentReader;Lorg/bson/BsonDocumentReader$Context;Lorg/bson/BsonContextType;Lorg/bson/BsonArray;)V
            invokevirtual org.bson.BsonDocumentReader.setContext:(Lorg/bson/AbstractBsonReader$Context;)V
         2: .line 158
            return
        end local 1 // org.bson.BsonArray array
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/bson/BsonDocumentReader;
            1    3     1  array  Lorg/bson/BsonArray;

  protected void doReadStartDocument();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=2, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 163
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.getBsonType:()Lorg/bson/BsonType;
            getstatic org.bson.BsonType.JAVASCRIPT_WITH_SCOPE:Lorg/bson/BsonType;
            if_acmpne 3
         1: .line 164
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asJavaScriptWithScope:()Lorg/bson/BsonJavaScriptWithScope;
            invokevirtual org.bson.BsonJavaScriptWithScope.getScope:()Lorg/bson/BsonDocument;
            astore 1 /* document */
        start local 1 // org.bson.BsonDocument document
         2: .line 165
            goto 4
        end local 1 // org.bson.BsonDocument document
         3: .line 166
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asDocument:()Lorg/bson/BsonDocument;
            astore 1 /* document */
        start local 1 // org.bson.BsonDocument document
         4: .line 168
      StackMap locals: org.bson.BsonDocument
      StackMap stack:
            aload 0 /* this */
            new org.bson.BsonDocumentReader$Context
            dup
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.BsonDocumentReader.getContext:()Lorg/bson/BsonDocumentReader$Context;
            getstatic org.bson.BsonContextType.DOCUMENT:Lorg/bson/BsonContextType;
            aload 1 /* document */
            invokespecial org.bson.BsonDocumentReader$Context.<init>:(Lorg/bson/BsonDocumentReader;Lorg/bson/BsonDocumentReader$Context;Lorg/bson/BsonContextType;Lorg/bson/BsonDocument;)V
            invokevirtual org.bson.BsonDocumentReader.setContext:(Lorg/bson/AbstractBsonReader$Context;)V
         5: .line 169
            return
        end local 1 // org.bson.BsonDocument document
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/bson/BsonDocumentReader;
            2    3     1  document  Lorg/bson/BsonDocument;
            4    6     1  document  Lorg/bson/BsonDocument;

  protected java.lang.String doReadString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 173
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asString:()Lorg/bson/BsonString;
            invokevirtual org.bson.BsonString.getValue:()Ljava/lang/String;
            areturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected java.lang.String doReadSymbol();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 178
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asSymbol:()Lorg/bson/BsonSymbol;
            invokevirtual org.bson.BsonSymbol.getSymbol:()Ljava/lang/String;
            areturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected org.bson.BsonTimestamp doReadTimestamp();
    descriptor: ()Lorg/bson/BsonTimestamp;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 183
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.asTimestamp:()Lorg/bson/BsonTimestamp;
            areturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected void doReadUndefined();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 188
            return
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected void doSkipName();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 192
            return
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  protected void doSkipValue();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 196
            return
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  public org.bson.BsonType readBsonType();
    descriptor: ()Lorg/bson/BsonType;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 200
            aload 0 /* this */
            invokevirtual org.bson.BsonDocumentReader.getState:()Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.INITIAL:Lorg/bson/AbstractBsonReader$State;
            if_acmpeq 1
            aload 0 /* this */
            invokevirtual org.bson.BsonDocumentReader.getState:()Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.SCOPE_DOCUMENT:Lorg/bson/AbstractBsonReader$State;
            if_acmpne 4
         1: .line 202
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.bson.BsonType.DOCUMENT:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonDocumentReader.setCurrentBsonType:(Lorg/bson/BsonType;)V
         2: .line 203
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.VALUE:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.BsonDocumentReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
         3: .line 204
            aload 0 /* this */
            invokevirtual org.bson.BsonDocumentReader.getCurrentBsonType:()Lorg/bson/BsonType;
            areturn
         4: .line 207
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.BsonDocumentReader.getState:()Lorg/bson/AbstractBsonReader$State;
            getstatic org.bson.AbstractBsonReader$State.TYPE:Lorg/bson/AbstractBsonReader$State;
            if_acmpeq 6
         5: .line 208
            aload 0 /* this */
            ldc "ReadBSONType"
            iconst_1
            anewarray org.bson.AbstractBsonReader$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonReader$State.TYPE:Lorg/bson/AbstractBsonReader$State;
            aastore
            invokevirtual org.bson.BsonDocumentReader.throwInvalidState:(Ljava/lang/String;[Lorg/bson/AbstractBsonReader$State;)V
         6: .line 211
      StackMap locals:
      StackMap stack:
            invokestatic org.bson.BsonDocumentReader.$SWITCH_TABLE$org$bson$BsonContextType:()[I
            aload 0 /* this */
            invokevirtual org.bson.BsonDocumentReader.getContext:()Lorg/bson/BsonDocumentReader$Context;
            invokevirtual org.bson.BsonDocumentReader$Context.getContextType:()Lorg/bson/BsonContextType;
            invokevirtual org.bson.BsonContextType.ordinal:()I
            iaload
            tableswitch { // 2 - 3
                    2: 13
                    3: 7
              default: 21
          }
         7: .line 213
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.BsonDocumentReader.getContext:()Lorg/bson/BsonDocumentReader$Context;
            invokevirtual org.bson.BsonDocumentReader$Context.getNextValue:()Lorg/bson/BsonValue;
            putfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
         8: .line 214
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            ifnonnull 11
         9: .line 215
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.END_OF_ARRAY:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.BsonDocumentReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
        10: .line 216
            getstatic org.bson.BsonType.END_OF_DOCUMENT:Lorg/bson/BsonType;
            areturn
        11: .line 218
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.VALUE:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.BsonDocumentReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
        12: .line 219
            goto 22
        13: .line 221
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.BsonDocumentReader.getContext:()Lorg/bson/BsonDocumentReader$Context;
            invokevirtual org.bson.BsonDocumentReader$Context.getNextElement:()Ljava/util/Map$Entry;
            astore 1 /* currentElement */
        start local 1 // java.util.Map$Entry currentElement
        14: .line 222
            aload 1 /* currentElement */
            ifnonnull 17
        15: .line 223
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.END_OF_DOCUMENT:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.BsonDocumentReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
        16: .line 224
            getstatic org.bson.BsonType.END_OF_DOCUMENT:Lorg/bson/BsonType;
            areturn
        17: .line 226
      StackMap locals: java.util.Map$Entry
      StackMap stack:
            aload 0 /* this */
            aload 1 /* currentElement */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual org.bson.BsonDocumentReader.setCurrentName:(Ljava/lang/String;)V
        18: .line 227
            aload 0 /* this */
            aload 1 /* currentElement */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast org.bson.BsonValue
            putfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
        19: .line 228
            aload 0 /* this */
            getstatic org.bson.AbstractBsonReader$State.NAME:Lorg/bson/AbstractBsonReader$State;
            invokevirtual org.bson.BsonDocumentReader.setState:(Lorg/bson/AbstractBsonReader$State;)V
        20: .line 229
            goto 22
        end local 1 // java.util.Map$Entry currentElement
        21: .line 231
      StackMap locals:
      StackMap stack:
            new org.bson.BSONException
            dup
            ldc "Invalid ContextType."
            invokespecial org.bson.BSONException.<init>:(Ljava/lang/String;)V
            athrow
        22: .line 234
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.currentValue:Lorg/bson/BsonValue;
            invokevirtual org.bson.BsonValue.getBsonType:()Lorg/bson/BsonType;
            invokevirtual org.bson.BsonDocumentReader.setCurrentBsonType:(Lorg/bson/BsonType;)V
        23: .line 235
            aload 0 /* this */
            invokevirtual org.bson.BsonDocumentReader.getCurrentBsonType:()Lorg/bson/BsonType;
            areturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   24     0            this  Lorg/bson/BsonDocumentReader;
           14   21     1  currentElement  Ljava/util/Map$Entry<Ljava/lang/String;Lorg/bson/BsonValue;>;

  public void mark();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 241
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.mark:Lorg/bson/BsonDocumentReader$Mark;
            ifnull 2
         1: .line 242
            new org.bson.BSONException
            dup
            ldc "A mark already exists; it needs to be reset before creating a new one"
            invokespecial org.bson.BSONException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 244
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.bson.BsonDocumentReader$Mark
            dup
            aload 0 /* this */
            invokespecial org.bson.BsonDocumentReader$Mark.<init>:(Lorg/bson/BsonDocumentReader;)V
            putfield org.bson.BsonDocumentReader.mark:Lorg/bson/BsonDocumentReader$Mark;
         3: .line 245
            return
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bson/BsonDocumentReader;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public org.bson.BsonReaderMark getMark();
    descriptor: ()Lorg/bson/BsonReaderMark;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 249
            new org.bson.BsonDocumentReader$Mark
            dup
            aload 0 /* this */
            invokespecial org.bson.BsonDocumentReader$Mark.<init>:(Lorg/bson/BsonDocumentReader;)V
            areturn
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/BsonDocumentReader;

  public void reset();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.BsonDocumentReader this
         0: .line 255
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.mark:Lorg/bson/BsonDocumentReader$Mark;
            ifnonnull 2
         1: .line 256
            new org.bson.BSONException
            dup
            ldc "trying to reset a mark before creating it"
            invokespecial org.bson.BSONException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 258
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.BsonDocumentReader.mark:Lorg/bson/BsonDocumentReader$Mark;
            invokevirtual org.bson.BsonDocumentReader$Mark.reset:()V
         3: .line 259
            aload 0 /* this */
            aconst_null
            putfield org.bson.BsonDocumentReader.mark:Lorg/bson/BsonDocumentReader$Mark;
         4: .line 260
            return
        end local 0 // org.bson.BsonDocumentReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bson/BsonDocumentReader;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

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

  protected org.bson.AbstractBsonReader$Context getContext();
    descriptor: ()Lorg/bson/AbstractBsonReader$Context;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual org.bson.BsonDocumentReader.getContext:()Lorg/bson/BsonDocumentReader$Context;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  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 36
            getstatic org.bson.BsonDocumentReader.$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.BsonDocumentReader.$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: "BsonDocumentReader.java"
NestMembers:
  org.bson.BsonDocumentReader$BsonDocumentMarkableIterator  org.bson.BsonDocumentReader$Context  org.bson.BsonDocumentReader$Mark
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  protected abstract Context = org.bson.AbstractBsonReader$Context of org.bson.AbstractBsonReader
  public final State = org.bson.AbstractBsonReader$State of org.bson.AbstractBsonReader
  private BsonDocumentMarkableIterator = org.bson.BsonDocumentReader$BsonDocumentMarkableIterator of org.bson.BsonDocumentReader
  protected Context = org.bson.BsonDocumentReader$Context of org.bson.BsonDocumentReader
  protected Mark = org.bson.BsonDocumentReader$Mark of org.bson.BsonDocumentReader