code: @Override
  	public boolean process(List<Point> _dataSet ) {
  
  		// see if it has the minimum number of points
  		if (_dataSet.size() < sampleSize )
  			return false;
  
  		dataSet.clear();
  		dataSet.addAll(_dataSet);
  
  		// configure internal data structures
  		initialize(dataSet);
  
  		// iterate until it has exhausted all iterations or stop if the entire data set
  		// is in the inlier set
  		for (iteration = 0; checkExitIteration(); iteration++) {
  			// sample the a small set of points
  			initialSample.reset();
  			Ransac.randomDraw(dataSet, sampleSize, initialSample.toList(), rand);
  
  			// try fitting all the different kinds of objects
  			for( int j = 0; j < objectTypes.size(); j++ ) {
  
  				ObjectType model = objectTypes.get(j);
  				Object param = objectCandidateParam.get(j);
  
  				// adjust the list size to what was requested by this particular model
  				initialSample.size = model.sampleSize;
  
  				// get the candidate(s) for this sample set
  				if( model.modelGenerator.generate(initialSample.toList(), param ) ) {
  
  					// see if it can find a model better than the current best one
  					selectMatchSet(_dataSet, model.modelDistance, model.thresholdFit, param);
  
  					// save this results
  					if (bestFitPoints.size() < candidatePoints.size()) {
  						bestFitModelIndex = j;
  						objectCandidateParam.set(j,objectParam.get(j));
  						objectParam.set(j,param);
  						setBestModel(param);
  					}
  				}
  			}
  		}
  
  		return bestFitPoints.size() > 0;
  	}
docs: {@inheritDoc}