private Value And(AndNode exp)
 {
     try
     {
         Constant  left  = Eval(exp.Left).GetRValue();
         Constant  right = Eval(exp.Right).GetRValue();
         BoolValue l     = (BoolValue)Convert(left, Constant.Type.Bool);
         BoolValue r     = (BoolValue)Convert(right, Constant.Type.Bool);
         return(BoolValue.OpAnd(l, r));
     }
     catch (TypeConversionError exc)
     {
         throw new ModelInterpreterException($"Операция \"И\" не определена для типов \"{exc.Src}\" и \"{exc.Dst}\"")
               {
                   Line     = exp.Line,
                   Position = exp.Position
               };
     }
     catch (Exception exc)
     {
         throw new ModelInterpreterException(exc.Message)
               {
                   Line     = exp.Line,
                   Position = exp.Position
               };
     }
 }