docs: final void writeValueRecursively(IonType type, IonReader reader)
          throws IOException
      {
          write_value_field_name_helper(reader);
          write_value_annotations_helper(reader);
  
          if (reader.isNullValue()) {
              this.writeNull(type);
          }
          else {
              switch (type) {
              case NULL:
                  writeNull();
                  if (_debug_on) System.out.print("-");
                  break;
              case BOOL:
                  writeBool(reader.booleanValue());
                  if (_debug_on) System.out.print("b");
                  break;
              case INT:
                  writeInt(reader.bigIntegerValue());
                  if (_debug_on) System.out.print("i");
                  break;
              case FLOAT:
                  writeFloat(reader.doubleValue());
                  if (_debug_on) System.out.print("f");
                  break;
              case DECIMAL:
                  writeDecimal(reader.decimalValue());
                  if (_debug_on) System.out.print("d");
                  break;
              case TIMESTAMP:
                  writeTimestamp(reader.timestampValue());
                  if (_debug_on) System.out.print("t");
                  break;
              case STRING:
                  writeString(reader.stringValue());
                  if (_debug_on) System.out.print("$");
                  break;
              case SYMBOL:
                  writeSymbolToken(reader.symbolValue());
                  if (_debug_on) System.out.print("y");
                  break;
              case BLOB:
                  writeBlob(reader.newBytes());
                  if (_debug_on) System.out.print("B");
                  break;
              case CLOB:
                  writeClob(reader.newBytes());
                  if (_debug_on) System.out.print("L");
                  break;
              case STRUCT:
                  if (_debug_on) System.out.print("{");
                  writeContainerRecursively(IonType.STRUCT, reader);
                  if (_debug_on) System.out.print("}");
                  break;
              case LIST:
                  if (_debug_on) System.out.print("[");
                  writeContainerRecursively(IonType.LIST, reader);
                  if (_debug_on) System.out.print("]");
                  break;
              case SEXP:
                  if (_debug_on) System.out.print("(");
                  writeContainerRecursively(IonType.SEXP, reader);
                  if (_debug_on) System.out.print(")");
                  break;
              default:
                  throw new IllegalStateException();
              }
          }
      }