root_level in show_sub_menu

I end up creating a menu like this in just about every project. What I always need to do is print a sub_menu that starts after the root_level specified and not at the selected node.  This will include all ancestors, descendants of the selected node (up to root_level), plus every sibling of the selected node and all their descendants.

@superdmp and I discussed a menu like this before.  Does anybody else ever need to create menus this way?