public Object nextElement()	{
			if (it1 != null)
				if (it1.hasNext())
					return it1.next();
				else
				if (it.hasNext())
					return (it1 = ((List) ((Map.Entry)it.next()).getValue()).iterator()).next();

			if (it2.hasNext())
				return it2.next();
				
			throw new IllegalStateException("Do not call nextElement() when hasMoreElements() returned false!");
		}