public Iterator<Integer> iterator(final Event e) {
if (single) {
final ItemType t = getExpr().getSingle(e);
if (t == null)
return null;
if (t.numTypes() == 0)
return null;
return new SingleItemIterator<Integer>(t.getTypes().get(0).getId());
}
final Iterator<? extends ItemType> iter = getExpr().iterator(e);
if (iter == null || !iter.hasNext())