code: @Override
      public void readExternal(ObjectInput in)
          throws IOException, ClassNotFoundException {
  
          ChronoHistory history;
          AncientJulianLeapYears ajly;
          byte header = in.readByte();
  
          switch ((header & 0xFF) >> 4) {
              case VERSION_1:
                  history = this.readHistory(in, header);
                  break;
              case VERSION_2:
                  history = this.readHistory(in, header);
                  ajly = readTriennalState(in);
                  if (ajly != null) {
                      history = history.with(ajly);
                  }
                  break;
              case VERSION_3:
                  history = this.readHistory(in, header);
                  ajly = readTriennalState(in);
                  if (ajly != null) {
                      history = history.with(ajly);
                  }
                  history = history.with(NewYearStrategy.readFromStream(in));
                  history = history.with(EraPreference.readFromStream(in));
                  break;
              default:
                  throw new StreamCorruptedException("Unknown serialized type.");
          }
  
          this.obj = history;
  
      }
docs: /*[deutsch]
  <p>Implementierungsmethode des Interface {@link Externalizable}. </p>
  
  @param   in      input stream
  @throws  IOException in any case of IO-failures
  @throws  ClassNotFoundException if class loading fails