private FlowDef normalizeTaps( FlowDef flowDef ) { Set<Tap> taps = new HashSet<>(); Map<String, Tap> sources = flowDef.getSourcesCopy(); Map<String, Tap> sinks = flowDef.getSinksCopy(); Map<String, Tap> traps = flowDef.getTrapsCopy(); Map<String, Tap> checkpoints = flowDef.getCheckpointsCopy(); boolean sourcesHasDupes = addTaps( sources, taps ); boolean sinksHasDupes = addTaps( sinks, taps ); boolean trapsHasDupes = addTaps( traps, taps ); boolean checkpointsHasDupes = addTaps( checkpoints, taps ); if( sourcesHasDupes ) normalize( taps, sources ); if( sinksHasDupes ) normalize( taps, sinks ); if( trapsHasDupes ) normalize( taps, traps ); if( checkpointsHasDupes ) normalize( taps, checkpoints ); return Flows.copy( flowDef, sources, sinks, traps, checkpoints ); }