void propagateLookaheads(Iterator originatorLookahead)	{
			boolean change = false;
			
			/// return when if nothing to propagate
			if (needsPropagation == false && (originatorLookahead == null || originatorLookahead.hasNext() == false))
				return;
			
			if (originatorLookahead != null)
				change = addLookahead(originatorLookahead);	// accept lookahead
			
			// if changed or need it, propagate across all linked items
			if (change || needsPropagation)	{
				needsPropagation = false;
			
				for (int i = 0; i < propagateItems.size(); i++)	{
					LALRRuleStateItem item = (LALRRuleStateItem) propagateItems.get(i);
					item.propagateLookaheads(lookahead.keySet().iterator());
				}
			}
		}