@Override
 public void write(TPDataOutput out, Connection<?> conn) throws IOException {
   super.write(out, conn);
   out.writeInteger(this.id);
   out.writeInteger(this.modtime);
   out.writeInteger(this.categories.size());
   for (CategoriesType object : this.categories) object.write(out, conn);
   out.writeString(this.name);
   out.writeString(this.description);
   out.writeString(this.requirements);
   out.writeInteger(this.properties.size());
   for (PropertiesType object : this.properties) object.write(out, conn);
 }
 /** A copy constructor for (among others) deep-copying groups and lists. */
 public CategoriesType(CategoriesType copy) {
   setCategory(copy.getCategory());
 }