+int descendant_depth(const Path &path, const Path &parent)
+{
+ Path::Iterator i=path.begin();
+ Path::Iterator j=parent.begin();
+ for(; (i!=path.end() && j!=parent.end() && *i==*j); ++i, ++j) ;
+
+ if(j!=parent.end())
+ return -1;
+
+ int result = 0;
+ for(; i!=path.end(); ++i)
+ ++result;
+
+ return result;
+}
+