@Override
  protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
    var model = treeModel;
    if (TREE_MODEL_PROPERTY.equals(propertyName)) {
      if (oldValue instanceof CachedTreePresentationSupport cps) {
        cps.setCachedPresentation(null);
      }
      if (expandImpl != null && model != null) {
        Object treeRoot = model.getRoot();
        if (treeRoot != null && !model.isLeaf(treeRoot)) {
          expandImpl.markPathExpanded(new CachingTreePath(treeRoot));
        }
      }
      if (newValue instanceof CachedTreePresentationSupport cps && expandImpl != null) {
        cps.setCachedPresentation(expandImpl.getCachedPresentation());
      }
    }
    super.firePropertyChange(propertyName, oldValue, newValue);
  }
@Override
  protected void firePropertyChange(String propertyName, Object oldValue, Object newValue)