static new ThreadLocal DynamicObject_loading; static class DynamicObject { S className; // just the name, without the "main$" LinkedHashMap fieldValues; *() {} // className = just the name, without the "main$" *(S *className) {} Map _map() { ret fieldValues; } toString { ret getClass() == DynamicObject.class ? "dyn " + className : super.toString(); } }