code: def get(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.get(key)
                  if res is not None:
                      break
              return ref get(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.get(key)
                  if res is not None:
                      break
              return res
docs: Find the first value within the tree which has the key.