WithParameter(Source<Ex2> master, Source<Ex1> model, int parameter) {
   OperatorDescription.Builder builder0 = new OperatorDescription.Builder(MasterBranch.class);
   builder0.declare(MasterBranchFlow.class, MasterBranchFlowImpl.class, "withParameter");
   builder0.declareParameter(Ex2.class);
   builder0.declareParameter(Ex1.class);
   builder0.declareParameter(int.class);
   builder0.addInput(
       "master",
       Ex2.class,
       new ShuffleKey(
           Arrays.asList(new String[] {"string"}), Arrays.asList(new ShuffleKey.Order[] {})));
   builder0.addInput(
       "model",
       Ex1.class,
       new ShuffleKey(
           Arrays.asList(new String[] {"string"}), Arrays.asList(new ShuffleKey.Order[] {})));
   builder0.addOutput("high", Ex1.class);
   builder0.addOutput("low", Ex1.class);
   builder0.addOutput("stop", Ex1.class);
   builder0.addParameter("parameter", int.class, parameter);
   builder0.addAttribute(FlowBoundary.SHUFFLE);
   FlowElementResolver resolver0 = builder0.toResolver();
   resolver0.resolveInput("master", master);
   resolver0.resolveInput("model", model);
   this.high = resolver0.resolveOutput("high");
   this.low = resolver0.resolveOutput("low");
   this.stop = resolver0.resolveOutput("stop");
 }
 Selection(Source<Ex2> master, Source<Ex1> model) {
   OperatorDescription.Builder builder0 = new OperatorDescription.Builder(MasterCheck.class);
   builder0.declare(MasterCheckFlow.class, MasterCheckFlowImpl.class, "selection");
   builder0.declareParameter(Ex2.class);
   builder0.declareParameter(Ex1.class);
   builder0.addInput(
       "master",
       Ex2.class,
       new ShuffleKey(
           Arrays.asList(new String[] {"string"}), Arrays.asList(new ShuffleKey.Order[] {})));
   builder0.addInput(
       "model",
       Ex1.class,
       new ShuffleKey(
           Arrays.asList(new String[] {"string"}), Arrays.asList(new ShuffleKey.Order[] {})));
   builder0.addOutput("found", Ex1.class);
   builder0.addOutput("missed", Ex1.class);
   builder0.addAttribute(
       new OperatorHelper("selector", Arrays.asList(new Class<?>[] {List.class, Ex1.class})));
   builder0.addAttribute(FlowBoundary.SHUFFLE);
   FlowElementResolver resolver0 = builder0.toResolver();
   resolver0.resolveInput("master", master);
   resolver0.resolveInput("model", model);
   this.found = resolver0.resolveOutput("found");
   this.missed = resolver0.resolveOutput("missed");
 }
 Selection(Source<Ex2> master, Source<Ex1> model) {
   OperatorDescription.Builder builder1 = new OperatorDescription.Builder(MasterBranch.class);
   builder1.declare(MasterBranchFlow.class, MasterBranchFlowImpl.class, "selection");
   builder1.declareParameter(Ex2.class);
   builder1.declareParameter(Ex1.class);
   builder1.addInput(
       "master",
       Ex2.class,
       new ShuffleKey(
           Arrays.asList(new String[] {"string"}), Arrays.asList(new ShuffleKey.Order[] {})));
   builder1.addInput(
       "model",
       Ex1.class,
       new ShuffleKey(
           Arrays.asList(new String[] {"string"}), Arrays.asList(new ShuffleKey.Order[] {})));
   builder1.addOutput("high", Ex1.class);
   builder1.addOutput("low", Ex1.class);
   builder1.addOutput("stop", Ex1.class);
   builder1.addAttribute(
       new OperatorHelper("selector", Arrays.asList(new Class<?>[] {List.class, Ex1.class})));
   builder1.addAttribute(FlowBoundary.SHUFFLE);
   FlowElementResolver resolver1 = builder1.toResolver();
   resolver1.resolveInput("master", master);
   resolver1.resolveInput("model", model);
   this.high = resolver1.resolveOutput("high");
   this.low = resolver1.resolveOutput("low");
   this.stop = resolver1.resolveOutput("stop");
 }