low-level path introspection utility functions
turn two or more Iterables into a single iterator reversing