private List rule(String identifier, List unionseq)	{
		if (initialNonterminals != null && initialNonterminals.indexOf(identifier) < 0)
			initialNonterminals.add(identifier);

		for (int i = 0; i < unionseq.size(); i++)	{
			List deep = (List) unionseq.get(i);
			List flat = ArtificialRule.flattenLists(deep, new ArrayList());
			flat.add(0, identifier);
			unionseq.set(i, flat);
		}
		return unionseq;
	}