please include function myInnerClasses. static abstract class DynModule { S name, toolTip; PersistableThrowable error; transient O _host; transient Set timers; transient Lock lock = lock(); transient bool persistOnChangedField = true; transient int changeCount; transient L onChange; *() { dm_initErrorHandling(); } void setModuleName(S name) { this.name = name; setInternalFrameTitle(vis(), name); } void setModuleToolTip(S toolTip) { this.toolTip = toolTip; } JComponent vis() { ret (JComponent) getOpt(_host, 'vis); } void ownTimer(java.util.Timer timer) { temp enter(); if (timers == null) timers = newWeakIdentityHashSet(); addIfNotThere(timers, timer); } void cleanMeUp_dynModule { cancelTimers(getAndClearList(timers)); } void persistMe { { lock lock; ++changeCount; } pcallFAll(onChange); callOpt(_host, 'change); } void _change { persistMe(); } bool setField(S name, O value) { lock lock; if (eq(get(this, name), value)) false; set(this, name, value); if (persistOnChangedField) _change(); true; } bool setFields(O... params) { bool change = false; for (int i = 0; i < l(params); i += 2) if (setField((S) params[i], params[i+1])) change = true; ret change; } void start {} void revisualize { call(creator(), 'revisualizeModule, _host); } AutoCloseable enter() { please include function dm_currentModule. ret tempSetThreadLocal(dm_currentModule_value, this); } bool setError(Throwable e) { setField(error := persistableThrowable(e)); true; } void clearError { setField(error := null); } void onChange(Runnable r) { lock lock; if (onChange == null) onChange = synchroList(); addIfNotThere(onChange, r); } }