docs: def create(self, device, setup=None, protocols=None, control_server=None):
          """
          Creates a :class:`Simulation` according to the supplied parameters.
  
          :param device: Name of device.
          :param setup: Name of the setup for device creation.
          :param protocols: Dictionary where each key is assigned a dictionary with options for the
                            corresponding :class:`~lewis.core.adapters.Adapter`. For available
                            protocols, see :meth:`get_protocols`.
          :param control_server: String to construct a control server (host:port).
          :return: Simulation object according to input parameters.
          """
  
          device_builder = self._reg.device_builder(device, self._rv)
          device = device_builder.create_device(setup)
  
          adapters = []
  
          if protocols is not None:
              for protocol, options in protocols.items():
                  interface = device_builder.create_interface(protocol)
                  interface.device = device
  
                  adapter = interface.adapter(options=options or {})
                  adapter.interface = interface
  
                  adapters.append(adapter)
  
          return Simulation(
              device=device,
              adapters=adapters,
              device_builder=device_builder,
              control_server=control_server)