+ slices_.resize(above + 1);
+}
+
+
+void DocIterator::append(vector<CursorSlice> const & x)
+{
+ slices_.insert(slices_.end(), x.begin(), x.end());
+}
+
+
+void DocIterator::append(DocIterator::idx_type idx, pos_type pos)
+{
+ slices_.push_back(CursorSlice());
+ top().idx() = idx;
+ top().pos() = pos;
+}
+
+
+ostream & operator<<(ostream & os, DocIterator const & dit)
+{
+ for (size_t i = 0, n = dit.depth(); i != n; ++i)
+ os << " " << dit[i] << "\n";
+ return os;