class SynchronizedItemStreamWriterBuilder<T> {

	private ItemStreamWriter<T> delegate;

	/**
	 * Set the delegate {@link ItemStreamWriter}.
	 * @param delegate the delegate to set
	 * @return this instance for method chaining
	 */
	public SynchronizedItemStreamWriterBuilder<T> delegate(ItemStreamWriter<T> delegate) {
		this.delegate = delegate;

		return this;
	}

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

}

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

		SynchronizedItemStreamWriter<T> writer = new SynchronizedItemStreamWriter<>();
		writer.setDelegate(this.delegate);
		return writer;
	
<no_super_class>