docs: private void writeIonValue(IonValue value)
          throws IonException
      {
          final int valueOffset = myBuffer.length - myOffset;
  
          switch (value.getType())
          {
              // scalars
              case BLOB:      writeIonBlobContent((IonBlob) value);            break;
              case BOOL:      writeIonBoolContent((IonBool) value);            break;
              case CLOB:      writeIonClobContent((IonClob) value);            break;
              case DECIMAL:   writeIonDecimalContent((IonDecimal) value);      break;
              case FLOAT:     writeIonFloatContent((IonFloat) value);          break;
              case INT:       writeIonIntContent((IonInt) value);              break;
              case NULL:      writeIonNullContent();                           break;
              case STRING:    writeIonStringContent((IonString) value);        break;
              case SYMBOL:    writeIonSymbolContent((IonSymbol) value);        break;
              case TIMESTAMP: writeIonTimestampContent((IonTimestamp) value);  break;
              // containers
              case LIST:      writeIonListContent((IonList) value);            break;
              case SEXP:      writeIonSexpContent((IonSexp) value);            break;
              case STRUCT:    writeIonStructContent((IonStruct) value);        break;
              // IonDatagram
              case DATAGRAM:  writeIonDatagramContent((IonDatagram) value);    break;
              default:
                  throw new IonException("IonType is unknown: " + value.getType());
          }
  
          writeAnnotations(value, valueOffset);
      }