class JobFlowBuilder extends FlowBuilder<FlowJobBuilder> {

	private final FlowJobBuilder parent;

	public JobFlowBuilder(FlowJobBuilder parent) {
		super(parent.getName());
		this.parent = parent;
	}

	public JobFlowBuilder(FlowJobBuilder parent, Step step) {
		super(parent.getName());
		this.parent = parent;
		start(step);
	}

	public JobFlowBuilder(FlowJobBuilder parent, JobExecutionDecider decider) {
		super(parent.getName());
		this.parent = parent;
		start(decider);
	}

	public JobFlowBuilder(FlowJobBuilder parent, Flow flow) {
		super(parent.getName());
		this.parent = parent;
		start(flow);
	}

	/**
	 * Build a flow and inject it into the parent builder. The parent builder is then
	 * returned so it can be enhanced before building an actual job. Normally called
	 * explicitly via {@link #end()}.
	 *
	 * @see org.springframework.batch.core.job.builder.FlowBuilder#build()
	 */
	@Override
	public FlowJobBuilder build() {<FILL_FUNCTION_BODY>}

}

		Flow flow = flow();

		if (flow instanceof InitializingBean) {
			try {
				((InitializingBean) flow).afterPropertiesSet();
			}
			catch (Exception e) {
				throw new FlowBuilderException(e);
			}
		}

		parent.flow(flow);
		return parent;
	
<methods>public void <init>(java.lang.String) ,public org.springframework.batch.core.job.builder.FlowJobBuilder build() ,public final org.springframework.batch.core.job.builder.FlowJobBuilder end() ,public FlowBuilder<org.springframework.batch.core.job.builder.FlowJobBuilder> from(org.springframework.batch.core.Step) ,public UnterminatedFlowBuilder<org.springframework.batch.core.job.builder.FlowJobBuilder> from(org.springframework.batch.core.job.flow.JobExecutionDecider) ,public FlowBuilder<org.springframework.batch.core.job.builder.FlowJobBuilder> from(org.springframework.batch.core.job.flow.Flow) ,public FlowBuilder<org.springframework.batch.core.job.builder.FlowJobBuilder> next(org.springframework.batch.core.Step) ,public UnterminatedFlowBuilder<org.springframework.batch.core.job.builder.FlowJobBuilder> next(org.springframework.batch.core.job.flow.JobExecutionDecider) ,public FlowBuilder<org.springframework.batch.core.job.builder.FlowJobBuilder> next(org.springframework.batch.core.job.flow.Flow) ,public TransitionBuilder<org.springframework.batch.core.job.builder.FlowJobBuilder> on(java.lang.String) ,public SplitBuilder<org.springframework.batch.core.job.builder.FlowJobBuilder> split(org.springframework.core.task.TaskExecutor) ,public FlowBuilder<org.springframework.batch.core.job.builder.FlowJobBuilder> start(org.springframework.batch.core.Step) ,public UnterminatedFlowBuilder<org.springframework.batch.core.job.builder.FlowJobBuilder> start(org.springframework.batch.core.job.flow.JobExecutionDecider) ,public FlowBuilder<org.springframework.batch.core.job.builder.FlowJobBuilder> start(org.springframework.batch.core.job.flow.Flow) <variables>private final non-sealed org.springframework.batch.core.job.flow.support.state.EndState completedState,private org.springframework.batch.core.job.flow.State currentState,private int decisionCounter,private boolean dirty,private int endCounter,private final non-sealed org.springframework.batch.core.job.flow.support.state.EndState failedState,private org.springframework.batch.core.job.flow.support.SimpleFlow flow,private int flowCounter,private final non-sealed java.lang.String name,private final non-sealed java.lang.String prefix,private int splitCounter,private final Map<java.lang.Object,org.springframework.batch.core.job.flow.State> states,private int stepCounter,private final non-sealed org.springframework.batch.core.job.flow.support.state.EndState stoppedState,private final Map<java.lang.String,org.springframework.batch.core.job.flow.State> tos,private final List<org.springframework.batch.core.job.flow.support.StateTransition> transitions