class SkippableExceptionDuringProcessSample {

	private final PlatformTransactionManager transactionManager;

	public SkippableExceptionDuringProcessSample(PlatformTransactionManager transactionManager) {
		this.transactionManager = transactionManager;
	}

	@Bean
	public ItemReader<Integer> itemReader() {<FILL_FUNCTION_BODY>}

	@Bean
	public ItemProcessor<Integer, Integer> itemProcessor() {
		return item -> {
			if (item.equals(5)) {
				System.out.println("Throwing exception on item " + item);
				throw new IllegalArgumentException("Unable to process 5");
			}
			System.out.println("processing item = " + item);
			return item;
		};
	}

	@Bean
	public ItemWriter<Integer> itemWriter() {
		return items -> {
			System.out.println("About to write chunk: " + items);
			for (Integer item : items) {
				System.out.println("writing item = " + item);
			}
		};
	}

	@Bean
	public Step step(JobRepository jobRepository) {
		return new StepBuilder("step", jobRepository).<Integer, Integer>chunk(3, this.transactionManager)
			.reader(itemReader())
			.processor(itemProcessor())
			.writer(itemWriter())
			.faultTolerant()
			.skip(IllegalArgumentException.class)
			.skipLimit(3)
			.build();
	}

	@Bean
	public Job job(JobRepository jobRepository) {
		return new JobBuilder("job", jobRepository).start(step(jobRepository)).build();
	}

}

		return new ListItemReader<>(Arrays.asList(1, 2, 3, 4, 5, 6)) {
			@Override
			public Integer read() {
				Integer item = super.read();
				System.out.println("reading item = " + item);
				return item;
			}
		};
	
<no_super_class>