def METHOD_NAME(self, key):
    "Like `get`, but also return the path taken to the value."
    if key in self.keys():
        return (key,), self[key]
    else:
        key_path, res = (None, None)
        for sub_key, v in self.items():
            if isinstance(v, self.__class__):
                key_path, res = v.METHOD_NAME(key)
            elif hasattr(v, 'get'):
                res = v.get(key)
                key_path = (key,) if res is not None else None
            if res is not None and key_path is not None:
                key_path = (sub_key,) + key_path
                break
        return key_path, res