docs: public CompletableFuture<Revision> removeMember(Author author, String projectName, User member) {
          requireNonNull(author, "author");
          requireNonNull(projectName, "projectName");
          requireNonNull(member, "member");
  
          final String commitSummary = "Remove the member '" + member.id() + "' from the project " + projectName;
          return metadataRepo.push(
                  projectName, Project.REPO_DOGMA, author, commitSummary,
                  () -> fetchMetadata(projectName).thenApply(
                          metadataWithRevision -> {
                              final ImmutableList.Builder<JsonPatchOperation> patches = ImmutableList.builder();
                              metadataWithRevision
                                      .object().repos().values()
                                      .stream().filter(r -> r.perUserPermissions().containsKey(member.id()))
                                      .forEach(r -> patches.add(new RemoveOperation(
                                              perUserPermissionPointer(r.name(), member.id()))));
                              patches.add(new RemoveOperation(JsonPointer.compile("/members" +
                                                                                  encodeSegment(member.id()))));
                              final Change<JsonNode> change =
                                      Change.ofJsonPatch(METADATA_JSON, Jackson.valueToTree(patches.build()));
                              return HolderWithRevision.of(change, metadataWithRevision.revision());
                          })
          );
      }