I am currently poking around in the code and got the feeling that our iterators have a tendency of being used wrongly, possibly because parts are not really well implemented, and possibly because we don't have explanations on what to use when.
The result was e.g. a 20% runtime increase when loading the UserGuide. I am tempted to collapse all the iterator classes into one (or two, for a const variant) 'DocIterator'. It's pretty much what we have now, except the question 'which one to use' would not arise, and 'operator++()' wouldn't do 'the right thing'. I don't think that's a major obstacle as e.g. ParIterator does have somewhat strange semantics anyway. Comments? Andre'