}
};
try {
TransmutableReference<String, TransmutableString> t =
new TransmutableReference<String, TransmutableString>(new TransmutableString("fun"));
System.out.println(t.getUnmodifiable()); // fun
call(t.applyAOp(addGood));
System.out.println(t.getUnmodifiable()); // good fun
call(t.applyAOp(noop));
System.out.println(t.getUnmodifiable()); // good fun
t = new TransmutableReference<String, TransmutableString>(new TransmutableString("grapes"));
System.out.println(t.getUnmodifiable()); // grapes
call(t.applyAOp(addMoreGood));
System.out.println(t.getUnmodifiable()); // more good grapes
call(t.applyAOp(noop));
System.out.println(t.getUnmodifiable()); // more good grapes
t = new TransmutableReference<String, TransmutableString>(new TransmutableString("times"));
System.out.println(t.getUnmodifiable()); // times
try {
call(t.applyAOp(bogus));
} catch (final Exception e) {
System.out.println("*** " + e);