docs: @SuppressWarnings("unchecked")
    private CompletableFuture<Void> bootstrap(Member member, CompletableFuture<Void> future) {
      LOGGER.debug("{} - Bootstrapping from member {}", membershipService.getLocalMember().id(), member);
      messagingService.<PartitionGroupInfo, PartitionGroupInfo>send(
          BOOTSTRAP_SUBJECT,
          new PartitionGroupInfo(membershipService.getLocalMember().id(), systemGroup, Lists.newArrayList(groups.values())),
          serializer::encode,
          serializer::decode,
          member.id())
          .whenCompleteAsync((info, error) -> {
            if (error == null) {
              try {
                updatePartitionGroups(info);
                future.complete(null);
              } catch (Exception e) {
                future.completeExceptionally(e);
              }
            } else {
              error = Throwables.getRootCause(error);
              if (error instanceof MessagingException.NoRemoteHandler || error instanceof TimeoutException) {
                threadContext.schedule(Duration.ofSeconds(1), () -> bootstrap(member, future));
              } else {
                LOGGER.debug("{} - Failed to bootstrap from member {}", membershipService.getLocalMember().id(), member, error);
                future.complete(null);
              }
            }
          }, threadContext);
      return future;
    }