final int max = l.upperEndpoint().intValue();
if (min > 0 || max < Integer.MAX_VALUE) {
- final StringBuilder sb = new StringBuilder("length >");
- if (min <= Integer.MAX_VALUE) {
- sb.append('=');
+ final StringBuilder sb = new StringBuilder().append("length ");
+ if (min != max) {
+ sb.append('>');
+ if (min <= Integer.MAX_VALUE) {
+ sb.append('=');
+ }
+ sb.append(' ').append(min);
+
+ if (max < Integer.MAX_VALUE) {
+ sb.append(" && length <= ").append(max);
+ }
+ } else {
+ // Single-value, use a direct comparison
+ sb.append("== ").append(min);
}
- sb.append(' ').append(min);
-
- if (max < Integer.MAX_VALUE) {
- sb.append(" && length <= ").append(max);
- }
-
ret.add(sb.toString());
} else {
// This range is implicitly capped by String/byte[] length returns