public GraphMatcherPersistent addMatches(Edge e)
	{
		if((matchQueue == null) || (allMatches == null))
			initializeMatching();
		/**
		 * Ordered pattern edges, according to label.
		 */
		SortedSet<Edge> sortedEdges = new TreeSet<Edge>(new EdgeComparator(monitor));
		sortedEdges.addAll(pattern.getEdges());

		int edgeId = 0; // TODO
		int matchId = 0; // TODO
		for(Edge eP : sortedEdges)
		{
			// no generic pattern edges in initial matches
			if(!((eP instanceof EdgeP) && ((EdgeP) eP).isGeneric()))
			{
				monitor.lf("edge [] has id []", eP, new Integer(edgeId));
				monitor.dbg(D_G.D_MATCHING_INITIAL, "trying edges: [] : []", eP, e);
				if(isMatch(eP, e))
				{
					Match m = addInitialMatch(e, eP, edgeId + ":" + matchId);
					monitor.incrementMatchCount();
					monitor.lf("new single match: []", m.toString());
					matchId++;
				}
			}
		}
		return this;
	}