private static void addToPostReversePostOrderList(Statement stat, List<? super Statement> lst, HashSet<? super Statement> setVisited) {

    if (setVisited.contains(stat)) { // because of not considered exception edges, s. isExitComponent. Should be rewritten, if possible.
      return;
    }

    setVisited.add(stat);

    for (StatEdge prededge : stat.mapPredEdges.computeIfAbsent(StatEdge.TYPE_REGULAR, t -> new ArrayList<>())) {
      Statement pred = prededge.getSource();

      if (!setVisited.contains(pred)) {
        addToPostReversePostOrderList(pred, lst, setVisited);
      }
    }

    for (StatEdge prededge : stat.mapPredEdges.computeIfAbsent(StatEdge.TYPE_EXCEPTION, t -> new ArrayList<>())) {
      Statement pred = prededge.getSource();

      if (!setVisited.contains(pred)) {
        addToPostReversePostOrderList(pred, lst, setVisited);
      }
    }

    lst.add(0, stat);
  }
Gets the implicitly defined variables in this statement.

@return A list of {@link VarExprent}s that are implicitly defined. Can be null or empty if none exist.
src/org/jetbrains/java/decompiler/modules/decompiler/stats/Statement.java