enum = node.getInNodes();
_enum = node.getInNodes();
  private void DFS(OPT_SortedGraphNode node, int numNodes) {    // push node on to the emulated activation stack    push(node);    Enumeration[] nodeEnum = new Enumeration[numNodes];  recurse:    while (!empty()) {      node = (OPT_SortedGraphNode) peek();      // check if we were already processing this node, if so we would have      // saved the state of the enumeration in the loop below      Enumeration enum = nodeEnum[node.getNumber()];      if (enum == null) {        // mark node as visited        node.setSortMarker(sortMarker);        if (forward) {          enum = node.getOutNodes();        }         else {          enum = node.getInNodes();        }      }      while (enum.hasMoreElements()) {        OPT_SortedGraphNode target =           (OPT_SortedGraphNode) enum.nextElement();        // have we visited target?        if (target.getSortMarker() != sortMarker) {          // simulate a recursive call          // but first save the enumeration state for resumption later          nodeEnum[node.getNumber()] = enum;          push(target);          continue recurse;          }      }