docs: public final void readyForData()
      {
          m_starting.compareAndSet(false, true);
  
          if (m_stopping) return;
  
          if (m_executorService != null) { // Should be caused by coding error. Generic RuntimeException is OK
              throw new RuntimeException("Importer has already been started and is running");
          }
  
          if (m_configs.size()==0) {
              s_logger.info("No configured importers of " + m_factory.getTypeName() + " are ready to be started at this time");
              return;
          }
  
          ThreadPoolExecutor tpe = new ThreadPoolExecutor(
                  m_configs.size(),
                  m_configs.size(),
                  5_000,
                  TimeUnit.MILLISECONDS,
                  new LinkedBlockingQueue<Runnable>(),
                  getThreadFactory(m_factory.getTypeName(), MEDIUM_STACK_SIZE)
                  );
          tpe.allowCoreThreadTimeOut(true);
  
          m_executorService = MoreExecutors.listeningDecorator(tpe);
  
          if (m_factory.isImporterRunEveryWhere()) {
              ImmutableMap.Builder<URI, AbstractImporter> builder = new ImmutableMap.Builder<>();
              for (final ImporterConfig config : m_configs.values()) {
                  AbstractImporter importer = m_factory.createImporter(config);
                  builder.put(importer.getResourceID(), importer);
              }
              m_importers.set(builder.build());
              startImporters(m_importers.get().values());
          } else {
              m_importers.set(ImmutableMap.<URI, AbstractImporter> of());
              m_distributer.registerCallback(m_distributerDesignation, this);
              m_distributer.registerChannels(m_distributerDesignation, m_configs.keySet());
          }
      }