code: @Override
      public void readExternal(ObjectInput in)
          throws IOException, ClassNotFoundException {
  
          int header = in.readByte();
  
          switch (header) {
              case FIXED_DAY_PATTERN_TYPE:
                  this.obj = readFixedDayPattern(in);
                  break;
              case DAY_OF_WEEK_IN_MONTH_PATTERN_TYPE:
                  this.obj = readDayOfWeekInMonthPattern(in);
                  break;
              case LAST_WEEKDAY_PATTERN_TYPE:
                  this.obj = readLastDayOfWeekPattern(in);
                  break;
              case RULE_BASED_TRANSITION_MODEL_TYPE:
                  this.obj = readRuleBasedTransitionModel(in);
                  break;
              case ARRAY_TRANSITION_MODEL_TYPE:
                  this.obj = readArrayTransitionModel(in);
                  break;
              case COMPOSITE_TRANSITION_MODEL_TYPE:
                  this.obj = readCompositeTransitionModel(in);
                  break;
              default:
                  throw new StreamCorruptedException("Unknown serialized type.");
          }
  
      }
docs: /*[deutsch]
  <p>Implementierungsmethode des Interface {@link Externalizable}. </p>
  
  @param   in      input stream
  @throws  IOException in case of I/O-problems
  @throws  ClassNotFoundException if class-loading fails