class XmlJobConfiguration {

	@Bean
	public XStreamMarshaller customerCreditMarshaller() {<FILL_FUNCTION_BODY>}

	@Bean
	@StepScope
	public StaxEventItemReader<CustomerCredit> itemReader(@Value("#{jobParameters[inputFile]}") Resource resource) {
		return new StaxEventItemReaderBuilder<CustomerCredit>().name("itemReader")
			.resource(resource)
			.addFragmentRootElements("customer")
			.unmarshaller(customerCreditMarshaller())
			.build();
	}

	@Bean
	@StepScope
	public StaxEventItemWriter<CustomerCredit> itemWriter(
			@Value("#{jobParameters[outputFile]}") WritableResource resource) {
		return new StaxEventItemWriterBuilder<CustomerCredit>().name("itemWriter")
			.resource(resource)
			.marshaller(customerCreditMarshaller())
			.rootTagName("customers")
			.overwriteOutput(true)
			.build();
	}

	@Bean
	public Job job(JobRepository jobRepository, JdbcTransactionManager transactionManager,
			ItemReader<CustomerCredit> itemReader, ItemWriter<CustomerCredit> itemWriter) {
		return new JobBuilder("ioSampleJob", jobRepository)
			.start(new StepBuilder("step1", jobRepository).<CustomerCredit, CustomerCredit>chunk(2, transactionManager)
				.reader(itemReader)
				.processor(new CustomerCreditIncreaseProcessor())
				.writer(itemWriter)
				.build())
			.build();
	}

}

		XStreamMarshaller marshaller = new XStreamMarshaller();
		marshaller
			.setAliases(Map.of("customer", CustomerCredit.class, "credit", BigDecimal.class, "name", String.class));
		marshaller.setTypePermissions(new ExplicitTypePermission(new Class[] { CustomerCredit.class }));
		return marshaller;
	
<no_super_class>