// hopefully covers all cases :) static S safeSubstring(S s, int x, int y) { if (s == null) return null; if (x < 0) x = 0; if (x > s.length()) return ""; if (y < x) y = x; if (y > s.length()) y = s.length(); return s.substring(x, y); } static S safeSubstring(S s, int x) { ret safeSubstring(s, x, l(s)); }