private SelectionCriteria Convert(FinalStatePatternParser.CutBinaryContext context)
        {
            var c = new SelectionCriteria();

            c.BinaryRelation = context.BINARY_OP().GetText();
            c.FirstArgument  = Convert(context.cut_arg()[0]);
            c.SecondArgument = Convert(context.cut_arg()[1]);
            return(c);
        }
        /// <summary>
        /// We see a binary cut, so put it on the list.
        /// </summary>
        /// <param name="context"></param>
        public override void ExitCutBinary(FinalStatePatternParser.CutBinaryContext context)
        {
            // If we are processing an argument, it isn't a criteria
            var c = Convert(context);

            _current_criteria.Peek().Add(c);

            // And off we go
            base.ExitCutBinary(context);
        }