private void invertExistingDirectionalLabels(Graph g, int prev, BitSet visited, Map<Edge, Edge> replacement, BitSet dbAtoms, int u) { visited.set(u); final int d = g.degree(u); for (int j = 0; j < d; ++j) { final Edge e = g.edgeAt(u, j); int v = e.other(u); if (v == prev) continue; Edge f = replacement.get(e); if (f == null) { replacement.put(e, e.inverse()); if (!visited.get(v)) { if (dbAtoms.get(v)) invertExistingDirectionalLabels(g, u, visited, replacement, dbAtoms, v); } } } }
private void flip(Edge first, int u, BitSet dbAtoms) { if (ordering[first.other(u)] < ordering[u]) { if (first.bond(u) == Bond.UP) invertExistingDirectionalLabels(g, u, new BitSet(), invertExistingDirectionalLabels(g, u, new BitSet(),