void (@NotNull final Editor editor) { ThreadingAssertions.assertEventDispatchThread(); final PsiManager psiManager = PsiManager.getInstance(myProject); if (psiManager.isDisposed()) return; if (!file.isValid()) return; final PsiFile psiFile = psiManager.findFile(file); if (psiFile == null) return; Map<PsiElement, FoldingDescriptor> ranges = null; for (Info info : myInfos) { PsiElement element = FoldingPolicy.restoreBySignature(psiFile, info.signature); if (element == null || !element.isValid()) { continue; } if (ranges == null) { ranges = buildRanges(editor, psiFile); } FoldingDescriptor descriptor = ranges.get(element); if (descriptor == null) { continue; } TextRange range = descriptor.getRange(); FoldRegion region = FoldingUtil.findFoldRegion(editor, range.getStartOffset(), range.getEndOffset()); if (region != null) { region.setExpanded(info.expanded); } } for (RangeMarker marker : myRangeMarkers) { if (!marker.isValid() || marker.getStartOffset() == marker.getEndOffset()) { continue; } FoldRegion region = FoldingUtil.findFoldRegion(editor, marker.getStartOffset(), marker.getEndOffset()); FoldingInfo info = marker.getUserData(FOLDING_INFO_KEY); if (region == null) { if (info != null) { region = editor.getFoldingModel().addFoldRegion(marker.getStartOffset(), marker.getEndOffset(), info.placeHolder); } if (region == null) { return; } } boolean state = info != null && info.expanded; region.setExpanded(state); } }