code: def _AtNonLeaf(self, attr_value, path):
      
      try:
        # Check first for iterables
        # If it's a dictionary, we yield it
        if isinstance(attr_value, dict):
          yield attr_value
        else:
          # If it's an iterable, we recurse on each value.
          for sub_obj in attr_value:
            for value in self.Expand(sub_obj, path[1:]):
              yield value
      except TypeError:  # This is then not iterable, we recurse with the value
        for value in self.Expand(attr_value, path[1:]):
          yield value
docs: Called when at a non-leaf value. Should recurse and yield values.