private void checkIfAvailable(final ID initiator,
      List<SuspectRequest<ID>> sMembers, final GMSMembershipView<ID> cv) {

    for (final SuspectRequest<ID> sr : sMembers) {
      final ID mbr = sr.getSuspectMember();

      if (!cv.contains(mbr) || membersInFinalCheck.contains(mbr)) {
        continue;
      }

      if (mbr.equals(localAddress)) {
        continue;// self
      }

      final String reason = sr.getReason();
      logger.debug("Scheduling availability check for member {}; reason={}", mbr, reason);

      // its a coordinator
      doAndIgnoreRejectedExecutionExceptionIfStopping(() -> checkExecutor.execute(() -> {
        try {
          inlineCheckIfAvailable(initiator, cv, true, mbr, reason);
        } catch (MembershipClosedException e) {
          // shutting down
        } catch (Exception e) {
          logger.info("Unexpected exception while verifying member", e);
        }
      }));
    }
  }
performs a "final" health check on the member. If failure-detection socket information is
available for the member (in the view) then we attempt to connect to its socket and ask if it's
the expected member. Otherwise we send a heartbeat request and wait for a reply.
geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/fd/GMSHealthMonitor.java