void (@NotNull ChangesBrowserNodeRenderer renderer, boolean selected, boolean expanded, boolean hasFocus) { ReadAction.run(() -> { Change change = getUserObject(); FilePath filePath = ChangesUtil.getFilePath(change); VirtualFile file = filePath.getVirtualFile(); if (myDecorator != null) { myDecorator.preDecorate(change, renderer, renderer.isShowFlatten()); } renderer.appendFileName(file, filePath.getName(), change.getFileStatus().getColor()); if (myAdditionalText != null) { renderer.append(spaceAndThinSpace() + myAdditionalText, SimpleTextAttributes.REGULAR_ATTRIBUTES); } if (renderer.isShowFlatten()) { appendParentPath(renderer, filePath.getParentPath()); } appendSwitched(renderer, file); if (!renderer.isShowFlatten() && getFileCount() != 1 || getDirectoryCount() != 0) { appendCount(renderer); } setIcon(change, filePath, renderer); if (myDecorator != null) { myDecorator.decorate(change, renderer, renderer.isShowFlatten()); } }); }