code: private void updateEligibility()
      {
          checkState(Thread.holdsLock(root), "Must hold lock to update eligibility");
          synchronized (root) {
              if (!parent.isPresent()) {
                  return;
              }
              if (isEligibleToStartNext()) {
                  parent.get().addOrUpdateSubGroup(this);
              }
              else {
                  parent.get().eligibleSubGroups.remove(this);
                  lastStartMillis = 0;
              }
              parent.get().updateEligibility();
          }
      }
docs: This method must be called whenever the group's eligibility to run more queries may have changed.