static CharSequence virtualToUpper(CharSequence s) { if (s == null) null; int l = s.length(); ret new CharSequence { public int length() { ret l; } public char charAt(int i) ctex { ret upper(s.charAt(i)); } public CharSequence subSequence(int from, int to) { ret substringObject(this, from, to); } toString { ret charSequenceToStringByChar(this); } }; }