protected function getCollectorServiceIds(\Symfony\Component\DependencyInjection\TaggedContainerInterface $container_builder) {
    // Get the details of all service collector services.
    // Note that the docs for this method are completely wrong.
    // Also, there are TWO possible tags for collectors, and the lazy version,
    // 'service_id_collector', doesn't specify any data such as the 'call'
    // property.
    $service_collectors_info = $container_builder->findTaggedServiceIds('service_collector');
    $service_id_collectors_info = $container_builder->findTaggedServiceIds('service_id_collector');

    array_walk($service_collectors_info, function(&$item) {
      $item['collector_type'] = 'service_collector';
    });
    array_walk($service_id_collectors_info, function(&$item) {
      $item['collector_type'] = 'service_id_collector';
    });

    // We're going to assume that there is no collecting service that uses BOTH
    // systems to collect two tags, that would be crazy.
    $collectors_info = $service_collectors_info + $service_id_collectors_info;

    // Filter for testing sample data collection.
    if (!empty($this->environment->sample_data_write)) {
      $collectors_info = array_intersect_key($collectors_info, $this->testingServiceCollectorNames);
    }

    return $collectors_info;
  }