def __init__(
            self, 
            value: Optional[object] = None, 
            options: Optional[ArrayLike] = None, 
            all: Optional[ArrayLike] = None, 
            **kwargs: Any,
        ) -> None:
        """
        Constructor for the ``Choice`` class.

        Parameters
        ----------
        value : object
            Value the decision variable is to take.
        options : ArrayLike, None
            A list of decision variable options from which to choose.
        all : ArrayLike, None
            A strict list of decision variable options from which to choose.
            If ``None``, the value of ``options`` is copied to ``all``.
        kwargs : Any
            Additional keyword arguments for ``active`` and ``flag``.
        """
        # all super constructor
        super().__init__(value=value, **kwargs)
        self.options = options

        # if strict list not provided, set to ``options``
        if all is None:
            all = options
        self.all = all

        Constructor for the ``Choice`` class.

        Parameters
        ----------
        value : object
            Value the decision variable is to take.
        options : ArrayLike, None
            A list of decision variable options from which to choose.
        all : ArrayLike, None
            A strict list of decision variable options from which to choose.
            If ``None``, the value of ``options`` is copied to ``all``.
        kwargs : Any
            Additional keyword arguments for ``active`` and ``flag``.
        
pymoo/core/variable.py