code: def visitvalues(self, func):
          
  
          def _visit(obj):
              yield obj
              keys = sorted(getattr(obj, "keys", lambda: [])())
              for k in keys:
                  for v in _visit(obj[k]):
                      yield v
  
          for each_obj in islice(_visit(self), 1, None):
              value = func(each_obj)
              if value is not None:
                  return value
docs: Run ``func`` on each object.
  
          Note: If ``func`` returns ``None`` (or doesn't return),
                iteration continues. However, if ``func`` returns
                anything else, it ceases and returns that value.
  
          Examples
          --------
          >>> import zarr
          >>> g1 = zarr.group()
          >>> g2 = g1.create_group('foo')
          >>> g3 = g1.create_group('bar')
          >>> g4 = g3.create_group('baz')
          >>> g5 = g3.create_group('quux')
          >>> def print_visitor(obj):
          ...     print(obj)
          >>> g1.visitvalues(print_visitor)
          <zarr.hierarchy.Group '/bar'>
          <zarr.hierarchy.Group '/bar/baz'>
          <zarr.hierarchy.Group '/bar/quux'>
          <zarr.hierarchy.Group '/foo'>
          >>> g3.visitvalues(print_visitor)
          <zarr.hierarchy.Group '/bar/baz'>
          <zarr.hierarchy.Group '/bar/quux'>