docs: private void drawDistribution( Graphics2D g2 , List<Point2D_F64> candidates ,
  					  int offX, int offY , double scale) {
  		findStatistics();
  
  		// draw all the features, adjusting their size based on the first score
  		g2.setColor(Color.RED);
  		g2.setStroke(new BasicStroke(3));
  
  		double normalizer;
  		if( scorer.getScoreType().isZeroBest() )
  			normalizer = best*containmentFraction;
  		else
  			normalizer = Math.abs(best)*(Math.exp(-1.0/containmentFraction));
  
  		for( int i = 0; i < candidates.size(); i++ ) {
  			Point2D_F64 p = candidates.get(i);
  
  			double s = associationScore[i];
  
  			// scale the circle based on how bad it is
  			double ratio = 1-Math.abs(s-best)/normalizer;
  			if( ratio < 0 )
  				continue;
  
  			int r = maxCircleRadius - (int)(maxCircleRadius*ratio);
  			if( r > 0 ) {
  				int x = (int)(p.x*scale+offX);
  				int y = (int)(p.y*scale+offY);
  				g2.drawOval(x-r,y-r,r*2+1,r*2+1);
  			}
  		}
  
  		// draw the best feature
  		g2.setColor(Color.GREEN);
  		g2.setStroke(new BasicStroke(10));
  		int w = maxCircleRadius*2+1;
  		Point2D_F64 p = candidates.get(indexBest);
  		int x = (int)(p.x*scale+offX);
  		int y = (int)(p.y*scale+offY);
  		g2.drawOval(x-maxCircleRadius,y-maxCircleRadius,w,w);
  	}