docs: protected static int findMerge(int end, MatrixParadigm mat, DBIDArrayMIter prots, PointerHierarchyRepresentationBuilder builder, Int2ObjectOpenHashMap<ModifiableDBIDs> clusters, DistanceQuery<?> dq) {
      final DBIDArrayIter ix = mat.ix, iy = mat.iy;
      final double[] distances = mat.matrix;
      double mindist = Double.POSITIVE_INFINITY;
      int x = -1, y = -1;
  
      for(int dx = 0; dx < end; dx++) {
        // Skip if object is already linked
        if(builder.isLinked(ix.seek(dx))) {
          continue;
        }
        final int xoffset = MatrixParadigm.triangleSize(dx);
  
        for(int dy = 0; dy < dx; dy++) {
          // Skip if object is already linked
          if(builder.isLinked(iy.seek(dy))) {
            continue;
          }
  
          double dist = distances[xoffset + dy];
          if(dist < mindist) {
            mindist = dist;
            x = dx;
            y = dy;
          }
        }
      }
  
      assert (y < x);
      merge(end, mat, prots, builder, clusters, dq, x, y);
      return x;
    }