private int dfsVisit(PackInfo u, Map names, Map edges) { u.colour = PackInfo.GREY; List deps = u.getDependencies(); if (deps != null) { for (int i = 0; i < deps.size(); i++) { String name = (String) deps.get(i); PackInfo v = (PackInfo) names.get(name); if (v == null) { System.out.println("Failed to find dependency: " + name); return -1; } Edge edge = new Edge(u, v); if (edges.get(edge) == null) edges.put(edge, new Integer(v.colour)); if (v.colour == PackInfo.WHITE) { final int result = dfsVisit(v, names, edges); if (result != 0) return result; } } } u.colour = PackInfo.BLACK; return 0; }