private function determineNearestRequestingRoot($key) {
    // We're ascending a tree whose root is a root component, so we have to
    // find a root eventually.
    // Note that the nearest requesting root of a root component is not itself.
    // E.g. with this chain:
    //   root -> requested -> inner_root
    // the nearest root of inner_root is root.
    do {
      $key = $this->requesters[$key];
    }
    while (!isset($this->roots[$key]));

    return $key;
  }