*/
	public void build() throws OrderingConstraintException {		// Build map of detector class names to their factories		Map<String, DetectorFactory> factoryMap = buildFactoryMap();		// Get inter-pass ordering constraints		List<DetectorOrderingConstraint> interPassConstraintList =			new LinkedList<DetectorOrderingConstraint>();		for (Iterator<Plugin> i = pluginList.iterator(); i.hasNext(); ) {			Plugin plugin = i.next();			copyTo(plugin.interPassConstraintIterator(), interPassConstraintList);		}		// Build inter-pass constraint graph		ConstraintGraph interPassConstraintGraph = buildConstraintGraph(factoryMap, interPassConstraintList);		if (DEBUG) System.out.println(interPassConstraintGraph.getNumVertices() +			" nodes in inter-pass constraint graph");		// Depth first search of constraint graph.  Will throw exception		// if the graph contains a cycle.		DepthFirstSearch<ConstraintGraph, ConstraintEdge, DetectorNode> dfs =			getDepthFirstSearch(interPassConstraintGraph);		// Build list of analysis passes.		buildPassList(interPassConstraintGraph);	}