static S[] subStringArray(S[] b, int start, int end) { start = max(start, 0); end = min(end, l(b)); if (start == 0 && end == l(b)) ret b; if (start >= end) ret new S[0]; S[] x = new S[end-start]; System.arraycopy(b, start, x, 0, end-start); ret x; }