code: @Override
      public Object visitComparisonExpression(ExcellentParser.ComparisonExpressionContext ctx) {
          Pair<Object, Object> args = Conversions.toSame(visit(ctx.expression(0)), visit(ctx.expression(1)), m_evalContext);
          int compared;
  
          if (args.getLeft() instanceof String) {
              // string comparison is case-insensitive
              compared = ((String) args.getLeft()).compareToIgnoreCase((String) args.getRight());
          }
          else {
              compared = ((Comparable) args.getLeft()).compareTo(args.getRight());
          }
  
          if (ctx.LTE() != null) {
              return compared <= 0;
          } else if (ctx.LT() != null) {
              return compared < 0;
          } else if (ctx.GTE() != null) {
              return compared >= 0;
          } else { // GT
              return compared > 0;
          }
      }
docs: expression: expression (LTE | LT | GTE | GT) expression