docs: public <T> Collector<T> create(long id, Collection<Address> backupOwners, int topologyId) {
        if (backupOwners.isEmpty()) {
           return new PrimaryOwnerOnlyCollector<>();
        }
        SingleKeyCollector<T> collector = new SingleKeyCollector<>(id, backupOwners, topologyId);
        BaseAckTarget prev = collectorMap.put(id, collector);
        //is it possible the have a previous collector when the topology changes after the first collector is created
        //in that case, the previous collector must have a lower topology id
        assert prev == null || prev.topologyId < topologyId : format("replaced old collector '%s' by '%s'", prev, collector);
        if (trace) {
           log.tracef("Created new collector for %s. BackupOwners=%s", id, backupOwners);
        }
        return collector;
     }