docs: @SuppressWarnings("ReferenceEquality")
    private void updateBalancingState() {
      List<Subchannel> activeList = filterNonFailingSubchannels(getSubchannels());
      if (activeList.isEmpty()) {
        // No READY subchannels, determine aggregate state and error status
        boolean isConnecting = false;
        Status aggStatus = EMPTY_OK;
        for (Subchannel subchannel : getSubchannels()) {
          ConnectivityStateInfo stateInfo = getSubchannelStateInfoRef(subchannel).value;
          // This subchannel IDLE is not because of channel IDLE_TIMEOUT,
          // in which case LB is already shutdown.
          // RRLB will request connection immediately on subchannel IDLE.
          if (stateInfo.getState() == CONNECTING || stateInfo.getState() == IDLE) {
            isConnecting = true;
          }
          if (aggStatus == EMPTY_OK || !aggStatus.isOk()) {
            aggStatus = stateInfo.getStatus();
          }
        }
        updateBalancingState(isConnecting ? CONNECTING : TRANSIENT_FAILURE,
            // If all subchannels are TRANSIENT_FAILURE, return the Status associated with
            // an arbitrary subchannel, otherwise return OK.
            new EmptyPicker(aggStatus));
      } else {
        // initialize the Picker to a random start index to ensure that a high frequency of Picker
        // churn does not skew subchannel selection.
        int startIndex = random.nextInt(activeList.size());
        updateBalancingState(READY, new ReadyPicker(activeList, startIndex, stickinessState));
      }
    }