public void disconnect(String reason, boolean shunned) {
    boolean isForcedDisconnect = dm.getRootCause() instanceof ForcedDisconnectException;
    boolean rejoined = false;
    reconnected = false;
    if (isForcedDisconnect && !isReconnectingDS) {
      forcedDisconnect = true;
      resetReconnectAttemptCounter();
      rejoined = tryReconnect(true, reason, GemFireCacheImpl.getInstance());
    }
    if (!rejoined) {
      disconnect(false, reason, shunned);
    }
  }
Disconnects this member from the distributed system when an internal error has caused
distribution to fail (e.g., this member was shunned)

@param reason a string describing why the disconnect is occurring
@param shunned whether this member was shunned by the membership coordinator
geode-core/src/main/java/org/apache/geode/distributed/internal/InternalDistributedSystem.java