def METHOD_NAME(self, key):
    "Find the first value within the tree which has the key."
    if key in self.keys():
        return self[key]
    else:
        res = None
        for v in self.values():
            # This could get weird if the actual expected returned value
            # is None, especially in teh case of overlap. Any ambiguity
            # would be resolved by get_path(s).
            if hasattr(v, 'get'):
                res = v.METHOD_NAME(key)
            if res is not None:
                break
        return res