public int write(DataOutputStream ostream) throws IOException {
    preWrite();
    int retVal = 0;

    {
      /** fix dependent sizes for header * */
    }

    {
      /** fix dependent sizes for resources * */
    }
    {
      /** fix dependent sizes for pvData * */
    }

    {
        /** fix dependent sizes for cvCertificates* */
      certificateCount = (short) (cvCertificates.getCount() - (0));
    }

    // write header
    if (header != null) retVal += header.write(ostream);
    // write protocol_version
    ostream.writeByte(protocol_version);
    retVal += 1;
    // write configuration_count_change
    ostream.writeByte(configuration_count_change);
    retVal += 1;
    // write resources
    if (resources != null) retVal += resources.write(ostream);
    // write pvData
    if (pvData != null) retVal += pvData.write(ostream);
    // write certificateCount
    ostream.writeByte(certificateCount);
    retVal += 1;
    // write cvCertificates
    {
      ArrayList<CVCertificate> temp1 = cvCertificates;
      for (int iIdx = 0; iIdx < temp1.getCount(); iIdx++) {
        CVCertificate temp2 = temp1.get(iIdx);
        if (temp2 != null) retVal += temp2.write(ostream);
      }
    }
    postWrite();
    return retVal;
  }