@Nullable
      @RequiresBackgroundThread
      private String computeDescription() {
        try {
          ProgressManager.checkCanceled();

          FoldRegion region = myRegions[myIndex];
          if (region == null) return null;

          // Regions can be disposed without taking WriteLock
          int startOffset = region.getStartOffset();
          int endOffset = region.getEndOffset();
          if (startOffset == -1 || endOffset == -1) return null;
          if (!region.isValid()) return null;

          int startLine = myEditors[myIndex].getDocument().getLineNumber(startOffset);
          int endLine = myEditors[myIndex].getDocument().getLineNumber(endOffset);
          return getRangeDescription(myProject, startLine, endLine, myIndex, myDescriptionComputer);
        }
        catch (ProcessCanceledException e) {
          throw e;
        }
        catch (Throwable e) {
          LOG.error(e);
          return null;
        }
      }
@Nullable
      @RequiresBackgroundThread
      private String computeDescription()