static bool cicFast(S src, S what) { final int length = what.length(); if (length == 0) true; final char c = what.charAt(0); final char firstLo = Character.toLowerCase(c); final char firstUp = Character.toUpperCase(c); for (int i = src.length() - length; i >= 0; i--) { final char ch = src.charAt(i); if (ch != firstLo && ch != firstUp) continue; if (src.regionMatches(true, i, what, 0, length)) true; } false; }