docs: public CompletableFuture<Revision> addMember(Author author, String projectName,
                                                   User member, ProjectRole projectRole) {
          requireNonNull(author, "author");
          requireNonNull(projectName, "projectName");
          requireNonNull(member, "member");
          requireNonNull(projectRole, "projectRole");
  
          final Member newMember = new Member(member, projectRole, UserAndTimestamp.of(author));
          final JsonPointer path = JsonPointer.compile("/members" + encodeSegment(newMember.id()));
          final Change<JsonNode> change =
                  Change.ofJsonPatch(METADATA_JSON,
                                     asJsonArray(new TestAbsenceOperation(path),
                                                 new AddOperation(path, Jackson.valueToTree(newMember))));
          final String commitSummary = "Add a member '" + newMember.id() + "' to the project " + projectName;
          return metadataRepo.push(projectName, Project.REPO_DOGMA, author, commitSummary, change);
      }