private static ElderState startElderCall(InternalDistributedSystem sys, DLockService dls)
      throws InterruptedException {
    InternalDistributedMember elder;
    ElderState es = null;

    final DistributionManager dm = sys.getDistributionManager();
    boolean elderCallStarted = false;
    while (!elderCallStarted) {
      dm.throwIfDistributionStopped();
      elder = dm.getElderId(); // call this before getElderState
      Assert.assertTrue(elder != null, "starting an elder call with no valid elder");
      if (dm.getId().equals(elder)) {
        try {
          es = dm.getElderState(false);
        } catch (IllegalStateException e) {
          // loop back around to reacquire Collaboration and try elder lock again
          continue;
        }
      } else {
        es = null;
      }
      elderCallStarted = basicStartElderCall(sys, es, elder, dls);
    }

    return es;
  }
Sets currentElder to the memberId of the current elder if elder is remote; null if elder is in
our vm.
geode-core/src/main/java/org/apache/geode/distributed/internal/locks/GrantorRequestProcessor.java