code: def update_options(cls, options, items):
          
          # Get new backend
          backend_spec = items.get('backend', Store.current_backend)
          split = backend_spec.split(':')
          backend, mode = split if len(split)==2 else (split[0], 'default')
          if ':' not in backend_spec:
              backend_spec += ':default'
  
          if 'max_branches' in items:
              print('Warning: The max_branches option is now deprecated. Ignoring.')
              del items['max_branches']
  
          # Get previous backend
          prev_backend = Store.current_backend
          renderer = Store.renderers[prev_backend]
          prev_backend_spec = prev_backend+':'+renderer.mode
  
          # Update allowed formats
          for p in ['fig', 'holomap']:
              cls.allowed[p] = list_formats(p, backend_spec)
  
          # Return if backend invalid and let validation error
          if backend not in Store.renderers:
              options['backend'] = backend_spec
              return options
  
          # Get backend specific options
          backend_options = dict(cls._backend_options[backend_spec])
          cls._backend_options[prev_backend_spec] = {k: v for k, v in cls.options.items()
                                                     if k in cls.remembered}
  
          # Fill in remembered options with defaults
          for opt in cls.remembered:
              if opt not in backend_options:
                  backend_options[opt] = cls.defaults[opt]
  
          # Switch format if mode does not allow it
          for p in ['fig', 'holomap']:
              if backend_options.get(p) not in cls.allowed[p]:
                  backend_options[p] = cls.allowed[p][0]
  
          # Ensure backend and mode are set
          backend_options['backend'] = backend_spec
          backend_options['mode'] = mode
  
          return backend_options
docs: Switch default options and backend if new backend is supplied in
          items.