internal override void Evaluate(CapabilitiesState state)
        {
            Match match;

            state.Exit = false;

            if (_regex != null)
            {
                match = _regex.Match(_expr.Expand(state));

                if (!match.Success)
                {
                    return;
                }

                state.AddMatch(_regex, match);
            }

            for (int i = 0; i < _rules.Length; i++)
            {
                _rules[i].Evaluate(state);

                if (state.Exit)
                {
                    break;
                }
            }

            if (_regex != null)
            {
                state.PopMatch();
            }

            state.Exit = (Type == Case);
        }
 internal override void Evaluate(CapabilitiesState state)
 {
     state.SetVariable(_var, _pat.Expand(state));
     state.Exit = false;
 }