class_docstr: Base class for multiple Selection widgets
  
  ``options`` can be specified as a list of values, list of (label, value)
  tuples, or a dict of {label: value}. The labels are the strings that will be
  displayed in the UI, representing the actual Python choices, and should be
  unique. If labels are not specified, they are generated from the values.
  
  When programmatically setting the value, a reverse lookup is performed
  among the options to check that the value is valid. The reverse lookup uses
  the equality operator by default, but another predicate may be provided via
  the ``equals`` keyword argument. For example, when dealing with numpy arrays,
  one may set equals=np.array_equal.
class_docstr_tok: ["Base","class","for","multiple","Selection","widgets","``","options","``","can","be","specified","as","a","list","of","values",",","list","of","(","label",",","value",")","tuples",",","or","a","dict","of","{","label",":","value","}",".","The","labels","are","the","strings","that","will","be","displayed","in","the","UI",",","representing","the","actual","Python","choices",",","and","should","be","unique",".","If","labels","are","not","specified",",","they","are","generated","from","the","values",".","When","programmatically","setting","the","value",",","a","reverse","lookup","is","performed","among","the","options","to","check","that","the","value","is","valid",".","The","reverse","lookup","uses","the","equality","operator","by","default",",","but","another","predicate","may","be","provided","via","the","``","equals","``","keyword","argument",".","For","example",",","when","dealing","with","numpy","arrays",",","one","may","set","equals=np.array_equal","."]
code: def _validate_label(self, proposal):
      if any(i not in self._options_labels for i in proposal.value):
          raise TraitError("Invalid selection: label not found")
      return proposal.value
  
imports: from itertools import chain
  from .widget_description import DescriptionWidget, DescriptionStyle
  from .valuewidget import ValueWidget
  from .widget_core import CoreWidget
  from .widget_style import Style
  from .trait_types import InstanceDict, TypedTuple
  from .widget import register, widget_serialization
  from .docutils import doc_subst
  from traitlets import Unicode, Bool, Int, Any, Dict, TraitError, CaselessStrEnum, Tuple, Union, observe, validate
  from ipython_genutils.py3compat import unicode_type
label_desc: Use image node_id 8 for calling the _MultipleSelection obj's underlying member method code with example usage: obj._validate_label(proposal) and returns: proposal