def _resolve_child(self, path):
        'Return a member generator by a dot-delimited path'
        obj = self

        for component in path.split('.'):
            ptr = obj
            if not isinstance(ptr, Permuter):
                raise self.MessageNotFound("Bad element path [wrong type]")

            # pylint: disable=protected-access
            found_gen = (_ for _ in ptr._generators if _.name() == component)

            obj = next(found_gen, None)

            if not obj:
                raise self.MessageNotFound("Path '{}' unresolved to member."
                                           .format(path))
        return ptr, obj
Return a member generator by a dot-delimited path