class DeletionJobConfiguration {

	@Bean
	public MongoItemReader<Person> mongoPersonReader(MongoTemplate mongoTemplate) {
		Map<String, Sort.Direction> sortOptions = new HashMap<>();
		sortOptions.put("name", Sort.Direction.DESC);
		return new MongoItemReaderBuilder<Person>().name("personItemReader")
			.collection("person_out")
			.targetType(Person.class)
			.template(mongoTemplate)
			.query(new Query().addCriteria(where("name").is("foo3")))
			.sorts(sortOptions)
			.build();
	}

	@Bean
	public MongoItemWriter<Person> mongoPersonRemover(MongoTemplate mongoTemplate) {
		return new MongoItemWriterBuilder<Person>().template(mongoTemplate)
			.delete(true)
			.collection("person_out")
			.build();
	}

	@Bean
	public Step deletionStep(JobRepository jobRepository, PlatformTransactionManager transactionManager,
			MongoItemReader<Person> mongoPersonReader, MongoItemWriter<Person> mongoPersonRemover) {<FILL_FUNCTION_BODY>}

	@Bean
	public Job deletionJob(JobRepository jobRepository, Step deletionStep) {
		return new JobBuilder("deletionJob", jobRepository).start(deletionStep).build();
	}

}

		return new StepBuilder("step", jobRepository).<Person, Person>chunk(2, transactionManager)
			.reader(mongoPersonReader)
			.writer(mongoPersonRemover)
			.build();
	
<no_super_class>