code: def deserialize(
      self,
      ui_value: Optional[List[int]],
      widget_id: str = "",
  ) -> List[T]:
      current_value: List[int] = (
          ui_value if ui_value is not None else self.default_value
      )
      return [self.options[i] for i in current_value]
  
imports: from dataclasses import dataclass
  from textwrap import dedent
  from typing import TYPE_CHECKING, Any, Callable, Generic, List, Optional, Sequence, Union, cast, overload
  from streamlit.elements.form import current_form_id
  from streamlit.elements.utils import check_callback_rules, check_session_state_rules, get_label_visibility_proto_value, maybe_coerce_enum_sequence
  from streamlit.errors import StreamlitAPIException
  from streamlit.proto.MultiSelect_pb2 import MultiSelect
  from streamlit.runtime.metrics_util import gather_metrics
  from streamlit.runtime.scriptrunner import ScriptRunContext, get_script_run_ctx
  from streamlit.runtime.state import WidgetArgs, WidgetCallback, WidgetKwargs, register_widget
  from streamlit.runtime.state.common import compute_widget_id
  from streamlit.type_util import Key, LabelVisibility, OptionSequence, T, check_python_comparable, ensure_indexable, is_iterable, is_type, maybe_raise_label_warnings, to_key
label_desc: Use image node_id 2 for calling the MultiSelectSerde obj's underlying member method code with example usage: obj.deserialize(ui_value, widget_id) and returns: unknown