(self, try_mutate: bool, **impl_params)
This method updates the parameters of the operator.  NonTerminals do not support
        in-place mutation
This method updates the parameters of the operator.  NonTerminals do not support
        in-place mutation
This method updates the parameters of the operator . NonTerminals do not support in - place mutation
def _with_params(self, try_mutate: bool, **impl_params) -> Operator:
        """
        This method updates the parameters of the operator.  NonTerminals do not support
        in-place mutation
        """
        known_keys = set(["name"])
        if impl_params:
            new_keys = set(impl_params.keys())
            if not new_keys.issubset(known_keys):
                unknowns = {k: v for k, v in impl_params.items() if k not in known_keys}
                raise ValueError(
                    f"NonTerminal._with_params called with unknown parameters: {unknowns}"
                )
            else:
                assert "name" in impl_params
                return NonTerminal(impl_params["name"])
        else:
            return self
def _with_params ( self , try_mutate : bool , * * impl_params ) -> Operator : known_keys = set ( [ "name" ] ) if impl_params : new_keys = set ( impl_params . keys ( ) ) if not new_keys . issubset ( known_keys ) : unknowns = { k : v for k , v in impl_params . items ( ) if k not in known_keys } raise ValueError ( f"NonTerminal._with_params called with unknown parameters: {unknowns}" ) else : assert "name" in impl_params return NonTerminal ( impl_params [ "name" ] ) else : return self