code: def register(cls, associations, backend, style_aliases={}):
          
          if backend not in cls.registry:
              cls.registry[backend] = {}
          cls.registry[backend].update(associations)
  
          groups = Options._option_groups
          if backend not in cls._options:
              cls._options[backend] = OptionTree([], groups=groups)
          if backend not in cls._custom_options:
              cls._custom_options[backend] = {}
  
          for view_class, plot in cls.registry[backend].items():
              expanded_opts = [opt for key in plot.style_opts
                               for opt in style_aliases.get(key, [])]
              style_opts = sorted(set(opt for opt in (expanded_opts + plot.style_opts)
                                      if opt not in plot._disabled_opts))
              plot_opts = [k for k in plot.params().keys() if k not in ['name']]
  
              with param.logging_level('CRITICAL'):
                  plot.style_opts = style_opts
  
              plot_opts =  Keywords(plot_opts,  target=view_class.__name__)
              style_opts = Keywords(style_opts, target=view_class.__name__)
  
              opt_groups = {'plot':   Options(allowed_keywords=plot_opts),
                            'output': Options(allowed_keywords=Options._output_allowed_kws),
                            'style': Options(allowed_keywords=style_opts),
                            'norm':  Options(framewise=False, axiswise=False,
                                             allowed_keywords=['framewise',
                                                               'axiswise'])}
  
              name = view_class.__name__
              cls._options[backend][name] = opt_groups
docs: Register the supplied dictionary of associations between
          elements and plotting classes to the specified backend.