code: @Override
      public void writeExternal(ObjectOutput out)
          throws IOException {
  
          switch (this.type) {
              case DATE_TYPE:
                  this.writeDate(out);
                  break;
              case TIME_TYPE:
                  this.writeTime(out);
                  break;
              case WEEKMODEL_TYPE:
                  this.writeWeekmodel(out);
                  break;
              case MOMENT_TYPE:
                  this.writeMoment(out);
                  break;
              case MACHINE_TIME_TYPE:
                  this.writeMachineTime(out);
                  break;
              case DURATION_TYPE:
                  this.writeDuration(out);
                  break;
              case DAY_PERIOD_TYPE:
                  this.writeDayPeriod(out);
                  break;
              case TIMESTAMP_TYPE:
                  this.writeTimestamp(out);
                  break;
              default:
                  throw new InvalidClassException("Unknown serialized type.");
          }
  
      }
docs: /*[deutsch]
  <p>Implementierungsmethode des Interface {@link Externalizable}. </p>
  
  <p>Das erste Byte enth&auml;lt um 4 Bits nach links verschoben den
  Typ des zu serialisierenden Objekts. Danach folgen die Daten-Bits
  in einer bit-komprimierten Darstellung. </p>
  
  @serialData  data layout see {@code writeReplace()}-method of object
  to be serialized
  @param       out     output stream
  @throws      IOException in any case of IO-failures