public abstract class org.bson.AbstractBsonWriter implements org.bson.BsonWriter, java.io.Closeable
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.bson.AbstractBsonWriter
  super_class: java.lang.Object
{
  private final org.bson.BsonWriterSettings settings;
    descriptor: Lorg/bson/BsonWriterSettings;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Stack<org.bson.FieldNameValidator> fieldNameValidatorStack;
    descriptor: Ljava/util/Stack;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Stack<Lorg/bson/FieldNameValidator;>;

  private org.bson.AbstractBsonWriter$State state;
    descriptor: Lorg/bson/AbstractBsonWriter$State;
    flags: (0x0002) ACC_PRIVATE

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

  private int serializationDepth;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

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

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

  protected void <init>(org.bson.BsonWriterSettings);
    descriptor: (Lorg/bson/BsonWriterSettings;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonWriterSettings settings
         0: .line 50
            aload 0 /* this */
            aload 1 /* settings */
            new org.bson.NoOpFieldNameValidator
            dup
            invokespecial org.bson.NoOpFieldNameValidator.<init>:()V
            invokespecial org.bson.AbstractBsonWriter.<init>:(Lorg/bson/BsonWriterSettings;Lorg/bson/FieldNameValidator;)V
         1: .line 51
            return
        end local 1 // org.bson.BsonWriterSettings settings
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/bson/AbstractBsonWriter;
            0    2     1  settings  Lorg/bson/BsonWriterSettings;
    MethodParameters:
          Name  Flags
      settings  final

  protected void <init>(org.bson.BsonWriterSettings, org.bson.FieldNameValidator);
    descriptor: (Lorg/bson/BsonWriterSettings;Lorg/bson/FieldNameValidator;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonWriterSettings settings
        start local 2 // org.bson.FieldNameValidator validator
         0: .line 59
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 38
            aload 0 /* this */
            new java.util.Stack
            dup
            invokespecial java.util.Stack.<init>:()V
            putfield org.bson.AbstractBsonWriter.fieldNameValidatorStack:Ljava/util/Stack;
         2: .line 60
            aload 2 /* validator */
            ifnonnull 4
         3: .line 61
            new java.lang.IllegalArgumentException
            dup
            ldc "Validator can not be null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 63
      StackMap locals: org.bson.AbstractBsonWriter org.bson.BsonWriterSettings org.bson.FieldNameValidator
      StackMap stack:
            aload 0 /* this */
            aload 1 /* settings */
            putfield org.bson.AbstractBsonWriter.settings:Lorg/bson/BsonWriterSettings;
         5: .line 64
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.fieldNameValidatorStack:Ljava/util/Stack;
            aload 2 /* validator */
            invokevirtual java.util.Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 65
            aload 0 /* this */
            getstatic org.bson.AbstractBsonWriter$State.INITIAL:Lorg/bson/AbstractBsonWriter$State;
            putfield org.bson.AbstractBsonWriter.state:Lorg/bson/AbstractBsonWriter$State;
         7: .line 66
            return
        end local 2 // org.bson.FieldNameValidator validator
        end local 1 // org.bson.BsonWriterSettings settings
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lorg/bson/AbstractBsonWriter;
            0    8     1   settings  Lorg/bson/BsonWriterSettings;
            0    8     2  validator  Lorg/bson/FieldNameValidator;
    MethodParameters:
           Name  Flags
      settings   final
      validator  final

  protected java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonWriter this
         0: .line 74
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.context:Lorg/bson/AbstractBsonWriter$Context;
            getfield org.bson.AbstractBsonWriter$Context.name:Ljava/lang/String;
            areturn
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/AbstractBsonWriter;

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

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

  protected org.bson.AbstractBsonWriter$State getState();
    descriptor: ()Lorg/bson/AbstractBsonWriter$State;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonWriter this
         0: .line 101
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.state:Lorg/bson/AbstractBsonWriter$State;
            areturn
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/AbstractBsonWriter;

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

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

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

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

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

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

  protected abstract void doWriteBinaryData(org.bson.BsonBinary);
    descriptor: (Lorg/bson/BsonBinary;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected abstract void doWriteBoolean(boolean);
    descriptor: (Z)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected abstract void doWriteDateTime(long);
    descriptor: (J)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected abstract void doWriteDBPointer(org.bson.BsonDbPointer);
    descriptor: (Lorg/bson/BsonDbPointer;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected abstract void doWriteDouble(double);
    descriptor: (D)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected abstract void doWriteInt32(int);
    descriptor: (I)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected abstract void doWriteInt64(long);
    descriptor: (J)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected abstract void doWriteDecimal128(org.bson.types.Decimal128);
    descriptor: (Lorg/bson/types/Decimal128;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected abstract void doWriteJavaScript(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected abstract void doWriteJavaScriptWithScope(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

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

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

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

  protected abstract void doWriteObjectId(org.bson.types.ObjectId);
    descriptor: (Lorg/bson/types/ObjectId;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected abstract void doWriteRegularExpression(org.bson.BsonRegularExpression);
    descriptor: (Lorg/bson/BsonRegularExpression;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected abstract void doWriteString(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected abstract void doWriteSymbol(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  protected abstract void doWriteTimestamp(org.bson.BsonTimestamp);
    descriptor: (Lorg/bson/BsonTimestamp;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

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

  public void writeStartDocument(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.AbstractBsonWriter this
        start local 1 // java.lang.String name
         0: .line 271
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         1: .line 272
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeStartDocument:()V
         2: .line 273
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonWriter;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void writeStartDocument();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonWriter this
         0: .line 277
            aload 0 /* this */
            ldc "writeStartDocument"
            iconst_4
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.INITIAL:Lorg/bson/AbstractBsonWriter$State;
            aastore
            dup
            iconst_1
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            dup
            iconst_2
            getstatic org.bson.AbstractBsonWriter$State.SCOPE_DOCUMENT:Lorg/bson/AbstractBsonWriter$State;
            aastore
            dup
            iconst_3
            getstatic org.bson.AbstractBsonWriter$State.DONE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         1: .line 278
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.context:Lorg/bson/AbstractBsonWriter$Context;
            ifnull 3
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.context:Lorg/bson/AbstractBsonWriter$Context;
            getfield org.bson.AbstractBsonWriter$Context.name:Ljava/lang/String;
            ifnull 3
         2: .line 279
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.fieldNameValidatorStack:Ljava/util/Stack;
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.fieldNameValidatorStack:Ljava/util/Stack;
            invokevirtual java.util.Stack.peek:()Ljava/lang/Object;
            checkcast org.bson.FieldNameValidator
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getName:()Ljava/lang/String;
            invokeinterface org.bson.FieldNameValidator.getValidatorForField:(Ljava/lang/String;)Lorg/bson/FieldNameValidator;
            invokevirtual java.util.Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 281
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.bson.AbstractBsonWriter.serializationDepth:I
            iconst_1
            iadd
            putfield org.bson.AbstractBsonWriter.serializationDepth:I
         4: .line 282
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.serializationDepth:I
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.settings:Lorg/bson/BsonWriterSettings;
            invokevirtual org.bson.BsonWriterSettings.getMaxSerializationDepth:()I
            if_icmple 6
         5: .line 283
            new org.bson.BsonSerializationException
            dup
            ldc "Maximum serialization depth exceeded (does the object being serialized have a circular reference?)."
            invokespecial org.bson.BsonSerializationException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 287
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.doWriteStartDocument:()V
         7: .line 288
            aload 0 /* this */
            getstatic org.bson.AbstractBsonWriter$State.NAME:Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         8: .line 289
            return
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/bson/AbstractBsonWriter;

  public void writeEndDocument();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=1
        start local 0 // org.bson.AbstractBsonWriter this
         0: .line 293
            aload 0 /* this */
            ldc "writeEndDocument"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.NAME:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         1: .line 295
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getContext:()Lorg/bson/AbstractBsonWriter$Context;
            invokevirtual org.bson.AbstractBsonWriter$Context.getContextType:()Lorg/bson/BsonContextType;
            astore 1 /* contextType */
        start local 1 // org.bson.BsonContextType contextType
         2: .line 296
            aload 1 /* contextType */
            getstatic org.bson.BsonContextType.DOCUMENT:Lorg/bson/BsonContextType;
            if_acmpeq 4
            aload 1 /* contextType */
            getstatic org.bson.BsonContextType.SCOPE_DOCUMENT:Lorg/bson/BsonContextType;
            if_acmpeq 4
         3: .line 297
            aload 0 /* this */
            ldc "WriteEndDocument"
            aload 1 /* contextType */
            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
            invokevirtual org.bson.AbstractBsonWriter.throwInvalidContextType:(Ljava/lang/String;Lorg/bson/BsonContextType;[Lorg/bson/BsonContextType;)V
         4: .line 300
      StackMap locals: org.bson.BsonContextType
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.context:Lorg/bson/AbstractBsonWriter$Context;
            invokevirtual org.bson.AbstractBsonWriter$Context.getParentContext:()Lorg/bson/AbstractBsonWriter$Context;
            ifnull 6
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.context:Lorg/bson/AbstractBsonWriter$Context;
            invokevirtual org.bson.AbstractBsonWriter$Context.getParentContext:()Lorg/bson/AbstractBsonWriter$Context;
            getfield org.bson.AbstractBsonWriter$Context.name:Ljava/lang/String;
            ifnull 6
         5: .line 301
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.fieldNameValidatorStack:Ljava/util/Stack;
            invokevirtual java.util.Stack.pop:()Ljava/lang/Object;
            pop
         6: .line 303
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.bson.AbstractBsonWriter.serializationDepth:I
            iconst_1
            isub
            putfield org.bson.AbstractBsonWriter.serializationDepth:I
         7: .line 305
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.doWriteEndDocument:()V
         8: .line 307
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getContext:()Lorg/bson/AbstractBsonWriter$Context;
            ifnull 9
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getContext:()Lorg/bson/AbstractBsonWriter$Context;
            invokevirtual org.bson.AbstractBsonWriter$Context.getContextType:()Lorg/bson/BsonContextType;
            getstatic org.bson.BsonContextType.TOP_LEVEL:Lorg/bson/BsonContextType;
            if_acmpne 11
         9: .line 308
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.bson.AbstractBsonWriter$State.DONE:Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
        10: .line 309
            goto 12
        11: .line 310
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
        12: .line 312
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.bson.BsonContextType contextType
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   13     0         this  Lorg/bson/AbstractBsonWriter;
            2   13     1  contextType  Lorg/bson/BsonContextType;

  public void writeStartArray(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.AbstractBsonWriter this
        start local 1 // java.lang.String name
         0: .line 316
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         1: .line 317
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeStartArray:()V
         2: .line 318
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonWriter;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void writeStartArray();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonWriter this
         0: .line 322
            aload 0 /* this */
            ldc "writeStartArray"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         1: .line 324
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.context:Lorg/bson/AbstractBsonWriter$Context;
            ifnull 3
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.context:Lorg/bson/AbstractBsonWriter$Context;
            getfield org.bson.AbstractBsonWriter$Context.name:Ljava/lang/String;
            ifnull 3
         2: .line 325
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.fieldNameValidatorStack:Ljava/util/Stack;
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.fieldNameValidatorStack:Ljava/util/Stack;
            invokevirtual java.util.Stack.peek:()Ljava/lang/Object;
            checkcast org.bson.FieldNameValidator
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getName:()Ljava/lang/String;
            invokeinterface org.bson.FieldNameValidator.getValidatorForField:(Ljava/lang/String;)Lorg/bson/FieldNameValidator;
            invokevirtual java.util.Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 327
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.bson.AbstractBsonWriter.serializationDepth:I
            iconst_1
            iadd
            putfield org.bson.AbstractBsonWriter.serializationDepth:I
         4: .line 328
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.serializationDepth:I
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.settings:Lorg/bson/BsonWriterSettings;
            invokevirtual org.bson.BsonWriterSettings.getMaxSerializationDepth:()I
            if_icmple 6
         5: .line 329
            new org.bson.BsonSerializationException
            dup
            ldc "Maximum serialization depth exceeded (does the object being serialized have a circular reference?)."
            invokespecial org.bson.BsonSerializationException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 333
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.doWriteStartArray:()V
         7: .line 334
            aload 0 /* this */
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         8: .line 335
            return
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/bson/AbstractBsonWriter;

  public void writeEndArray();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonWriter this
         0: .line 339
            aload 0 /* this */
            ldc "writeEndArray"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         1: .line 341
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getContext:()Lorg/bson/AbstractBsonWriter$Context;
            invokevirtual org.bson.AbstractBsonWriter$Context.getContextType:()Lorg/bson/BsonContextType;
            getstatic org.bson.BsonContextType.ARRAY:Lorg/bson/BsonContextType;
            if_acmpeq 3
         2: .line 342
            aload 0 /* this */
            ldc "WriteEndArray"
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getContext:()Lorg/bson/AbstractBsonWriter$Context;
            invokevirtual org.bson.AbstractBsonWriter$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.AbstractBsonWriter.throwInvalidContextType:(Ljava/lang/String;Lorg/bson/BsonContextType;[Lorg/bson/BsonContextType;)V
         3: .line 345
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.context:Lorg/bson/AbstractBsonWriter$Context;
            invokevirtual org.bson.AbstractBsonWriter$Context.getParentContext:()Lorg/bson/AbstractBsonWriter$Context;
            ifnull 5
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.context:Lorg/bson/AbstractBsonWriter$Context;
            invokevirtual org.bson.AbstractBsonWriter$Context.getParentContext:()Lorg/bson/AbstractBsonWriter$Context;
            getfield org.bson.AbstractBsonWriter$Context.name:Ljava/lang/String;
            ifnull 5
         4: .line 346
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.fieldNameValidatorStack:Ljava/util/Stack;
            invokevirtual java.util.Stack.pop:()Ljava/lang/Object;
            pop
         5: .line 348
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.bson.AbstractBsonWriter.serializationDepth:I
            iconst_1
            isub
            putfield org.bson.AbstractBsonWriter.serializationDepth:I
         6: .line 350
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.doWriteEndArray:()V
         7: .line 351
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         8: .line 352
            return
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/bson/AbstractBsonWriter;

  public void writeBinaryData(java.lang.String, org.bson.BsonBinary);
    descriptor: (Ljava/lang/String;Lorg/bson/BsonBinary;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // org.bson.BsonBinary binary
         0: .line 356
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 357
            ldc "value"
            aload 2 /* binary */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 358
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         3: .line 359
            aload 0 /* this */
            aload 2 /* binary */
            invokevirtual org.bson.AbstractBsonWriter.writeBinaryData:(Lorg/bson/BsonBinary;)V
         4: .line 360
            return
        end local 2 // org.bson.BsonBinary binary
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/bson/AbstractBsonWriter;
            0    5     1    name  Ljava/lang/String;
            0    5     2  binary  Lorg/bson/BsonBinary;
    MethodParameters:
        Name  Flags
      name    final
      binary  final

  public void writeBinaryData(org.bson.BsonBinary);
    descriptor: (Lorg/bson/BsonBinary;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonBinary binary
         0: .line 364
            ldc "value"
            aload 1 /* binary */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 365
            aload 0 /* this */
            ldc "writeBinaryData"
            iconst_2
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            dup
            iconst_1
            getstatic org.bson.AbstractBsonWriter$State.INITIAL:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         2: .line 366
            aload 0 /* this */
            aload 1 /* binary */
            invokevirtual org.bson.AbstractBsonWriter.doWriteBinaryData:(Lorg/bson/BsonBinary;)V
         3: .line 367
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         4: .line 368
            return
        end local 1 // org.bson.BsonBinary binary
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/bson/AbstractBsonWriter;
            0    5     1  binary  Lorg/bson/BsonBinary;
    MethodParameters:
        Name  Flags
      binary  final

  public void writeBoolean(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // boolean value
         0: .line 372
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         1: .line 373
            aload 0 /* this */
            iload 2 /* value */
            invokevirtual org.bson.AbstractBsonWriter.writeBoolean:(Z)V
         2: .line 374
            return
        end local 2 // boolean value
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/bson/AbstractBsonWriter;
            0    3     1   name  Ljava/lang/String;
            0    3     2  value  Z
    MethodParameters:
       Name  Flags
      name   final
      value  final

  public void writeBoolean(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // boolean value
         0: .line 378
            aload 0 /* this */
            ldc "writeBoolean"
            iconst_2
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            dup
            iconst_1
            getstatic org.bson.AbstractBsonWriter$State.INITIAL:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         1: .line 379
            aload 0 /* this */
            iload 1 /* value */
            invokevirtual org.bson.AbstractBsonWriter.doWriteBoolean:(Z)V
         2: .line 380
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         3: .line 381
            return
        end local 1 // boolean value
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/bson/AbstractBsonWriter;
            0    4     1  value  Z
    MethodParameters:
       Name  Flags
      value  final

  public void writeDateTime(java.lang.String, long);
    descriptor: (Ljava/lang/String;J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // long value
         0: .line 385
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         1: .line 386
            aload 0 /* this */
            lload 2 /* value */
            invokevirtual org.bson.AbstractBsonWriter.writeDateTime:(J)V
         2: .line 387
            return
        end local 2 // long value
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/bson/AbstractBsonWriter;
            0    3     1   name  Ljava/lang/String;
            0    3     2  value  J
    MethodParameters:
       Name  Flags
      name   final
      value  final

  public void writeDateTime(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // long value
         0: .line 391
            aload 0 /* this */
            ldc "writeDateTime"
            iconst_2
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            dup
            iconst_1
            getstatic org.bson.AbstractBsonWriter$State.INITIAL:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         1: .line 392
            aload 0 /* this */
            lload 1 /* value */
            invokevirtual org.bson.AbstractBsonWriter.doWriteDateTime:(J)V
         2: .line 393
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         3: .line 394
            return
        end local 1 // long value
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/bson/AbstractBsonWriter;
            0    4     1  value  J
    MethodParameters:
       Name  Flags
      value  final

  public void writeDBPointer(java.lang.String, org.bson.BsonDbPointer);
    descriptor: (Ljava/lang/String;Lorg/bson/BsonDbPointer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // org.bson.BsonDbPointer value
         0: .line 398
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 399
            ldc "value"
            aload 2 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 400
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         3: .line 401
            aload 0 /* this */
            aload 2 /* value */
            invokevirtual org.bson.AbstractBsonWriter.writeDBPointer:(Lorg/bson/BsonDbPointer;)V
         4: .line 402
            return
        end local 2 // org.bson.BsonDbPointer value
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/bson/AbstractBsonWriter;
            0    5     1   name  Ljava/lang/String;
            0    5     2  value  Lorg/bson/BsonDbPointer;
    MethodParameters:
       Name  Flags
      name   final
      value  final

  public void writeDBPointer(org.bson.BsonDbPointer);
    descriptor: (Lorg/bson/BsonDbPointer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonDbPointer value
         0: .line 406
            ldc "value"
            aload 1 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 407
            aload 0 /* this */
            ldc "writeDBPointer"
            iconst_2
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            dup
            iconst_1
            getstatic org.bson.AbstractBsonWriter$State.INITIAL:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         2: .line 408
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.AbstractBsonWriter.doWriteDBPointer:(Lorg/bson/BsonDbPointer;)V
         3: .line 409
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         4: .line 410
            return
        end local 1 // org.bson.BsonDbPointer value
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/bson/AbstractBsonWriter;
            0    5     1  value  Lorg/bson/BsonDbPointer;
    MethodParameters:
       Name  Flags
      value  final

  public void writeDouble(java.lang.String, double);
    descriptor: (Ljava/lang/String;D)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // double value
         0: .line 414
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         1: .line 415
            aload 0 /* this */
            dload 2 /* value */
            invokevirtual org.bson.AbstractBsonWriter.writeDouble:(D)V
         2: .line 416
            return
        end local 2 // double value
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/bson/AbstractBsonWriter;
            0    3     1   name  Ljava/lang/String;
            0    3     2  value  D
    MethodParameters:
       Name  Flags
      name   final
      value  final

  public void writeDouble(double);
    descriptor: (D)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // double value
         0: .line 420
            aload 0 /* this */
            ldc "writeDBPointer"
            iconst_2
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            dup
            iconst_1
            getstatic org.bson.AbstractBsonWriter$State.INITIAL:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         1: .line 421
            aload 0 /* this */
            dload 1 /* value */
            invokevirtual org.bson.AbstractBsonWriter.doWriteDouble:(D)V
         2: .line 422
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         3: .line 423
            return
        end local 1 // double value
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/bson/AbstractBsonWriter;
            0    4     1  value  D
    MethodParameters:
       Name  Flags
      value  final

  public void writeInt32(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // int value
         0: .line 427
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         1: .line 428
            aload 0 /* this */
            iload 2 /* value */
            invokevirtual org.bson.AbstractBsonWriter.writeInt32:(I)V
         2: .line 429
            return
        end local 2 // int value
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/bson/AbstractBsonWriter;
            0    3     1   name  Ljava/lang/String;
            0    3     2  value  I
    MethodParameters:
       Name  Flags
      name   final
      value  final

  public void writeInt32(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // int value
         0: .line 433
            aload 0 /* this */
            ldc "writeInt32"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         1: .line 434
            aload 0 /* this */
            iload 1 /* value */
            invokevirtual org.bson.AbstractBsonWriter.doWriteInt32:(I)V
         2: .line 435
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         3: .line 436
            return
        end local 1 // int value
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/bson/AbstractBsonWriter;
            0    4     1  value  I
    MethodParameters:
       Name  Flags
      value  final

  public void writeInt64(java.lang.String, long);
    descriptor: (Ljava/lang/String;J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // long value
         0: .line 440
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         1: .line 441
            aload 0 /* this */
            lload 2 /* value */
            invokevirtual org.bson.AbstractBsonWriter.writeInt64:(J)V
         2: .line 442
            return
        end local 2 // long value
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/bson/AbstractBsonWriter;
            0    3     1   name  Ljava/lang/String;
            0    3     2  value  J
    MethodParameters:
       Name  Flags
      name   final
      value  final

  public void writeInt64(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // long value
         0: .line 446
            aload 0 /* this */
            ldc "writeInt64"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         1: .line 447
            aload 0 /* this */
            lload 1 /* value */
            invokevirtual org.bson.AbstractBsonWriter.doWriteInt64:(J)V
         2: .line 448
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         3: .line 449
            return
        end local 1 // long value
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/bson/AbstractBsonWriter;
            0    4     1  value  J
    MethodParameters:
       Name  Flags
      value  final

  public void writeDecimal128(org.bson.types.Decimal128);
    descriptor: (Lorg/bson/types/Decimal128;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.types.Decimal128 value
         0: .line 453
            ldc "value"
            aload 1 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 454
            aload 0 /* this */
            ldc "writeInt64"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         2: .line 455
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.AbstractBsonWriter.doWriteDecimal128:(Lorg/bson/types/Decimal128;)V
         3: .line 456
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         4: .line 457
            return
        end local 1 // org.bson.types.Decimal128 value
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/bson/AbstractBsonWriter;
            0    5     1  value  Lorg/bson/types/Decimal128;
    MethodParameters:
       Name  Flags
      value  final

  public void writeDecimal128(java.lang.String, org.bson.types.Decimal128);
    descriptor: (Ljava/lang/String;Lorg/bson/types/Decimal128;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // org.bson.types.Decimal128 value
         0: .line 461
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 462
            ldc "value"
            aload 2 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 463
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         3: .line 464
            aload 0 /* this */
            aload 2 /* value */
            invokevirtual org.bson.AbstractBsonWriter.writeDecimal128:(Lorg/bson/types/Decimal128;)V
         4: .line 465
            return
        end local 2 // org.bson.types.Decimal128 value
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/bson/AbstractBsonWriter;
            0    5     1   name  Ljava/lang/String;
            0    5     2  value  Lorg/bson/types/Decimal128;
    MethodParameters:
       Name  Flags
      name   final
      value  final

  public void writeJavaScript(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // java.lang.String code
         0: .line 469
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 470
            ldc "value"
            aload 2 /* code */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 471
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         3: .line 472
            aload 0 /* this */
            aload 2 /* code */
            invokevirtual org.bson.AbstractBsonWriter.writeJavaScript:(Ljava/lang/String;)V
         4: .line 473
            return
        end local 2 // java.lang.String code
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bson/AbstractBsonWriter;
            0    5     1  name  Ljava/lang/String;
            0    5     2  code  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final
      code  final

  public void writeJavaScript(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String code
         0: .line 477
            ldc "value"
            aload 1 /* code */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 478
            aload 0 /* this */
            ldc "writeJavaScript"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         2: .line 479
            aload 0 /* this */
            aload 1 /* code */
            invokevirtual org.bson.AbstractBsonWriter.doWriteJavaScript:(Ljava/lang/String;)V
         3: .line 480
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         4: .line 481
            return
        end local 1 // java.lang.String code
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bson/AbstractBsonWriter;
            0    5     1  code  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      code  final

  public void writeJavaScriptWithScope(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // java.lang.String code
         0: .line 485
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 486
            ldc "value"
            aload 2 /* code */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 487
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         3: .line 488
            aload 0 /* this */
            aload 2 /* code */
            invokevirtual org.bson.AbstractBsonWriter.writeJavaScriptWithScope:(Ljava/lang/String;)V
         4: .line 489
            return
        end local 2 // java.lang.String code
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bson/AbstractBsonWriter;
            0    5     1  name  Ljava/lang/String;
            0    5     2  code  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final
      code  final

  public void writeJavaScriptWithScope(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String code
         0: .line 493
            ldc "value"
            aload 1 /* code */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 494
            aload 0 /* this */
            ldc "writeJavaScriptWithScope"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         2: .line 495
            aload 0 /* this */
            aload 1 /* code */
            invokevirtual org.bson.AbstractBsonWriter.doWriteJavaScriptWithScope:(Ljava/lang/String;)V
         3: .line 496
            aload 0 /* this */
            getstatic org.bson.AbstractBsonWriter$State.SCOPE_DOCUMENT:Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         4: .line 497
            return
        end local 1 // java.lang.String code
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bson/AbstractBsonWriter;
            0    5     1  code  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      code  final

  public void writeMaxKey(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.AbstractBsonWriter this
        start local 1 // java.lang.String name
         0: .line 501
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         1: .line 502
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeMaxKey:()V
         2: .line 503
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonWriter;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void writeMaxKey();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonWriter this
         0: .line 507
            aload 0 /* this */
            ldc "writeMaxKey"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         1: .line 508
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.doWriteMaxKey:()V
         2: .line 509
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         3: .line 510
            return
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bson/AbstractBsonWriter;

  public void writeMinKey(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.AbstractBsonWriter this
        start local 1 // java.lang.String name
         0: .line 514
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         1: .line 515
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeMinKey:()V
         2: .line 516
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonWriter;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void writeMinKey();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonWriter this
         0: .line 520
            aload 0 /* this */
            ldc "writeMinKey"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         1: .line 521
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.doWriteMinKey:()V
         2: .line 522
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         3: .line 523
            return
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bson/AbstractBsonWriter;

  public void writeName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
         0: .line 527
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 528
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.state:Lorg/bson/AbstractBsonWriter$State;
            getstatic org.bson.AbstractBsonWriter$State.NAME:Lorg/bson/AbstractBsonWriter$State;
            if_acmpeq 3
         2: .line 529
            aload 0 /* this */
            ldc "WriteName"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.NAME:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.throwInvalidState:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         3: .line 531
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.fieldNameValidatorStack:Ljava/util/Stack;
            invokevirtual java.util.Stack.peek:()Ljava/lang/Object;
            checkcast org.bson.FieldNameValidator
            aload 1 /* name */
            invokeinterface org.bson.FieldNameValidator.validate:(Ljava/lang/String;)Z
            ifne 5
         4: .line 532
            new java.lang.IllegalArgumentException
            dup
            ldc "Invalid BSON field name %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* name */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 534
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.doWriteName:(Ljava/lang/String;)V
         6: .line 535
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.context:Lorg/bson/AbstractBsonWriter$Context;
            aload 1 /* name */
            putfield org.bson.AbstractBsonWriter$Context.name:Ljava/lang/String;
         7: .line 536
            aload 0 /* this */
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            putfield org.bson.AbstractBsonWriter.state:Lorg/bson/AbstractBsonWriter$State;
         8: .line 537
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/bson/AbstractBsonWriter;
            0    9     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  protected void doWriteName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
         0: .line 546
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/AbstractBsonWriter;
            0    1     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void writeNull(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.AbstractBsonWriter this
        start local 1 // java.lang.String name
         0: .line 550
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         1: .line 551
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeNull:()V
         2: .line 552
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonWriter;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void writeNull();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonWriter this
         0: .line 556
            aload 0 /* this */
            ldc "writeNull"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         1: .line 557
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.doWriteNull:()V
         2: .line 558
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         3: .line 559
            return
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bson/AbstractBsonWriter;

  public void writeObjectId(java.lang.String, org.bson.types.ObjectId);
    descriptor: (Ljava/lang/String;Lorg/bson/types/ObjectId;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // org.bson.types.ObjectId objectId
         0: .line 563
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 564
            ldc "value"
            aload 2 /* objectId */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 565
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         3: .line 566
            aload 0 /* this */
            aload 2 /* objectId */
            invokevirtual org.bson.AbstractBsonWriter.writeObjectId:(Lorg/bson/types/ObjectId;)V
         4: .line 567
            return
        end local 2 // org.bson.types.ObjectId objectId
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/bson/AbstractBsonWriter;
            0    5     1      name  Ljava/lang/String;
            0    5     2  objectId  Lorg/bson/types/ObjectId;
    MethodParameters:
          Name  Flags
      name      final
      objectId  final

  public void writeObjectId(org.bson.types.ObjectId);
    descriptor: (Lorg/bson/types/ObjectId;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.types.ObjectId objectId
         0: .line 571
            ldc "value"
            aload 1 /* objectId */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 572
            aload 0 /* this */
            ldc "writeObjectId"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         2: .line 573
            aload 0 /* this */
            aload 1 /* objectId */
            invokevirtual org.bson.AbstractBsonWriter.doWriteObjectId:(Lorg/bson/types/ObjectId;)V
         3: .line 574
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         4: .line 575
            return
        end local 1 // org.bson.types.ObjectId objectId
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/bson/AbstractBsonWriter;
            0    5     1  objectId  Lorg/bson/types/ObjectId;
    MethodParameters:
          Name  Flags
      objectId  final

  public void writeRegularExpression(java.lang.String, org.bson.BsonRegularExpression);
    descriptor: (Ljava/lang/String;Lorg/bson/BsonRegularExpression;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // org.bson.BsonRegularExpression regularExpression
         0: .line 579
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 580
            ldc "value"
            aload 2 /* regularExpression */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 581
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         3: .line 582
            aload 0 /* this */
            aload 2 /* regularExpression */
            invokevirtual org.bson.AbstractBsonWriter.writeRegularExpression:(Lorg/bson/BsonRegularExpression;)V
         4: .line 583
            return
        end local 2 // org.bson.BsonRegularExpression regularExpression
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    5     0               this  Lorg/bson/AbstractBsonWriter;
            0    5     1               name  Ljava/lang/String;
            0    5     2  regularExpression  Lorg/bson/BsonRegularExpression;
    MethodParameters:
                   Name  Flags
      name               final
      regularExpression  final

  public void writeRegularExpression(org.bson.BsonRegularExpression);
    descriptor: (Lorg/bson/BsonRegularExpression;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonRegularExpression regularExpression
         0: .line 587
            ldc "value"
            aload 1 /* regularExpression */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 588
            aload 0 /* this */
            ldc "writeRegularExpression"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         2: .line 589
            aload 0 /* this */
            aload 1 /* regularExpression */
            invokevirtual org.bson.AbstractBsonWriter.doWriteRegularExpression:(Lorg/bson/BsonRegularExpression;)V
         3: .line 590
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         4: .line 591
            return
        end local 1 // org.bson.BsonRegularExpression regularExpression
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    5     0               this  Lorg/bson/AbstractBsonWriter;
            0    5     1  regularExpression  Lorg/bson/BsonRegularExpression;
    MethodParameters:
                   Name  Flags
      regularExpression  final

  public void writeString(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // java.lang.String value
         0: .line 595
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 596
            ldc "value"
            aload 2 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 597
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         3: .line 598
            aload 0 /* this */
            aload 2 /* value */
            invokevirtual org.bson.AbstractBsonWriter.writeString:(Ljava/lang/String;)V
         4: .line 599
            return
        end local 2 // java.lang.String value
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/bson/AbstractBsonWriter;
            0    5     1   name  Ljava/lang/String;
            0    5     2  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      name   final
      value  final

  public void writeString(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String value
         0: .line 603
            ldc "value"
            aload 1 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 604
            aload 0 /* this */
            ldc "writeString"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         2: .line 605
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.AbstractBsonWriter.doWriteString:(Ljava/lang/String;)V
         3: .line 606
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         4: .line 608
            return
        end local 1 // java.lang.String value
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/bson/AbstractBsonWriter;
            0    5     1  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      value  final

  public void writeSymbol(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // java.lang.String value
         0: .line 612
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 613
            ldc "value"
            aload 2 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 614
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         3: .line 615
            aload 0 /* this */
            aload 2 /* value */
            invokevirtual org.bson.AbstractBsonWriter.writeSymbol:(Ljava/lang/String;)V
         4: .line 616
            return
        end local 2 // java.lang.String value
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/bson/AbstractBsonWriter;
            0    5     1   name  Ljava/lang/String;
            0    5     2  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      name   final
      value  final

  public void writeSymbol(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String value
         0: .line 620
            ldc "value"
            aload 1 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 621
            aload 0 /* this */
            ldc "writeSymbol"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         2: .line 622
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.AbstractBsonWriter.doWriteSymbol:(Ljava/lang/String;)V
         3: .line 623
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         4: .line 624
            return
        end local 1 // java.lang.String value
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/bson/AbstractBsonWriter;
            0    5     1  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      value  final

  public void writeTimestamp(java.lang.String, org.bson.BsonTimestamp);
    descriptor: (Ljava/lang/String;Lorg/bson/BsonTimestamp;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String name
        start local 2 // org.bson.BsonTimestamp value
         0: .line 628
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 629
            ldc "value"
            aload 2 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 630
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         3: .line 631
            aload 0 /* this */
            aload 2 /* value */
            invokevirtual org.bson.AbstractBsonWriter.writeTimestamp:(Lorg/bson/BsonTimestamp;)V
         4: .line 632
            return
        end local 2 // org.bson.BsonTimestamp value
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/bson/AbstractBsonWriter;
            0    5     1   name  Ljava/lang/String;
            0    5     2  value  Lorg/bson/BsonTimestamp;
    MethodParameters:
       Name  Flags
      name   final
      value  final

  public void writeTimestamp(org.bson.BsonTimestamp);
    descriptor: (Lorg/bson/BsonTimestamp;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonTimestamp value
         0: .line 636
            ldc "value"
            aload 1 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 637
            aload 0 /* this */
            ldc "writeTimestamp"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         2: .line 638
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.AbstractBsonWriter.doWriteTimestamp:(Lorg/bson/BsonTimestamp;)V
         3: .line 639
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         4: .line 640
            return
        end local 1 // org.bson.BsonTimestamp value
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/bson/AbstractBsonWriter;
            0    5     1  value  Lorg/bson/BsonTimestamp;
    MethodParameters:
       Name  Flags
      value  final

  public void writeUndefined(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.AbstractBsonWriter this
        start local 1 // java.lang.String name
         0: .line 644
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         1: .line 645
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeUndefined:()V
         2: .line 646
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonWriter;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void writeUndefined();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonWriter this
         0: .line 650
            aload 0 /* this */
            ldc "writeUndefined"
            iconst_1
            anewarray org.bson.AbstractBsonWriter$State
            dup
            iconst_0
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            aastore
            invokevirtual org.bson.AbstractBsonWriter.checkPreconditions:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         1: .line 651
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.doWriteUndefined:()V
         2: .line 652
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getNextState:()Lorg/bson/AbstractBsonWriter$State;
            invokevirtual org.bson.AbstractBsonWriter.setState:(Lorg/bson/AbstractBsonWriter$State;)V
         3: .line 653
            return
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bson/AbstractBsonWriter;

  protected org.bson.AbstractBsonWriter$State getNextState();
    descriptor: ()Lorg/bson/AbstractBsonWriter$State;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonWriter this
         0: .line 662
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getContext:()Lorg/bson/AbstractBsonWriter$Context;
            invokevirtual org.bson.AbstractBsonWriter$Context.getContextType:()Lorg/bson/BsonContextType;
            getstatic org.bson.BsonContextType.ARRAY:Lorg/bson/BsonContextType;
            if_acmpne 2
         1: .line 663
            getstatic org.bson.AbstractBsonWriter$State.VALUE:Lorg/bson/AbstractBsonWriter$State;
            areturn
         2: .line 665
      StackMap locals:
      StackMap stack:
            getstatic org.bson.AbstractBsonWriter$State.NAME:Lorg/bson/AbstractBsonWriter$State;
            areturn
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/AbstractBsonWriter;

  protected boolean checkState(org.bson.AbstractBsonWriter$State[]);
    descriptor: ([Lorg/bson/AbstractBsonWriter$State;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.AbstractBsonWriter$State[] validStates
         0: .line 676
            aload 1 /* validStates */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 5
      StackMap locals: org.bson.AbstractBsonWriter org.bson.AbstractBsonWriter$State[] top int int org.bson.AbstractBsonWriter$State[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* cur */
        start local 2 // org.bson.AbstractBsonWriter$State cur
         2: .line 677
            aload 2 /* cur */
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.getState:()Lorg/bson/AbstractBsonWriter$State;
            if_acmpne 4
         3: .line 678
            iconst_1
            ireturn
        end local 2 // org.bson.AbstractBsonWriter$State cur
         4: .line 676
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         5: iload 3
            iload 4
            if_icmplt 1
         6: .line 681
            iconst_0
            ireturn
        end local 1 // org.bson.AbstractBsonWriter$State[] validStates
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Lorg/bson/AbstractBsonWriter;
            0    7     1  validStates  [Lorg/bson/AbstractBsonWriter$State;
            2    4     2          cur  Lorg/bson/AbstractBsonWriter$State;
    MethodParameters:
             Name  Flags
      validStates  final

  protected void checkPreconditions(java.lang.String, org.bson.AbstractBsonWriter$State[]);
    descriptor: (Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
    flags: (0x0084) ACC_PROTECTED, ACC_VARARGS
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String methodName
        start local 2 // org.bson.AbstractBsonWriter$State[] validStates
         0: .line 694
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.isClosed:()Z
            ifeq 2
         1: .line 695
            new java.lang.IllegalStateException
            dup
            ldc "BsonWriter is closed"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 698
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* validStates */
            invokevirtual org.bson.AbstractBsonWriter.checkState:([Lorg/bson/AbstractBsonWriter$State;)Z
            ifne 4
         3: .line 699
            aload 0 /* this */
            aload 1 /* methodName */
            aload 2 /* validStates */
            invokevirtual org.bson.AbstractBsonWriter.throwInvalidState:(Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
         4: .line 701
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.bson.AbstractBsonWriter$State[] validStates
        end local 1 // java.lang.String methodName
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lorg/bson/AbstractBsonWriter;
            0    5     1   methodName  Ljava/lang/String;
            0    5     2  validStates  [Lorg/bson/AbstractBsonWriter$State;
    MethodParameters:
             Name  Flags
      methodName   final
      validStates  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=7, locals=5, args_size=4
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String methodName
        start local 2 // org.bson.BsonContextType actualContextType
        start local 3 // org.bson.BsonContextType[] validContextTypes
         0: .line 713
            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 714
            new org.bson.BsonInvalidOperationException
            dup
            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 716
            aload 1 /* methodName */
            aastore
            dup
            iconst_1
            aload 4 /* validContextTypesString */
            aastore
            dup
            iconst_2
            aload 2 /* actualContextType */
            aastore
         3: .line 714
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.bson.BsonInvalidOperationException.<init>:(Ljava/lang/String;)V
            athrow
        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.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    4     0                     this  Lorg/bson/AbstractBsonWriter;
            0    4     1               methodName  Ljava/lang/String;
            0    4     2        actualContextType  Lorg/bson/BsonContextType;
            0    4     3        validContextTypes  [Lorg/bson/BsonContextType;
            1    4     4  validContextTypesString  Ljava/lang/String;
    MethodParameters:
                   Name  Flags
      methodName         final
      actualContextType  final
      validContextTypes  final

  protected void throwInvalidState(java.lang.String, org.bson.AbstractBsonWriter$State[]);
    descriptor: (Ljava/lang/String;[Lorg/bson/AbstractBsonWriter$State;)V
    flags: (0x0084) ACC_PROTECTED, ACC_VARARGS
    Code:
      stack=7, locals=5, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.lang.String methodName
        start local 2 // org.bson.AbstractBsonWriter$State[] validStates
         0: .line 727
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.state:Lorg/bson/AbstractBsonWriter$State;
            getstatic org.bson.AbstractBsonWriter$State.INITIAL:Lorg/bson/AbstractBsonWriter$State;
            if_acmpeq 1
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.state:Lorg/bson/AbstractBsonWriter$State;
            getstatic org.bson.AbstractBsonWriter$State.SCOPE_DOCUMENT:Lorg/bson/AbstractBsonWriter$State;
            if_acmpeq 1
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.state:Lorg/bson/AbstractBsonWriter$State;
            getstatic org.bson.AbstractBsonWriter$State.DONE:Lorg/bson/AbstractBsonWriter$State;
            if_acmpne 11
         1: .line 728
      StackMap locals:
      StackMap stack:
            aload 1 /* methodName */
            ldc "end"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 11
            aload 1 /* methodName */
            ldc "writeName"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 11
         2: .line 730
            aload 1 /* methodName */
            iconst_5
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* typeName */
        start local 3 // java.lang.String typeName
         3: .line 731
            aload 3 /* typeName */
            ldc "start"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 5
         4: .line 732
            aload 3 /* typeName */
            iconst_5
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* typeName */
         5: .line 734
      StackMap locals: java.lang.String
      StackMap stack:
            ldc "A"
            astore 4 /* article */
        start local 4 // java.lang.String article
         6: .line 735
            iconst_5
            anewarray java.lang.Character
            dup
            iconst_0
            bipush 65
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            aastore
            dup
            iconst_1
            bipush 69
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            aastore
            dup
            iconst_2
            bipush 73
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            aastore
            dup
            iconst_3
            bipush 79
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            aastore
            dup
            iconst_4
            bipush 85
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            aload 3 /* typeName */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 736
            ldc "An"
            astore 4 /* article */
         8: .line 738
      StackMap locals: java.lang.String
      StackMap stack:
            new org.bson.BsonInvalidOperationException
            dup
            ldc "%s %s value cannot be written to the root level of a BSON document."
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         9: .line 739
            aload 4 /* article */
            aastore
            dup
            iconst_1
            aload 3 /* typeName */
            aastore
        10: .line 738
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.bson.BsonInvalidOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.lang.String article
        end local 3 // java.lang.String typeName
        11: .line 743
      StackMap locals:
      StackMap stack:
            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
        12: .line 744
            new org.bson.BsonInvalidOperationException
            dup
            ldc "%s can only be called when State is %s, not when State is %s"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        13: .line 745
            aload 1 /* methodName */
            aastore
            dup
            iconst_1
            aload 3 /* validStatesString */
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield org.bson.AbstractBsonWriter.state:Lorg/bson/AbstractBsonWriter$State;
            aastore
        14: .line 744
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.bson.BsonInvalidOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.String validStatesString
        end local 2 // org.bson.AbstractBsonWriter$State[] validStates
        end local 1 // java.lang.String methodName
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   15     0               this  Lorg/bson/AbstractBsonWriter;
            0   15     1         methodName  Ljava/lang/String;
            0   15     2        validStates  [Lorg/bson/AbstractBsonWriter$State;
            3   11     3           typeName  Ljava/lang/String;
            6   11     4            article  Ljava/lang/String;
           12   15     3  validStatesString  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      methodName   final
      validStates  final

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

  public void pipe(org.bson.BsonReader);
    descriptor: (Lorg/bson/BsonReader;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonReader reader
         0: .line 755
            ldc "reader"
            aload 1 /* reader */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 756
            aload 0 /* this */
            aload 1 /* reader */
            aconst_null
            invokevirtual org.bson.AbstractBsonWriter.pipeDocument:(Lorg/bson/BsonReader;Ljava/util/List;)V
         2: .line 757
            return
        end local 1 // org.bson.BsonReader reader
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/bson/AbstractBsonWriter;
            0    3     1  reader  Lorg/bson/BsonReader;
    MethodParameters:
        Name  Flags
      reader  final

  public void pipe(org.bson.BsonReader, java.util.List<org.bson.BsonElement>);
    descriptor: (Lorg/bson/BsonReader;Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonReader reader
        start local 2 // java.util.List extraElements
         0: .line 767
            ldc "reader"
            aload 1 /* reader */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 768
            ldc "extraElements"
            aload 2 /* extraElements */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 769
            aload 0 /* this */
            aload 1 /* reader */
            aload 2 /* extraElements */
            invokevirtual org.bson.AbstractBsonWriter.pipeDocument:(Lorg/bson/BsonReader;Ljava/util/List;)V
         3: .line 770
            return
        end local 2 // java.util.List extraElements
        end local 1 // org.bson.BsonReader reader
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lorg/bson/AbstractBsonWriter;
            0    4     1         reader  Lorg/bson/BsonReader;
            0    4     2  extraElements  Ljava/util/List<Lorg/bson/BsonElement;>;
    Signature: (Lorg/bson/BsonReader;Ljava/util/List<Lorg/bson/BsonElement;>;)V
    MethodParameters:
               Name  Flags
      reader         final
      extraElements  final

  protected void pipeExtraElements(java.util.List<org.bson.BsonElement>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // java.util.List extraElements
         0: .line 778
            ldc "extraElements"
            aload 1 /* extraElements */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 779
            aload 1 /* extraElements */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: org.bson.AbstractBsonWriter java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bson.BsonElement
            astore 2 /* cur */
        start local 2 // org.bson.BsonElement cur
         3: .line 780
            aload 0 /* this */
            aload 2 /* cur */
            invokevirtual org.bson.BsonElement.getName:()Ljava/lang/String;
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         4: .line 781
            aload 0 /* this */
            aload 2 /* cur */
            invokevirtual org.bson.BsonElement.getValue:()Lorg/bson/BsonValue;
            invokevirtual org.bson.AbstractBsonWriter.pipeValue:(Lorg/bson/BsonValue;)V
        end local 2 // org.bson.BsonElement cur
         5: .line 779
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 783
            return
        end local 1 // java.util.List extraElements
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0           this  Lorg/bson/AbstractBsonWriter;
            0    7     1  extraElements  Ljava/util/List<Lorg/bson/BsonElement;>;
            3    5     2            cur  Lorg/bson/BsonElement;
    Signature: (Ljava/util/List<Lorg/bson/BsonElement;>;)V
    MethodParameters:
               Name  Flags
      extraElements  final

  protected boolean abortPipe();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.AbstractBsonWriter this
         0: .line 793
            iconst_0
            ireturn
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/AbstractBsonWriter;

  private void pipeDocument(org.bson.BsonReader, java.util.List<org.bson.BsonElement>);
    descriptor: (Lorg/bson/BsonReader;Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonReader reader
        start local 2 // java.util.List extraElements
         0: .line 797
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readStartDocument:()V
         1: .line 798
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeStartDocument:()V
         2: .line 799
            goto 7
         3: .line 800
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readName:()Ljava/lang/String;
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         4: .line 801
            aload 0 /* this */
            aload 1 /* reader */
            invokevirtual org.bson.AbstractBsonWriter.pipeValue:(Lorg/bson/BsonReader;)V
         5: .line 802
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.abortPipe:()Z
            ifeq 7
         6: .line 803
            return
         7: .line 799
      StackMap locals:
      StackMap stack:
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readBsonType:()Lorg/bson/BsonType;
            getstatic org.bson.BsonType.END_OF_DOCUMENT:Lorg/bson/BsonType;
            if_acmpne 3
         8: .line 806
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readEndDocument:()V
         9: .line 807
            aload 2 /* extraElements */
            ifnull 11
        10: .line 808
            aload 0 /* this */
            aload 2 /* extraElements */
            invokevirtual org.bson.AbstractBsonWriter.pipeExtraElements:(Ljava/util/List;)V
        11: .line 810
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeEndDocument:()V
        12: .line 811
            return
        end local 2 // java.util.List extraElements
        end local 1 // org.bson.BsonReader reader
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   13     0           this  Lorg/bson/AbstractBsonWriter;
            0   13     1         reader  Lorg/bson/BsonReader;
            0   13     2  extraElements  Ljava/util/List<Lorg/bson/BsonElement;>;
    Signature: (Lorg/bson/BsonReader;Ljava/util/List<Lorg/bson/BsonElement;>;)V
    MethodParameters:
               Name  Flags
      reader         final
      extraElements  final

  private void pipeJavascriptWithScope(org.bson.BsonReader);
    descriptor: (Lorg/bson/BsonReader;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonReader reader
         0: .line 814
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readJavaScriptWithScope:()Ljava/lang/String;
            invokevirtual org.bson.AbstractBsonWriter.writeJavaScriptWithScope:(Ljava/lang/String;)V
         1: .line 815
            aload 0 /* this */
            aload 1 /* reader */
            aconst_null
            invokevirtual org.bson.AbstractBsonWriter.pipeDocument:(Lorg/bson/BsonReader;Ljava/util/List;)V
         2: .line 816
            return
        end local 1 // org.bson.BsonReader reader
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/bson/AbstractBsonWriter;
            0    3     1  reader  Lorg/bson/BsonReader;
    MethodParameters:
        Name  Flags
      reader  final

  private void pipeValue(org.bson.BsonReader);
    descriptor: (Lorg/bson/BsonReader;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonReader reader
         0: .line 819
            invokestatic org.bson.AbstractBsonWriter.$SWITCH_TABLE$org$bson$BsonType:()[I
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.getCurrentBsonType:()Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            iaload
            tableswitch { // 2 - 22
                    2: 5
                    3: 7
                    4: 1
                    5: 3
                    6: 9
                    7: 11
                    8: 14
                    9: 16
                   10: 18
                   11: 20
                   12: 23
                   13: 42
                   14: 25
                   15: 27
                   16: 29
                   17: 31
                   18: 33
                   19: 35
                   20: 37
                   21: 39
                   22: 44
              default: 47
          }
         1: .line 821
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            aconst_null
            invokevirtual org.bson.AbstractBsonWriter.pipeDocument:(Lorg/bson/BsonReader;Ljava/util/List;)V
         2: .line 822
            goto 48
         3: .line 824
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokevirtual org.bson.AbstractBsonWriter.pipeArray:(Lorg/bson/BsonReader;)V
         4: .line 825
            goto 48
         5: .line 827
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readDouble:()D
            invokevirtual org.bson.AbstractBsonWriter.writeDouble:(D)V
         6: .line 828
            goto 48
         7: .line 830
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readString:()Ljava/lang/String;
            invokevirtual org.bson.AbstractBsonWriter.writeString:(Ljava/lang/String;)V
         8: .line 831
            goto 48
         9: .line 833
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readBinaryData:()Lorg/bson/BsonBinary;
            invokevirtual org.bson.AbstractBsonWriter.writeBinaryData:(Lorg/bson/BsonBinary;)V
        10: .line 834
            goto 48
        11: .line 836
      StackMap locals:
      StackMap stack:
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readUndefined:()V
        12: .line 837
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeUndefined:()V
        13: .line 838
            goto 48
        14: .line 840
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readObjectId:()Lorg/bson/types/ObjectId;
            invokevirtual org.bson.AbstractBsonWriter.writeObjectId:(Lorg/bson/types/ObjectId;)V
        15: .line 841
            goto 48
        16: .line 843
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readBoolean:()Z
            invokevirtual org.bson.AbstractBsonWriter.writeBoolean:(Z)V
        17: .line 844
            goto 48
        18: .line 846
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readDateTime:()J
            invokevirtual org.bson.AbstractBsonWriter.writeDateTime:(J)V
        19: .line 847
            goto 48
        20: .line 849
      StackMap locals:
      StackMap stack:
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readNull:()V
        21: .line 850
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeNull:()V
        22: .line 851
            goto 48
        23: .line 853
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readRegularExpression:()Lorg/bson/BsonRegularExpression;
            invokevirtual org.bson.AbstractBsonWriter.writeRegularExpression:(Lorg/bson/BsonRegularExpression;)V
        24: .line 854
            goto 48
        25: .line 856
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readJavaScript:()Ljava/lang/String;
            invokevirtual org.bson.AbstractBsonWriter.writeJavaScript:(Ljava/lang/String;)V
        26: .line 857
            goto 48
        27: .line 859
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readSymbol:()Ljava/lang/String;
            invokevirtual org.bson.AbstractBsonWriter.writeSymbol:(Ljava/lang/String;)V
        28: .line 860
            goto 48
        29: .line 862
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokevirtual org.bson.AbstractBsonWriter.pipeJavascriptWithScope:(Lorg/bson/BsonReader;)V
        30: .line 863
            goto 48
        31: .line 865
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readInt32:()I
            invokevirtual org.bson.AbstractBsonWriter.writeInt32:(I)V
        32: .line 866
            goto 48
        33: .line 868
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readTimestamp:()Lorg/bson/BsonTimestamp;
            invokevirtual org.bson.AbstractBsonWriter.writeTimestamp:(Lorg/bson/BsonTimestamp;)V
        34: .line 869
            goto 48
        35: .line 871
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readInt64:()J
            invokevirtual org.bson.AbstractBsonWriter.writeInt64:(J)V
        36: .line 872
            goto 48
        37: .line 874
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readDecimal128:()Lorg/bson/types/Decimal128;
            invokevirtual org.bson.AbstractBsonWriter.writeDecimal128:(Lorg/bson/types/Decimal128;)V
        38: .line 875
            goto 48
        39: .line 877
      StackMap locals:
      StackMap stack:
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readMinKey:()V
        40: .line 878
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeMinKey:()V
        41: .line 879
            goto 48
        42: .line 881
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readDBPointer:()Lorg/bson/BsonDbPointer;
            invokevirtual org.bson.AbstractBsonWriter.writeDBPointer:(Lorg/bson/BsonDbPointer;)V
        43: .line 882
            goto 48
        44: .line 884
      StackMap locals:
      StackMap stack:
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readMaxKey:()V
        45: .line 885
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeMaxKey:()V
        46: .line 886
            goto 48
        47: .line 888
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "unhandled BSON type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.getCurrentBsonType:()Lorg/bson/BsonType;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        48: .line 890
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.bson.BsonReader reader
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   49     0    this  Lorg/bson/AbstractBsonWriter;
            0   49     1  reader  Lorg/bson/BsonReader;
    MethodParameters:
        Name  Flags
      reader  final

  private void pipeDocument(org.bson.BsonDocument);
    descriptor: (Lorg/bson/BsonDocument;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonDocument value
         0: .line 893
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeStartDocument:()V
         1: .line 894
            aload 1 /* value */
            invokevirtual org.bson.BsonDocument.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: org.bson.AbstractBsonWriter org.bson.BsonDocument top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 2 /* cur */
        start local 2 // java.util.Map$Entry cur
         3: .line 895
            aload 0 /* this */
            aload 2 /* cur */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual org.bson.AbstractBsonWriter.writeName:(Ljava/lang/String;)V
         4: .line 896
            aload 0 /* this */
            aload 2 /* cur */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast org.bson.BsonValue
            invokevirtual org.bson.AbstractBsonWriter.pipeValue:(Lorg/bson/BsonValue;)V
        end local 2 // java.util.Map$Entry cur
         5: .line 894
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 898
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeEndDocument:()V
         7: .line 899
            return
        end local 1 // org.bson.BsonDocument value
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lorg/bson/AbstractBsonWriter;
            0    8     1  value  Lorg/bson/BsonDocument;
            3    5     2    cur  Ljava/util/Map$Entry<Ljava/lang/String;Lorg/bson/BsonValue;>;
    MethodParameters:
       Name  Flags
      value  final

  private void pipeArray(org.bson.BsonReader);
    descriptor: (Lorg/bson/BsonReader;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonReader reader
         0: .line 902
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readStartArray:()V
         1: .line 903
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeStartArray:()V
         2: .line 904
            goto 6
         3: .line 905
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* reader */
            invokevirtual org.bson.AbstractBsonWriter.pipeValue:(Lorg/bson/BsonReader;)V
         4: .line 906
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.abortPipe:()Z
            ifeq 6
         5: .line 907
            return
         6: .line 904
      StackMap locals:
      StackMap stack:
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readBsonType:()Lorg/bson/BsonType;
            getstatic org.bson.BsonType.END_OF_DOCUMENT:Lorg/bson/BsonType;
            if_acmpne 3
         7: .line 910
            aload 1 /* reader */
            invokeinterface org.bson.BsonReader.readEndArray:()V
         8: .line 911
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeEndArray:()V
         9: .line 912
            return
        end local 1 // org.bson.BsonReader reader
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0    this  Lorg/bson/AbstractBsonWriter;
            0   10     1  reader  Lorg/bson/BsonReader;
    MethodParameters:
        Name  Flags
      reader  final

  private void pipeArray(org.bson.BsonArray);
    descriptor: (Lorg/bson/BsonArray;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonArray array
         0: .line 915
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeStartArray:()V
         1: .line 916
            aload 1 /* array */
            invokevirtual org.bson.BsonArray.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: org.bson.AbstractBsonWriter org.bson.BsonArray top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bson.BsonValue
            astore 2 /* cur */
        start local 2 // org.bson.BsonValue cur
         3: .line 917
            aload 0 /* this */
            aload 2 /* cur */
            invokevirtual org.bson.AbstractBsonWriter.pipeValue:(Lorg/bson/BsonValue;)V
        end local 2 // org.bson.BsonValue cur
         4: .line 916
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 919
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeEndArray:()V
         6: .line 920
            return
        end local 1 // org.bson.BsonArray array
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lorg/bson/AbstractBsonWriter;
            0    7     1  array  Lorg/bson/BsonArray;
            3    4     2    cur  Lorg/bson/BsonValue;
    MethodParameters:
       Name  Flags
      array  final

  private void pipeJavascriptWithScope(org.bson.BsonJavaScriptWithScope);
    descriptor: (Lorg/bson/BsonJavaScriptWithScope;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonJavaScriptWithScope javaScriptWithScope
         0: .line 923
            aload 0 /* this */
            aload 1 /* javaScriptWithScope */
            invokevirtual org.bson.BsonJavaScriptWithScope.getCode:()Ljava/lang/String;
            invokevirtual org.bson.AbstractBsonWriter.writeJavaScriptWithScope:(Ljava/lang/String;)V
         1: .line 924
            aload 0 /* this */
            aload 1 /* javaScriptWithScope */
            invokevirtual org.bson.BsonJavaScriptWithScope.getScope:()Lorg/bson/BsonDocument;
            invokevirtual org.bson.AbstractBsonWriter.pipeDocument:(Lorg/bson/BsonDocument;)V
         2: .line 925
            return
        end local 1 // org.bson.BsonJavaScriptWithScope javaScriptWithScope
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    3     0                 this  Lorg/bson/AbstractBsonWriter;
            0    3     1  javaScriptWithScope  Lorg/bson/BsonJavaScriptWithScope;
    MethodParameters:
                     Name  Flags
      javaScriptWithScope  final

  private void pipeValue(org.bson.BsonValue);
    descriptor: (Lorg/bson/BsonValue;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.bson.AbstractBsonWriter this
        start local 1 // org.bson.BsonValue value
         0: .line 928
            invokestatic org.bson.AbstractBsonWriter.$SWITCH_TABLE$org$bson$BsonType:()[I
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.getBsonType:()Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            iaload
            tableswitch { // 2 - 22
                    2: 5
                    3: 7
                    4: 1
                    5: 3
                    6: 9
                    7: 11
                    8: 13
                    9: 15
                   10: 17
                   11: 19
                   12: 21
                   13: 39
                   14: 23
                   15: 25
                   16: 27
                   17: 29
                   18: 31
                   19: 33
                   20: 35
                   21: 37
                   22: 41
              default: 43
          }
         1: .line 930
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asDocument:()Lorg/bson/BsonDocument;
            invokevirtual org.bson.AbstractBsonWriter.pipeDocument:(Lorg/bson/BsonDocument;)V
         2: .line 931
            goto 44
         3: .line 933
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asArray:()Lorg/bson/BsonArray;
            invokevirtual org.bson.AbstractBsonWriter.pipeArray:(Lorg/bson/BsonArray;)V
         4: .line 934
            goto 44
         5: .line 936
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asDouble:()Lorg/bson/BsonDouble;
            invokevirtual org.bson.BsonDouble.getValue:()D
            invokevirtual org.bson.AbstractBsonWriter.writeDouble:(D)V
         6: .line 937
            goto 44
         7: .line 939
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asString:()Lorg/bson/BsonString;
            invokevirtual org.bson.BsonString.getValue:()Ljava/lang/String;
            invokevirtual org.bson.AbstractBsonWriter.writeString:(Ljava/lang/String;)V
         8: .line 940
            goto 44
         9: .line 942
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asBinary:()Lorg/bson/BsonBinary;
            invokevirtual org.bson.AbstractBsonWriter.writeBinaryData:(Lorg/bson/BsonBinary;)V
        10: .line 943
            goto 44
        11: .line 945
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeUndefined:()V
        12: .line 946
            goto 44
        13: .line 948
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asObjectId:()Lorg/bson/BsonObjectId;
            invokevirtual org.bson.BsonObjectId.getValue:()Lorg/bson/types/ObjectId;
            invokevirtual org.bson.AbstractBsonWriter.writeObjectId:(Lorg/bson/types/ObjectId;)V
        14: .line 949
            goto 44
        15: .line 951
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asBoolean:()Lorg/bson/BsonBoolean;
            invokevirtual org.bson.BsonBoolean.getValue:()Z
            invokevirtual org.bson.AbstractBsonWriter.writeBoolean:(Z)V
        16: .line 952
            goto 44
        17: .line 954
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asDateTime:()Lorg/bson/BsonDateTime;
            invokevirtual org.bson.BsonDateTime.getValue:()J
            invokevirtual org.bson.AbstractBsonWriter.writeDateTime:(J)V
        18: .line 955
            goto 44
        19: .line 957
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeNull:()V
        20: .line 958
            goto 44
        21: .line 960
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asRegularExpression:()Lorg/bson/BsonRegularExpression;
            invokevirtual org.bson.AbstractBsonWriter.writeRegularExpression:(Lorg/bson/BsonRegularExpression;)V
        22: .line 961
            goto 44
        23: .line 963
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asJavaScript:()Lorg/bson/BsonJavaScript;
            invokevirtual org.bson.BsonJavaScript.getCode:()Ljava/lang/String;
            invokevirtual org.bson.AbstractBsonWriter.writeJavaScript:(Ljava/lang/String;)V
        24: .line 964
            goto 44
        25: .line 966
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asSymbol:()Lorg/bson/BsonSymbol;
            invokevirtual org.bson.BsonSymbol.getSymbol:()Ljava/lang/String;
            invokevirtual org.bson.AbstractBsonWriter.writeSymbol:(Ljava/lang/String;)V
        26: .line 967
            goto 44
        27: .line 969
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asJavaScriptWithScope:()Lorg/bson/BsonJavaScriptWithScope;
            invokevirtual org.bson.AbstractBsonWriter.pipeJavascriptWithScope:(Lorg/bson/BsonJavaScriptWithScope;)V
        28: .line 970
            goto 44
        29: .line 972
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asInt32:()Lorg/bson/BsonInt32;
            invokevirtual org.bson.BsonInt32.getValue:()I
            invokevirtual org.bson.AbstractBsonWriter.writeInt32:(I)V
        30: .line 973
            goto 44
        31: .line 975
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asTimestamp:()Lorg/bson/BsonTimestamp;
            invokevirtual org.bson.AbstractBsonWriter.writeTimestamp:(Lorg/bson/BsonTimestamp;)V
        32: .line 976
            goto 44
        33: .line 978
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asInt64:()Lorg/bson/BsonInt64;
            invokevirtual org.bson.BsonInt64.getValue:()J
            invokevirtual org.bson.AbstractBsonWriter.writeInt64:(J)V
        34: .line 979
            goto 44
        35: .line 981
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asDecimal128:()Lorg/bson/BsonDecimal128;
            invokevirtual org.bson.BsonDecimal128.getValue:()Lorg/bson/types/Decimal128;
            invokevirtual org.bson.AbstractBsonWriter.writeDecimal128:(Lorg/bson/types/Decimal128;)V
        36: .line 982
            goto 44
        37: .line 984
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeMinKey:()V
        38: .line 985
            goto 44
        39: .line 987
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.asDBPointer:()Lorg/bson/BsonDbPointer;
            invokevirtual org.bson.AbstractBsonWriter.writeDBPointer:(Lorg/bson/BsonDbPointer;)V
        40: .line 988
            goto 44
        41: .line 990
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.AbstractBsonWriter.writeMaxKey:()V
        42: .line 991
            goto 44
        43: .line 993
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "unhandled BSON type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* value */
            invokevirtual org.bson.BsonValue.getBsonType:()Lorg/bson/BsonType;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        44: .line 995
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.bson.BsonValue value
        end local 0 // org.bson.AbstractBsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   45     0   this  Lorg/bson/AbstractBsonWriter;
            0   45     1  value  Lorg/bson/BsonValue;
    MethodParameters:
       Name  Flags
      value  final

  static int[] $SWITCH_TABLE$org$bson$BsonType();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 36
            getstatic org.bson.AbstractBsonWriter.$SWITCH_TABLE$org$bson$BsonType:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.bson.BsonType.values:()[Lorg/bson/BsonType;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.bson.BsonType.ARRAY:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            iconst_5
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.bson.BsonType.BINARY:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 6
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic org.bson.BsonType.BOOLEAN:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 9
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic org.bson.BsonType.DATE_TIME:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 10
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic org.bson.BsonType.DB_POINTER:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 13
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            getstatic org.bson.BsonType.DECIMAL128:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 20
            iastore
        18: goto 20
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        19: pop
      StackMap locals:
      StackMap stack:
        20: aload 0
            getstatic org.bson.BsonType.DOCUMENT:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            iconst_4
            iastore
        21: goto 23
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        22: pop
      StackMap locals:
      StackMap stack:
        23: aload 0
            getstatic org.bson.BsonType.DOUBLE:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            iconst_2
            iastore
        24: goto 26
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        25: pop
      StackMap locals:
      StackMap stack:
        26: aload 0
            getstatic org.bson.BsonType.END_OF_DOCUMENT:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            iconst_1
            iastore
        27: goto 29
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        28: pop
      StackMap locals:
      StackMap stack:
        29: aload 0
            getstatic org.bson.BsonType.INT32:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 17
            iastore
        30: goto 32
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        31: pop
      StackMap locals:
      StackMap stack:
        32: aload 0
            getstatic org.bson.BsonType.INT64:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 19
            iastore
        33: goto 35
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        34: pop
      StackMap locals:
      StackMap stack:
        35: aload 0
            getstatic org.bson.BsonType.JAVASCRIPT:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 14
            iastore
        36: goto 38
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        37: pop
      StackMap locals:
      StackMap stack:
        38: aload 0
            getstatic org.bson.BsonType.JAVASCRIPT_WITH_SCOPE:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 16
            iastore
        39: goto 41
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        40: pop
      StackMap locals:
      StackMap stack:
        41: aload 0
            getstatic org.bson.BsonType.MAX_KEY:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 22
            iastore
        42: goto 44
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        43: pop
      StackMap locals:
      StackMap stack:
        44: aload 0
            getstatic org.bson.BsonType.MIN_KEY:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 21
            iastore
        45: goto 47
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        46: pop
      StackMap locals:
      StackMap stack:
        47: aload 0
            getstatic org.bson.BsonType.NULL:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 11
            iastore
        48: goto 50
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        49: pop
      StackMap locals:
      StackMap stack:
        50: aload 0
            getstatic org.bson.BsonType.OBJECT_ID:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 8
            iastore
        51: goto 53
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        52: pop
      StackMap locals:
      StackMap stack:
        53: aload 0
            getstatic org.bson.BsonType.REGULAR_EXPRESSION:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 12
            iastore
        54: goto 56
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        55: pop
      StackMap locals:
      StackMap stack:
        56: aload 0
            getstatic org.bson.BsonType.STRING:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            iconst_3
            iastore
        57: goto 59
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        58: pop
      StackMap locals:
      StackMap stack:
        59: aload 0
            getstatic org.bson.BsonType.SYMBOL:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 15
            iastore
        60: goto 62
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        61: pop
      StackMap locals:
      StackMap stack:
        62: aload 0
            getstatic org.bson.BsonType.TIMESTAMP:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 18
            iastore
        63: goto 65
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        64: pop
      StackMap locals:
      StackMap stack:
        65: aload 0
            getstatic org.bson.BsonType.UNDEFINED:Lorg/bson/BsonType;
            invokevirtual org.bson.BsonType.ordinal:()I
            bipush 7
            iastore
        66: goto 68
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        67: pop
      StackMap locals:
      StackMap stack:
        68: aload 0
            dup
            putstatic org.bson.AbstractBsonWriter.$SWITCH_TABLE$org$bson$BsonType:[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
          17    18      19  Class java.lang.NoSuchFieldError
          20    21      22  Class java.lang.NoSuchFieldError
          23    24      25  Class java.lang.NoSuchFieldError
          26    27      28  Class java.lang.NoSuchFieldError
          29    30      31  Class java.lang.NoSuchFieldError
          32    33      34  Class java.lang.NoSuchFieldError
          35    36      37  Class java.lang.NoSuchFieldError
          38    39      40  Class java.lang.NoSuchFieldError
          41    42      43  Class java.lang.NoSuchFieldError
          44    45      46  Class java.lang.NoSuchFieldError
          47    48      49  Class java.lang.NoSuchFieldError
          50    51      52  Class java.lang.NoSuchFieldError
          53    54      55  Class java.lang.NoSuchFieldError
          56    57      58  Class java.lang.NoSuchFieldError
          59    60      61  Class java.lang.NoSuchFieldError
          62    63      64  Class java.lang.NoSuchFieldError
          65    66      67  Class java.lang.NoSuchFieldError
}
SourceFile: "AbstractBsonWriter.java"
NestMembers:
  org.bson.AbstractBsonWriter$Context  org.bson.AbstractBsonWriter$Mark  org.bson.AbstractBsonWriter$State
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  public Context = org.bson.AbstractBsonWriter$Context of org.bson.AbstractBsonWriter
  protected Mark = org.bson.AbstractBsonWriter$Mark of org.bson.AbstractBsonWriter
  public final State = org.bson.AbstractBsonWriter$State of org.bson.AbstractBsonWriter