for (int i=0;i<targets.length;i++){
DHTPluginContactImpl target = (DHTPluginContactImpl)targets[i];
DHTPluginImpl dht = target.getDHT();
List c = (List)dht_map.get(dht);
if ( c == null ){
c = new ArrayList();
dht_map.put( dht, c );
}
c.add( target );
}
Iterator it = dht_map.entrySet().iterator();
boolean primary = true;
while( it.hasNext()){
Map.Entry entry = (Map.Entry)it.next();
DHTPluginImpl dht = (DHTPluginImpl)entry.getKey();
List contacts = (List)entry.getValue();
DHTPluginContact[] dht_targets = new DHTPluginContact[contacts.size()];
contacts.toArray( dht_targets );
if ( primary ){
primary = false;
dht.remove( dht_targets, key, description, listener );
}else{
// lazy - just report ops on one dht
dht.remove(
dht_targets, key, description,
new DHTPluginOperationListener()
{
public void
diversified()