docs: @Override
      public final void onChange(ImporterChannelAssignment assignment)
      {
          if (m_stopping && !assignment.getAdded().isEmpty()) {
              String msg = "Received an a channel assignment when the importer is stopping: " + assignment;
              s_logger.warn(msg);
              throw new IllegalStateException(msg);
          }
  
          if (m_stopping) {
              return;
          }
  
          ImmutableMap<URI, AbstractImporter> oldReference = m_importers.get();
          Map<URI, AbstractImporter> importersMap = Maps.newHashMap();
          importersMap.putAll(oldReference);
          List<AbstractImporter> toStop = new ArrayList<>();
          List<String> missingRemovedURLs = new ArrayList<>();
          List<String> missingAddedURLs = new ArrayList<>();
          for (URI removed: assignment.getRemoved()) {
              importersMap.remove(removed);
              if (m_configs.containsKey(removed)) {
                 AbstractImporter importer = oldReference.get(removed);
                 if (importer != null) {
                      toStop.add(importer);
                 }
              } else {
                  missingRemovedURLs.add(removed.toString());
              }
          }
  
          List<AbstractImporter> newImporters = new ArrayList<>();
          for (final URI added: assignment.getAdded()) {
              if (m_configs.containsKey(added)) {
                  //sanity check to avoid duplicated assignments
                  if (importersMap.containsKey(added)) {
                      continue;
                  }
                  AbstractImporter importer = m_factory.createImporter(m_configs.get(added));
                  newImporters.add(importer);
                  importersMap.put(added, importer);
              } else {
                  missingAddedURLs.add(added.toString());
              }
          }
  
          if (!missingRemovedURLs.isEmpty() || !missingAddedURLs.isEmpty()) {
              s_logger.error("The source for Import has changed its configuration. Removed importer URL(s): (" +
                      Joiner.on(", ").join(missingRemovedURLs) + "), added importer URL(s): (" +
                      Joiner.on(", ").join(missingAddedURLs) + "). Pause and Resume the database to refresh the importer.");
          }
  
          ImmutableMap<URI, AbstractImporter> newReference = ImmutableMap.copyOf(importersMap);
          boolean success = m_importers.compareAndSet(oldReference, newReference);
          if (!m_stopping && success) { // Could fail if stop was called after we entered inside this method
              stopImporters(toStop);
              startImporters(newImporters);
          }
      }