static CharacterIterator characterIterator(S s, int from default 0) { ret new CharacterIterator { int n = l(s); int i = from; public bool hasNext() { ret i < n; } public char next() { ret s.charAt(i++); } }; } static CharacterIterator characterIterator(S s, int from, int _n) { ret new CharacterIterator { int n = min(l(s), from+_n); int i = from; public bool hasNext() { ret i < n; } public char next() { ret s.charAt(i++); } }; } static CharacterIterator characterIterator(char[] s, int from, int _n) { ret new CharacterIterator { int n = min(l(s), from+_n); int i = from; public bool hasNext() { ret i < n; } public char next() { ret s[i++]; } }; }