bool ITransitionConditionExprVisitor <bool> .VisitBinary(TransitionConditionExpr.BinaryExpr bin)
            {
                switch (bin.Kind)
                {
                case TransitionConditionBinaryExprKind.BoolOr: return(bin.Left.Apply(this) || bin.Right.Apply(this));

                case TransitionConditionBinaryExprKind.BoolAnd: return(bin.Left.Apply(this) && bin.Right.Apply(this));

                default:
                    throw new NotImplementedException("");
                }
            }
            VarsCollector ITransitionConditionExprVisitor <VarsCollector> .VisitBinary(TransitionConditionExpr.BinaryExpr bin)
            {
                if (bin.Kind != TransitionConditionBinaryExprKind.BoolAnd)
                {
                    throw new InvalidOperationException();
                }

                bin.Left.Apply(this);
                bin.Right.Apply(this);

                return(this);
            }
 bool ITransitionConditionExprVisitor <bool> .VisitBinary(TransitionConditionExpr.BinaryExpr bin)
 {
     return(bin.Kind == TransitionConditionBinaryExprKind.BoolAnd && bin.Left.Apply(this) && bin.Right.Apply(this));
 }