code: public void addControlDependency(SDVariable controlDependency){
          String cdN = controlDependency.getVarName();
          String n = this.getVarName();
          Variable v = sameDiff.getVariables().get(n);
          if(v.getControlDeps() == null)
              v.setControlDeps(new ArrayList<String>());
          if(!v.getControlDeps().contains(cdN))
              v.getControlDeps().add(cdN);
  
          Variable v2 = sameDiff.getVariables().get(cdN);
          if(v2.getControlDepsForVar() == null)
              v2.setControlDepsForVar(new ArrayList<String>());
          if(!v2.getControlDepsForVar().contains(n))
              v2.getControlDepsForVar().add(n);
      }
docs: Add a control dependency for this variable on the specified variable.<br>
  Control depnedencies can be used to enforce the execution order.
  For example, if a control dependency X->Y exists, then Y will only be executed after X is executed - even
  if Y wouldn't normally depend on the result/values of X.
  
  @param controlDependency Control dependency to add for this variable