* @throws IOException if an error occurs
   */
  void writeExternal(DataOutput out) throws IOException {

    out.writeInt(this.standardTransitions.length);
    for (long trans : this.standardTransitions) {
      Ser.writeEpochSec(trans, out);
    }
    for (ZoneOffset offset : this.standardOffsets) {
      Ser.writeOffset(offset, out);
    }
    out.writeInt(this.savingsInstantTransitions.length);
    for (long trans : this.savingsInstantTransitions) {
      Ser.writeEpochSec(trans, out);
    }
    for (ZoneOffset offset : this.wallOffsets) {
      Ser.writeOffset(offset, out);
    }
    out.writeByte(this.lastRules.length);
    for (ZoneOffsetTransitionRule rule : this.lastRules) {
      rule.writeExternal(out);
    }
  }