E_SERIALIZABLE_%d(type_t%s) \\" % \         (nfields, fields))     print("    template <cluster_version_t W> \\")     print("    friend void serialize(%swrite_message_t *wm, %sconst type_t &thing) { \\" % (zeroarg, zeroarg))     for i in xrange(nfields):         print("        serialize<W>(wm, thing.field%d); \\" % (i + 0))     print("    } \\")     print("    template <cluster_version_t W> \\")     print("    friend archive_result_t deserialize(%sread_stream_t *s, %stype_t *thing) { \\" % (zeroarg, zeroarg))     print("        archive_result_t res = archive_result_t::SUCCESS; \\")     for i in xrange(nfields):         print("        res = deserialize<W>(s, deserialize_deref(thing->field%d)); \\" % (i + 0))         print("        if (bad(res)) { return res; } \\")     print("        return res; \\")     print("    }