docs: private ArrayDBIDs updateKNNsAfterInsertion(DBIDs ids) {
      ArrayModifiableDBIDs rkNN_ids = DBIDUtil.newArray();
      DBIDs oldids = DBIDUtil.difference(relation.getDBIDs(), ids);
      for(DBIDIter iter = oldids.iter(); iter.valid(); iter.advance()) {
        KNNList kNNs = storage.get(iter);
        double knnDist = kNNs.getKNNDistance();
        // look for new kNNs
        KNNHeap heap = null;
        for(DBIDIter iter2 = ids.iter(); iter2.valid(); iter2.advance()) {
          final double dist = distanceQuery.distance(iter, iter2);
          if(dist <= knnDist) {
            heap = heap != null ? heap : DBIDUtil.newHeap(kNNs);
            heap.insert(dist, iter2);
          }
        }
        if(heap != null) {
          storage.put(iter, kNNs = heap.toKNNList());
          rkNN_ids.add(iter);
        }
      }
      return rkNN_ids;
    }