@Override
  protected void messageServiceArgs(XmlWriter w) {

    String idx = "" + _index;
    w.add("id", new String[] {"idx", idx}, _assetId);
    w.add("defn", true);
  }
  @Override
  protected void messageServiceArgs(XmlWriter w) {

    w.add("id", _id);
    if (_members != null) {
      if (!_members.isEmpty()) {
        for (ProjectMember member : _members) {
          w.push("member");
          if (member.user().authority() != null) {
            if (member.user().protocol() != null) {
              w.add(
                  "authority",
                  new String[] {"protocol", member.user().protocol()},
                  member.user().authority());
            } else {
              w.add("authority", member.user().authority());
            }
          }
          w.add("domain", member.user().domain());
          w.add("user", member.user().user());
          w.add("role", member.role());
          if (member.dataUse() != null) {
            w.add("data-use", member.dataUse());
          }
          w.pop();
        }
      }
    }
    if (_roleMembers != null) {
      if (!_roleMembers.isEmpty()) {
        for (ProjectRoleMember roleMember : _roleMembers) {
          w.push("role-member");
          w.add("member", roleMember.roleUser().member());
          w.add("role", roleMember.role());
          if (roleMember.dataUse() != null) {
            w.add("data-use", roleMember.dataUse());
          }
          w.pop();
        }
      }
    }
  }