public final class org.bson.json.StrictCharacterStreamJsonWriter implements org.bson.json.StrictJsonWriter
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.bson.json.StrictCharacterStreamJsonWriter
  super_class: java.lang.Object
{
  private final java.io.Writer writer;
    descriptor: Ljava/io/Writer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.bson.json.StrictCharacterStreamJsonWriterSettings settings;
    descriptor: Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext context;
    descriptor: Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
    flags: (0x0002) ACC_PRIVATE

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

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

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

  public void <init>(java.io.Writer, org.bson.json.StrictCharacterStreamJsonWriterSettings);
    descriptor: (Ljava/io/Writer;Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.io.Writer writer
        start local 2 // org.bson.json.StrictCharacterStreamJsonWriterSettings settings
         0: .line 72
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 61
            aload 0 /* this */
            new org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext
            dup
            aconst_null
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$JsonContextType.TOP_LEVEL:Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;
            ldc ""
            invokespecial org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.<init>:(Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;Ljava/lang/String;)V
            putfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
         2: .line 62
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.INITIAL:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            putfield org.bson.json.StrictCharacterStreamJsonWriter.state:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
         3: .line 73
            aload 0 /* this */
            aload 1 /* writer */
            putfield org.bson.json.StrictCharacterStreamJsonWriter.writer:Ljava/io/Writer;
         4: .line 74
            aload 0 /* this */
            aload 2 /* settings */
            putfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
         5: .line 75
            return
        end local 2 // org.bson.json.StrictCharacterStreamJsonWriterSettings settings
        end local 1 // java.io.Writer writer
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0    6     1    writer  Ljava/io/Writer;
            0    6     2  settings  Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
    MethodParameters:
          Name  Flags
      writer    final
      settings  final

  public int getCurrentLength();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
         0: .line 83
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.curLength:I
            ireturn
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;

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

  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.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.lang.String name
         0: .line 94
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeName:(Ljava/lang/String;)V
         1: .line 95
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeStartArray:()V
         2: .line 96
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  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.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.lang.String name
        start local 2 // boolean value
         0: .line 100
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 101
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeName:(Ljava/lang/String;)V
         2: .line 102
            aload 0 /* this */
            iload 2 /* value */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeBoolean:(Z)V
         3: .line 103
            return
        end local 2 // boolean value
        end local 1 // java.lang.String name
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0    4     1   name  Ljava/lang/String;
            0    4     2  value  Z
    MethodParameters:
       Name  Flags
      name   final
      value  final

  public void writeNumber(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.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.lang.String name
        start local 2 // java.lang.String value
         0: .line 107
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 108
            ldc "value"
            aload 2 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 109
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeName:(Ljava/lang/String;)V
         3: .line 110
            aload 0 /* this */
            aload 2 /* value */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeNumber:(Ljava/lang/String;)V
         4: .line 111
            return
        end local 2 // java.lang.String value
        end local 1 // java.lang.String name
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            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, 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.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.lang.String name
        start local 2 // java.lang.String value
         0: .line 115
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 116
            ldc "value"
            aload 2 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 117
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeName:(Ljava/lang/String;)V
         3: .line 118
            aload 0 /* this */
            aload 2 /* value */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeString:(Ljava/lang/String;)V
         4: .line 119
            return
        end local 2 // java.lang.String value
        end local 1 // java.lang.String name
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0    5     1   name  Ljava/lang/String;
            0    5     2  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      name   final
      value  final

  public void writeRaw(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.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.lang.String name
        start local 2 // java.lang.String value
         0: .line 123
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 124
            ldc "value"
            aload 2 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 125
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeName:(Ljava/lang/String;)V
         3: .line 126
            aload 0 /* this */
            aload 2 /* value */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeRaw:(Ljava/lang/String;)V
         4: .line 127
            return
        end local 2 // java.lang.String value
        end local 1 // java.lang.String name
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0    5     1   name  Ljava/lang/String;
            0    5     2  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      name   final
      value  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.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.lang.String name
         0: .line 131
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeName:(Ljava/lang/String;)V
         1: .line 132
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeNull:()V
         2: .line 133
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void writeName(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.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.lang.String name
         0: .line 137
            ldc "name"
            aload 1 /* name */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 138
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.NAME:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.checkState:(Lorg/bson/json/StrictCharacterStreamJsonWriter$State;)V
         2: .line 140
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.hasElements:Z
            ifeq 4
         3: .line 141
            aload 0 /* this */
            ldc ","
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         4: .line 143
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.isIndent:()Z
            ifeq 8
         5: .line 144
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.getNewLineCharacters:()Ljava/lang/String;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         6: .line 145
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.indentation:Ljava/lang/String;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         7: .line 146
            goto 10
      StackMap locals:
      StackMap stack:
         8: aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.hasElements:Z
            ifeq 10
         9: .line 147
            aload 0 /* this */
            ldc " "
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
        10: .line 149
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeStringHelper:(Ljava/lang/String;)V
        11: .line 150
            aload 0 /* this */
            ldc ": "
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
        12: .line 152
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.VALUE:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            putfield org.bson.json.StrictCharacterStreamJsonWriter.state:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
        13: .line 153
            return
        end local 1 // java.lang.String name
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0   14     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  final

  public void writeBoolean(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
        start local 1 // boolean value
         0: .line 157
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.VALUE:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.checkState:(Lorg/bson/json/StrictCharacterStreamJsonWriter$State;)V
         1: .line 158
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.preWriteValue:()V
         2: .line 159
            aload 0 /* this */
            iload 1 /* value */
            ifeq 3
            ldc "true"
            goto 4
      StackMap locals:
      StackMap stack: org.bson.json.StrictCharacterStreamJsonWriter
         3: ldc "false"
      StackMap locals: org.bson.json.StrictCharacterStreamJsonWriter int
      StackMap stack: org.bson.json.StrictCharacterStreamJsonWriter java.lang.String
         4: invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         5: .line 160
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.setNextState:()V
         6: .line 161
            return
        end local 1 // boolean value
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0    7     1  value  Z
    MethodParameters:
       Name  Flags
      value  final

  public void writeNumber(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.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.lang.String value
         0: .line 165
            ldc "value"
            aload 1 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 166
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.VALUE:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.checkState:(Lorg/bson/json/StrictCharacterStreamJsonWriter$State;)V
         2: .line 167
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.preWriteValue:()V
         3: .line 168
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         4: .line 169
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.setNextState:()V
         5: .line 170
            return
        end local 1 // java.lang.String value
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0    6     1  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      value  final

  public void writeString(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.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.lang.String value
         0: .line 174
            ldc "value"
            aload 1 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 175
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.VALUE:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.checkState:(Lorg/bson/json/StrictCharacterStreamJsonWriter$State;)V
         2: .line 176
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.preWriteValue:()V
         3: .line 177
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.writeStringHelper:(Ljava/lang/String;)V
         4: .line 178
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.setNextState:()V
         5: .line 179
            return
        end local 1 // java.lang.String value
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0    6     1  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      value  final

  public void writeRaw(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.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.lang.String value
         0: .line 183
            ldc "value"
            aload 1 /* value */
            invokestatic org.bson.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 184
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.VALUE:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.checkState:(Lorg/bson/json/StrictCharacterStreamJsonWriter$State;)V
         2: .line 185
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.preWriteValue:()V
         3: .line 186
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         4: .line 187
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.setNextState:()V
         5: .line 188
            return
        end local 1 // java.lang.String value
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0    6     1  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      value  final

  public void writeNull();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
         0: .line 192
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.VALUE:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.checkState:(Lorg/bson/json/StrictCharacterStreamJsonWriter$State;)V
         1: .line 193
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.preWriteValue:()V
         2: .line 194
            aload 0 /* this */
            ldc "null"
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         3: .line 195
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.setNextState:()V
         4: .line 196
            return
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;

  public void writeStartObject();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
         0: .line 200
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.state:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.INITIAL:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            if_acmpeq 2
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.state:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.VALUE:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            if_acmpeq 2
         1: .line 201
            new org.bson.BsonInvalidOperationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid state "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.state:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.bson.BsonInvalidOperationException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 203
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.preWriteValue:()V
         3: .line 204
            aload 0 /* this */
            ldc "{"
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         4: .line 205
            aload 0 /* this */
            new org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext
            dup
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$JsonContextType.DOCUMENT:Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.getIndentCharacters:()Ljava/lang/String;
            invokespecial org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.<init>:(Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;Ljava/lang/String;)V
            putfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
         5: .line 206
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.NAME:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            putfield org.bson.json.StrictCharacterStreamJsonWriter.state:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
         6: .line 207
            return
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;

  public void writeStartArray();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
         0: .line 211
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.preWriteValue:()V
         1: .line 212
            aload 0 /* this */
            ldc "["
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         2: .line 213
            aload 0 /* this */
            new org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext
            dup
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$JsonContextType.ARRAY:Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.getIndentCharacters:()Ljava/lang/String;
            invokespecial org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.<init>:(Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;Ljava/lang/String;)V
            putfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
         3: .line 214
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.VALUE:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            putfield org.bson.json.StrictCharacterStreamJsonWriter.state:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
         4: .line 215
            return
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;

  public void writeEndObject();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
         0: .line 219
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.NAME:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.checkState:(Lorg/bson/json/StrictCharacterStreamJsonWriter$State;)V
         1: .line 221
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.isIndent:()Z
            ifeq 4
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.hasElements:Z
            ifeq 4
         2: .line 222
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.getNewLineCharacters:()Ljava/lang/String;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         3: .line 223
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.parentContext:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.indentation:Ljava/lang/String;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         4: .line 225
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "}"
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         5: .line 226
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.parentContext:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            putfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
         6: .line 227
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.contextType:Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$JsonContextType.TOP_LEVEL:Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;
            if_acmpne 9
         7: .line 228
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.DONE:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            putfield org.bson.json.StrictCharacterStreamJsonWriter.state:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
         8: .line 229
            goto 10
         9: .line 230
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.setNextState:()V
        10: .line 232
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;

  public void writeEndArray();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
         0: .line 236
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.VALUE:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.checkState:(Lorg/bson/json/StrictCharacterStreamJsonWriter$State;)V
         1: .line 238
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.contextType:Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$JsonContextType.ARRAY:Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;
            if_acmpeq 3
         2: .line 239
            new org.bson.BsonInvalidOperationException
            dup
            ldc "Can't end an array if not in an array"
            invokespecial org.bson.BsonInvalidOperationException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 242
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.isIndent:()Z
            ifeq 6
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.hasElements:Z
            ifeq 6
         4: .line 243
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.getNewLineCharacters:()Ljava/lang/String;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         5: .line 244
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.parentContext:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.indentation:Ljava/lang/String;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         6: .line 246
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "]"
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         7: .line 247
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.parentContext:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            putfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
         8: .line 248
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.contextType:Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$JsonContextType.TOP_LEVEL:Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;
            if_acmpne 11
         9: .line 249
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.DONE:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            putfield org.bson.json.StrictCharacterStreamJsonWriter.state:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
        10: .line 250
            goto 12
        11: .line 251
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.setNextState:()V
        12: .line 253
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;

  public boolean isTruncated();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
         0: .line 264
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.isTruncated:Z
            ireturn
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;

  void flush();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
         0: .line 269
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.writer:Ljava/io/Writer;
            invokevirtual java.io.Writer.flush:()V
         1: .line 270
            goto 4
      StackMap locals:
      StackMap stack: java.io.IOException
         2: astore 1 /* e */
        start local 1 // java.io.IOException e
         3: .line 271
            aload 0 /* this */
            aload 1 /* e */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.throwBSONException:(Ljava/io/IOException;)V
        end local 1 // java.io.IOException e
         4: .line 273
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            3    4     1     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException

  java.io.Writer getWriter();
    descriptor: ()Ljava/io/Writer;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
         0: .line 276
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.writer:Ljava/io/Writer;
            areturn
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;

  private void preWriteValue();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
         0: .line 280
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.contextType:Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$JsonContextType.ARRAY:Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;
            if_acmpne 9
         1: .line 281
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.hasElements:Z
            ifeq 3
         2: .line 282
            aload 0 /* this */
            ldc ","
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         3: .line 284
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.isIndent:()Z
            ifeq 7
         4: .line 285
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.getNewLineCharacters:()Ljava/lang/String;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         5: .line 286
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.indentation:Ljava/lang/String;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         6: .line 287
            goto 9
      StackMap locals:
      StackMap stack:
         7: aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.hasElements:Z
            ifeq 9
         8: .line 288
            aload 0 /* this */
            ldc " "
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         9: .line 291
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            iconst_1
            putfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.hasElements:Z
        10: .line 292
            return
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;

  private void setNextState();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
         0: .line 295
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.context:Lorg/bson/json/StrictCharacterStreamJsonWriter$StrictJsonContext;
            getfield org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext.contextType:Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$JsonContextType.ARRAY:Lorg/bson/json/StrictCharacterStreamJsonWriter$JsonContextType;
            if_acmpne 3
         1: .line 296
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.VALUE:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            putfield org.bson.json.StrictCharacterStreamJsonWriter.state:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
         2: .line 297
            goto 4
         3: .line 298
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.bson.json.StrictCharacterStreamJsonWriter$State.NAME:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            putfield org.bson.json.StrictCharacterStreamJsonWriter.state:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
         4: .line 300
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;

  private void writeStringHelper(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.lang.String str
         0: .line 303
            aload 0 /* this */
            bipush 34
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(C)V
         1: .line 304
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 28
         3: .line 305
      StackMap locals: int
      StackMap stack:
            aload 1 /* str */
            iload 2 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            istore 3 /* c */
        start local 3 // char c
         4: .line 306
            iload 3 /* c */
            lookupswitch { // 7
                    8: 9
                    9: 17
                   10: 13
                   12: 11
                   13: 15
                   34: 5
                   92: 7
              default: 19
          }
         5: .line 308
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            ldc "\\\""
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         6: .line 309
            goto 27
         7: .line 311
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "\\\\"
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
         8: .line 312
            goto 27
         9: .line 314
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "\\b"
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
        10: .line 315
            goto 27
        11: .line 317
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "\\f"
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
        12: .line 318
            goto 27
        13: .line 320
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "\\n"
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
        14: .line 321
            goto 27
        15: .line 323
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "\\r"
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
        16: .line 324
            goto 27
        17: .line 326
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "\\t"
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
        18: .line 327
            goto 27
        19: .line 329
      StackMap locals:
      StackMap stack:
            iload 3 /* c */
            invokestatic java.lang.Character.getType:(C)I
            tableswitch { // 1 - 30
                    1: 20
                    2: 20
                    3: 20
                    4: 22
                    5: 20
                    6: 22
                    7: 22
                    8: 22
                    9: 20
                   10: 20
                   11: 20
                   12: 20
                   13: 22
                   14: 22
                   15: 22
                   16: 22
                   17: 22
                   18: 22
                   19: 22
                   20: 20
                   21: 20
                   22: 20
                   23: 20
                   24: 20
                   25: 20
                   26: 20
                   27: 20
                   28: 20
                   29: 20
                   30: 20
              default: 22
          }
        20: .line 349
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 3 /* c */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(C)V
        21: .line 350
            goto 27
        22: .line 352
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "\\u"
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
        23: .line 353
            aload 0 /* this */
            iload 3 /* c */
            ldc 61440
            iand
            bipush 12
            ishr
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
        24: .line 354
            aload 0 /* this */
            iload 3 /* c */
            sipush 3840
            iand
            bipush 8
            ishr
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
        25: .line 355
            aload 0 /* this */
            iload 3 /* c */
            sipush 240
            iand
            iconst_4
            ishr
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
        26: .line 356
            aload 0 /* this */
            iload 3 /* c */
            bipush 15
            iand
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(Ljava/lang/String;)V
        end local 3 // char c
        27: .line 304
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        28: iload 2 /* i */
            aload 1 /* str */
            invokevirtual java.lang.String.length:()I
            if_icmplt 3
        end local 2 // int i
        29: .line 362
            aload 0 /* this */
            bipush 34
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.write:(C)V
        30: .line 363
            return
        end local 1 // java.lang.String str
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   31     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0   31     1   str  Ljava/lang/String;
            2   29     2     i  I
            4   27     3     c  C
    MethodParameters:
      Name  Flags
      str   final

  private void write(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.lang.String str
         0: .line 367
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.getMaxLength:()I
            ifeq 1
            aload 1 /* str */
            invokevirtual java.lang.String.length:()I
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.curLength:I
            iadd
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.getMaxLength:()I
            if_icmpge 4
         1: .line 368
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.writer:Ljava/io/Writer;
            aload 1 /* str */
            invokevirtual java.io.Writer.write:(Ljava/lang/String;)V
         2: .line 369
            aload 0 /* this */
            dup
            getfield org.bson.json.StrictCharacterStreamJsonWriter.curLength:I
            aload 1 /* str */
            invokevirtual java.lang.String.length:()I
            iadd
            putfield org.bson.json.StrictCharacterStreamJsonWriter.curLength:I
         3: .line 370
            goto 10
         4: .line 371
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.writer:Ljava/io/Writer;
            aload 1 /* str */
            iconst_0
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.getMaxLength:()I
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.curLength:I
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.io.Writer.write:(Ljava/lang/String;)V
         5: .line 372
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.getMaxLength:()I
            putfield org.bson.json.StrictCharacterStreamJsonWriter.curLength:I
         6: .line 373
            aload 0 /* this */
            iconst_1
            putfield org.bson.json.StrictCharacterStreamJsonWriter.isTruncated:Z
         7: .line 375
            goto 10
      StackMap locals:
      StackMap stack: java.io.IOException
         8: astore 2 /* e */
        start local 2 // java.io.IOException e
         9: .line 376
            aload 0 /* this */
            aload 2 /* e */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.throwBSONException:(Ljava/io/IOException;)V
        end local 2 // java.io.IOException e
        10: .line 378
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String str
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0   11     1   str  Ljava/lang/String;
            9   10     2     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     7       8  Class java.io.IOException
    MethodParameters:
      Name  Flags
      str   final

  private void write(char);
    descriptor: (C)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
        start local 1 // char c
         0: .line 382
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.getMaxLength:()I
            ifeq 1
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.curLength:I
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.settings:Lorg/bson/json/StrictCharacterStreamJsonWriterSettings;
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriterSettings.getMaxLength:()I
            if_icmpge 4
         1: .line 383
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.writer:Ljava/io/Writer;
            iload 1 /* c */
            invokevirtual java.io.Writer.write:(I)V
         2: .line 384
            aload 0 /* this */
            dup
            getfield org.bson.json.StrictCharacterStreamJsonWriter.curLength:I
            iconst_1
            iadd
            putfield org.bson.json.StrictCharacterStreamJsonWriter.curLength:I
         3: .line 385
            goto 8
         4: .line 386
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.bson.json.StrictCharacterStreamJsonWriter.isTruncated:Z
         5: .line 388
            goto 8
      StackMap locals:
      StackMap stack: java.io.IOException
         6: astore 2 /* e */
        start local 2 // java.io.IOException e
         7: .line 389
            aload 0 /* this */
            aload 2 /* e */
            invokevirtual org.bson.json.StrictCharacterStreamJsonWriter.throwBSONException:(Ljava/io/IOException;)V
        end local 2 // java.io.IOException e
         8: .line 391
      StackMap locals:
      StackMap stack:
            return
        end local 1 // char c
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0    9     1     c  C
            7    8     2     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     5       6  Class java.io.IOException
    MethodParameters:
      Name  Flags
      c     final

  private void checkState(org.bson.json.StrictCharacterStreamJsonWriter$State);
    descriptor: (Lorg/bson/json/StrictCharacterStreamJsonWriter$State;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
        start local 1 // org.bson.json.StrictCharacterStreamJsonWriter$State requiredState
         0: .line 394
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.state:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            aload 1 /* requiredState */
            if_acmpeq 2
         1: .line 395
            new org.bson.BsonInvalidOperationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid state "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.bson.json.StrictCharacterStreamJsonWriter.state:Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.bson.BsonInvalidOperationException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 397
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.bson.json.StrictCharacterStreamJsonWriter$State requiredState
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0    3     1  requiredState  Lorg/bson/json/StrictCharacterStreamJsonWriter$State;
    MethodParameters:
               Name  Flags
      requiredState  final

  private void throwBSONException(java.io.IOException);
    descriptor: (Ljava/io/IOException;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
        start local 1 // java.io.IOException e
         0: .line 400
            new org.bson.BSONException
            dup
            ldc "Wrapping IOException"
            aload 1 /* e */
            invokespecial org.bson.BSONException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.io.IOException e
        end local 0 // org.bson.json.StrictCharacterStreamJsonWriter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bson/json/StrictCharacterStreamJsonWriter;
            0    1     1     e  Ljava/io/IOException;
    MethodParameters:
      Name  Flags
      e     final
}
SourceFile: "StrictCharacterStreamJsonWriter.java"
NestMembers:
  org.bson.json.StrictCharacterStreamJsonWriter$JsonContextType  org.bson.json.StrictCharacterStreamJsonWriter$State  org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext
InnerClasses:
  private final JsonContextType = org.bson.json.StrictCharacterStreamJsonWriter$JsonContextType of org.bson.json.StrictCharacterStreamJsonWriter
  private final State = org.bson.json.StrictCharacterStreamJsonWriter$State of org.bson.json.StrictCharacterStreamJsonWriter
  private StrictJsonContext = org.bson.json.StrictCharacterStreamJsonWriter$StrictJsonContext of org.bson.json.StrictCharacterStreamJsonWriter