docs: private SplitBrainJoinMessage sendSplitBrainJoinMessage(Address target, SplitBrainJoinMessage request) {
          if (logger.isFineEnabled()) {
              logger.fine("Sending SplitBrainJoinMessage to " + target);
          }
  
          Connection conn = node.getEndpointManager(MEMBER).getOrConnect(target, true);
          long timeout = SPLIT_BRAIN_CONN_TIMEOUT_MILLIS;
          while (conn == null) {
              timeout -= SPLIT_BRAIN_SLEEP_TIME_MILLIS;
              if (timeout < 0) {
                  logger.fine("Returning null timeout<0, " + timeout);
                  return null;
              }
              try {
                  //noinspection BusyWait
                  Thread.sleep(SPLIT_BRAIN_SLEEP_TIME_MILLIS);
              } catch (InterruptedException e) {
                  currentThread().interrupt();
                  return null;
              }
              conn = node.getEndpointManager(MEMBER).getConnection(target);
          }
  
          NodeEngine nodeEngine = node.nodeEngine;
          Future future = nodeEngine.getOperationService().createInvocationBuilder(ClusterServiceImpl.SERVICE_NAME,
                  new SplitBrainMergeValidationOp(request), target)
                  .setTryCount(1).invoke();
          try {
              return (SplitBrainJoinMessage) future.get(SPLIT_BRAIN_JOIN_CHECK_TIMEOUT_SECONDS, TimeUnit.SECONDS);
          } catch (TimeoutException e) {
              logger.fine("Timeout during join check!", e);
          } catch (Exception e) {
              logger.warning("Error during join check!", e);
          }
          return null;
      }