class OperatorChain implements StreamStatusMaintainer {

	public void prepareSnapshotPreBarrier(long checkpointId) throws Exception {
		// go forward through the operator chain and tell each operator
		// to prepare the checkpoint
		for (StreamOperatorWrapper<?, ?> operatorWrapper : getAllOperators()) {
			if (!operatorWrapper.isClosed()) {
				operatorWrapper.getStreamOperator().prepareSnapshotPreBarrier(checkpointId);
			}
		}
	}

	public  OperatorChain(
			StreamTask<OUT, OP> containingTask,
			RecordWriterDelegate<SerializationDelegate<StreamRecord<OUT>>> recordWriterDelegate);
	@VisibleForTesting  OperatorChain(
			List<StreamOperatorWrapper<?, ?>> allOperatorWrappers,
			RecordWriterOutput<?>[] streamOutputs,
			WatermarkGaugeExposingOutput<StreamRecord<OUT>> mainOperatorOutput,
			StreamOperatorWrapper<OUT, OP> mainOperatorWrapper);

}