public override Type VisitBasicType(BasicType node)
        {
            if (node.IsBool)
            {
                if (constructVal)
                {
                    ReturnResult(IsaBoogieTerm.BoolVal(arg));
                }
                else
                {
                    ReturnResult(IsaBoogieTerm.ConvertValToBool(arg));
                }
            }
            else if (node.IsInt)
            {
                if (constructVal)
                {
                    ReturnResult(IsaBoogieTerm.IntVal(arg));
                }
                else
                {
                    ReturnResult(IsaBoogieTerm.ConvertValToInt(arg));
                }
            }
            else
            {
                throw new NotImplementedException();
            }

            return(node);
        }
        public override Type VisitBasicType(BasicType node)
        {
            if (node.IsBool)
            {
                ReturnResult(v => IsaBoogieTerm.BoolVal(v));
            }
            else if (node.IsInt)
            {
                ReturnResult(v => IsaBoogieTerm.IntVal(v));
            }
            else
            {
                throw new NotImplementedException();
            }

            return(node);
        }