static class DynamicObject { S className; // just the name, without the "main$" // string key = dynamic field // interface key = dynamic interface LinkedHashMap/**/ fieldValues; // dropped the type parameters 2021/5/19 to allow for dynamic interfaces *() {} // className = just the name, without the "main$" *(S *className) {} Map _map() { ret fieldValues; } toString { ret getClass() == DynamicObject.class ? "dyn " + className : super.toString(); } }