code: def relabel(self, label=None, group=None, depth=1):
          
          relabelled = super(DynamicMap, self).relabel(label, group, depth)
          if depth > 0:
              from ..util import Dynamic
              def dynamic_relabel(obj, **dynkwargs):
                  return obj.relabel(group=group, label=label, depth=depth-1)
              dmap = Dynamic(self, streams=self.streams, operation=dynamic_relabel)
              dmap.data = relabelled.data
              with util.disable_constant(dmap):
                  dmap.group = relabelled.group
                  dmap.label = relabelled.label
              return dmap
          return relabelled
docs: Clone object and apply new group and/or label.
  
          Applies relabeling to children up to the supplied depth.
  
          Args:
              label (str, optional): New label to apply to returned object
              group (str, optional): New group to apply to returned object
              depth (int, optional): Depth to which relabel will be applied
                  If applied to container allows applying relabeling to
                  contained objects up to the specified depth
  
          Returns:
              Returns relabelled object