docs: def _prune_components(self):
          """
          Remove components for which the remote party did not provide any candidates.
  
          This can only be determined after end-of-candidates.
          """
          seen_components = set(map(lambda x: x.component, self._remote_candidates))
          missing_components = self._components - seen_components
          if missing_components:
              self.__log_info('Components %s have no candidate pairs' % missing_components)
              self._components = seen_components