docs: static protected NodeInfo selectSeedNext(  NodeInfo prevSeed , NodeInfo prevNext ,
  											   NodeInfo currentSeed, boolean ccw  ) {
  		double referenceAngle = direction(prevNext, prevSeed);
  
  		double bestScore = Double.MAX_VALUE;
  		NodeInfo best = null;
  
  		// cut down on verbosity by saving the reference here
  		Point2D_F64 c = currentSeed.ellipse.center;
  
  		for (int i = 0; i < currentSeed.edges.size(); i++) {
  			Edge edge = currentSeed.edges.get(i);
  			if( edge.target.marked )
  				continue;
  
  			double angle = edge.angle;
  			double angleDist = ccw ? UtilAngle.distanceCCW(referenceAngle,angle) : UtilAngle.distanceCW(referenceAngle,angle);
  			if( angleDist > Math.PI+MAX_LINE_ANGLE_CHANGE )
  				continue;
  
  			Point2D_F64 p = edge.target.ellipse.center;
  
  			double score = angleDist*c.distance(p);
  
  			if( score < bestScore ) {
  				bestScore = score;
  				best = edge.target;
  			}
  		}
  
  		if( best != null )
  			best.marked = true;
  		return best;
  	}