public Set<InternalDistributedMember> addMembershipListenerAndAdviseGeneric(
      MembershipListener listener) {
    initializationGate(); // exchange profiles before acquiring lock on membershipListeners
    membershipListeners.putIfAbsent(listener, Boolean.TRUE);
    return adviseGeneric();
  }
Atomically add listener to the list to receive notification when a *new* profile is added or a
profile is removed, and return adviseGeneric(). This ensures that no membership listener calls
are missed, but there is no guarantee that there won't be redundant listener calls.
geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionAdvisor.java