public void visitTezOp(TezOperator tezOper) throws VisitorException {

    TezOperPlan tezPlan = getPlan();
    List<TezOperator> successors = tezPlan.getSuccessors(tezOper);
    if (successors != null) {
      for (TezOperator successor : successors) {
        EdgeProperty edge = null;
        if (successor instanceof ReduceOper) {
          edge =
              new EdgeProperty(
                  ConnectionPattern.BIPARTITE,
                  SourceType.STABLE,
                  new OutputDescriptor(OnFileSortedOutput.class.getName(), null),
                  new InputDescriptor(ShuffledMergedInput.class.getName(), null));
        } else {
          edge = tezPlan.new DependencyEdge();
        }
        tezPlan.annotateEdge(tezOper, successor, edge);
      }
    }
  }
 public TezEdgeAnnotator(TezOperPlan plan) {
   super(plan, new DependencyOrderWalker<TezOperator, TezOperPlan>(plan));
   // this.inIllustrator = inIllustrator;
   log.info("MR plan size before optimization: " + plan.size());
 }