class SynchronizedItemStreamReaderBuilder<T> {

	private ItemStreamReader<T> delegate;

	/**
	 * The item stream reader to use as a delegate. Items are read from the delegate and
	 * passed to the caller in
	 * {@link org.springframework.batch.item.support.SynchronizedItemStreamReader#read()}.
	 * @param delegate the delegate to set
	 * @return this instance for method chaining
	 * @see SynchronizedItemStreamReader#setDelegate(ItemStreamReader)
	 */
	public SynchronizedItemStreamReaderBuilder<T> delegate(ItemStreamReader<T> delegate) {
		this.delegate = delegate;

		return this;
	}

	/**
	 * Returns a fully constructed {@link SynchronizedItemStreamReader}.
	 * @return a new {@link SynchronizedItemStreamReader}
	 */
	public SynchronizedItemStreamReader<T> build() {<FILL_FUNCTION_BODY>}

}

		Assert.notNull(this.delegate, "A delegate is required");

		SynchronizedItemStreamReader<T> reader = new SynchronizedItemStreamReader<>();
		reader.setDelegate(this.delegate);
		return reader;
	
<no_super_class>