public <IN, OUT> StreamConfigChainer chain(
OperatorID operatorID,
OneInputStreamOperator<IN, OUT> operator,
TypeSerializer<IN> inputSerializer,
TypeSerializer<OUT> outputSerializer) {
chainIndex++;
tailConfig.setChainedOutputs(Collections.singletonList(
new StreamEdge(
new StreamNode(null, tailConfig.getChainIndex(), null, null, null, null, null, null),
new StreamNode(null, chainIndex, null, null, null, null, null, null),
0,
Collections.<String>emptyList(),
null,
null)));
tailConfig = new StreamConfig(new Configuration());
tailConfig.setStreamOperator(checkNotNull(operator));
tailConfig.setOperatorID(checkNotNull(operatorID));
tailConfig.setTypeSerializerIn1(inputSerializer);
tailConfig.setTypeSerializerOut(outputSerializer);
tailConfig.setChainIndex(chainIndex);
chainedConfigs.put(chainIndex, tailConfig);
return this;
}