code: def clone(self, *args, **overrides):
          
          link = overrides.pop('link', True)
          settings = dict(self.get_param_values(), **overrides)
          if 'id' not in settings:
              settings['id'] = self.id
          if not args and link:
              settings['plot_id'] = self._plot_id
  
          pos_args = getattr(self, '_' + type(self).__name__ + '__pos_params', [])
          return self.__class__(*(settings[n] for n in pos_args),
                                **{k:v for k,v in settings.items()
                                   if k not in pos_args})
docs: Returns a clone of the object with matching parameter values
          containing the specified args and kwargs.