static S stringToLegalIdentifier(S s) { new StringBuilder buf; s = dropTrailingSquareBracketStuff(s); for i over s: { char c = s.charAt(i); if (empty(buf) ? Character.isJavaIdentifierStart(c) : Character.isJavaIdentifierPart(c)) buf.append(c); } if (empty(buf)) fail("Can't convert to legal identifier: " + s); ret str(buf); }