static L splitCamelCasePlusUnderscores(S s) { int j = 0; new L l; // new addition if (isAllUpperCase(s)) ret l with l.add(s); for i over s: { char last = charAt(s, i-1), c = s.charAt(i); if (i > j && (isUpperCaseLetter(c) || last == '_' || c == '_')) { l.add(substring(s, j, i)); j = i; } } if (j < l(s)) l.add(substring(s, j)); ret l; }