class BootstrapTransformation {

	@VisibleForTesting
	StreamConfig getConfig(OperatorID operatorID, StateBackend stateBackend, StreamOperator<TaggedOperatorSubtaskState> operator) {
		final StreamConfig config;
		if (keyType == null) {
			config = new BoundedStreamConfig();
		} else {
			TypeSerializer<?> keySerializer = keyType.createSerializer(dataSet.getExecutionEnvironment().getConfig());
			config = new BoundedStreamConfig(keySerializer, originalKeySelector);
		}

		config.setStreamOperator(operator);
		config.setOperatorName(operatorID.toHexString());
		config.setOperatorID(operatorID);
		config.setStateBackend(stateBackend);
		return config;
	}

	  BootstrapTransformation(
		DataSet<T> dataSet,
		OptionalInt operatorMaxParallelism,
		SavepointWriterOperatorFactory factory);
	 <K> BootstrapTransformation(
		DataSet<T> dataSet,
		OptionalInt operatorMaxParallelism,
		SavepointWriterOperatorFactory factory,
		@Nonnull KeySelector<T, K> keySelector,
		@Nonnull TypeInformation<K> keyType);

}