class SequentialIndividualCompleter implements IndividualCompleter {

	protected void evaluate(Individual individual) {
		State state = individual.getState();

		if (state == State.PHENOTYPED) {
			individual.setState(State.EVALUATING);
			Object phenotype = individual.getPhenotype();

			Objectives objectives = evaluator.evaluate(phenotype);
			assert isSameLength(objectives.getKeys()) : "Objectives changed: " + objectives.getKeys();

			individual.setObjectives(objectives);
		} else {
			throw new IllegalStateException("Cannot evaluate Individual, current state: " + state);
		}
	}

	@Inject public  SequentialIndividualCompleter(Control control, Decoder<Genotype, Object> decoder,
			Evaluator<Object> evaluator);

}