class DBSCANClusterer implements Clusterer {

  @Override
  public List<List<double[]>> cluster(double[][] input) {
    List<double[]> cluster = new ArrayList<>();
    myPointTypes = new PointType[input.length];

    for (int i = 0; i < input.length; i++) {
      if (myPointTypes[i] == null) { // If point is unclassified
        if (expandCluster(input, i, cluster)) {
          if (!cluster.isEmpty()) {
            myClusters.add(cluster);
            myVisited += cluster.size();
            notifyProgress();
          }
          cluster = new ArrayList<>();
        }
      }
    }
    return myClusters;
  }

  public  DBSCANClusterer(float eps, int minPts);
  public  DBSCANClusterer(float eps, int minPts, ProgressListener listener);

}