@Override
 public void insert(DoubleDBIDPair e) {
   final int kminus1 = k - 1;
   final double dist = e.doubleValue();
   if (size < k || dist <= data[kminus1].doubleValue()) {
     // Ensure we have enough space.
     if (size > data.length) {
       grow();
     }
     if (e instanceof DoubleIntegerDBIDPair) {
       insertionSort((DoubleIntegerDBIDPair) e);
     } else {
       insertionSort(new DoubleIntegerDBIDPair(dist, e.internalGetIndex()));
     }
     // Truncate if necessary:
     if (size > k && data[k].doubleValue() > data[kminus1].doubleValue()) {
       truncate();
     }
   }
 }