docs: public static String getTitle(Database db, Result result) {
      List<TrackedParameter> settings = new ArrayList<>();
      for(SettingsResult sr : SettingsResult.getSettingsResults(result)) {
        settings.addAll(sr.getSettings());
      }
      String algorithm = null;
      String distance = null;
      String dataset = null;
  
      for(TrackedParameter setting : settings) {
        Parameter<?> param = setting.getParameter();
        OptionID option = param.getOptionID();
        String value = param.isDefined() ? param.getValueAsString() : null;
        if(option.equals(AlgorithmStep.Parameterizer.ALGORITHM_ID)) {
          algorithm = value;
        }
        if(option.equals(DistanceBasedAlgorithm.DISTANCE_FUNCTION_ID)) {
          distance = value;
        }
        if(option.equals(FileBasedDatabaseConnection.Parameterizer.INPUT_ID)) {
          dataset = value;
        }
      }
      StringBuilder buf = new StringBuilder();
      if(algorithm != null) {
        buf.append(shortenClassname(algorithm.split(",")[0], '.'));
      }
      if(distance != null) {
        if(buf.length() > 0) {
          buf.append(" using ");
        }
        buf.append(shortenClassname(distance, '.'));
      }
      if(dataset != null) {
        if(buf.length() > 0) {
          buf.append(" on ");
        }
        buf.append(shortenClassname(dataset, File.separatorChar));
      }
      if(buf.length() > 0) {
        return buf.toString();
      }
      return null;
    }