
public abstract class Builder<E> {
	private E m_instance;
	
	protected Builder() {
		m_instance = null;
	}
	
	protected abstract E construct();
	
	public E build() {
		if (m_instance == null) {
			m_instance = construct();
		}
		return m_instance;
	}
}
