boolean (Object obj) { synchronized (mySections) { if (!(obj instanceof CompositeAppearance appearance)) return false; if (SwingUtilities.isEventDispatchThread()) { return appearance.mySections.equals(mySections); } else { return new ArrayList<>(appearance.mySections).equals(new ArrayList<>(mySections)); } } }