public Set<Vertex> getDescendants(Vertex[] seedVertices) {
		Edge edge;
		Vertex parent, child;
		Set<Vertex> descendants = new HashSet<>(2 * seedVertices.length);
		Set<Vertex> pending = new HashSet<>(seedVertices.length);
		Set<Vertex> newlyPending = new HashSet<>(seedVertices.length);
		for (Vertex seedVertice : seedVertices) {
			pending.add(seedVertice);
		}

		while (!pending.isEmpty()) {
			Iterator<Vertex> iter = pending.iterator();
			while (iter.hasNext()) {
				parent = iter.next();
				edge = vertices.getFirstOutgoingEdge(parent);
				descendants.add(parent);
				iter.remove();
				while (edge != null) {
					child = edge.to();
					if (!descendants.contains(child)) {
						newlyPending.add(child);
					}
					edge = edges.getNextEdgeWithSameFrom(edge);
				}
			}
			pending.addAll(newlyPending);
			newlyPending.clear();
		}
		return descendants;
	}
Returns a Set (HashSet) of all vertices descended from a vertex in the
 given array.
Ghidra/Framework/Generic/src/main/java/ghidra/util/graph/DirectedGraph.java