private static List<VarVersionNode> getReversedPostOrder(Collection<VarVersionNode> roots) {
    List<VarVersionNode> lst = new LinkedList<>();
    Set<VarVersionNode> setVisited = new HashSet<>();

    for (VarVersionNode root : roots) {
      List<VarVersionNode> lstTemp = new LinkedList<>();
      addToReversePostOrderListIterative(root, lstTemp, setVisited);
      lst.addAll(lstTemp);
    }

    return lst;
  }
private static List<VarVersionNode> getReversedPostOrder(Collection<VarVersionNode> roots)