The join iterator now manages iteration at 'one level' of the join, as subjoins are iterated, new iterators are created, forming a stack. Added internal documentation in cursor.h.