public class PR12350 { static public void main (String[] ignored) throws Throwable { StringBuffer b = new StringBuffer ("Good string. More than 16 chars."); // Should cause sharing. String s = b.toString(); // Take a char by char unshared copy of s. String t = new String (s.toCharArray()); b.substring (0, 4); // BUG: Clears shared flag. b.replace (0, 4, "Bad "); // Modifies shared data. System.out.println (s); assert s.equals (t); } }