docs: public PointerHierarchyRepresentationResult run(Database db, Relation<O> relation) {
      if(SingleLinkage.class.isInstance(linkage)) {
        LOG.verbose("Notice: SLINK is a much faster algorithm for single-linkage clustering!");
      }
      DistanceQuery<O> dq = db.getDistanceQuery(relation, getDistanceFunction());
      final DBIDs ids = relation.getDBIDs();
      MatrixParadigm mat = new MatrixParadigm(ids);
  
      // Compute the initial (lower triangular) distance matrix.
      initializeDistanceMatrix(mat, dq, linkage);
  
      // Initialize space for result:
      PointerHierarchyRepresentationBuilder builder = new PointerHierarchyRepresentationBuilder(ids, dq.getDistanceFunction().isSquared());
  
      nnChainCore(mat, builder);
      return builder.complete();
    }