@NotNull
 private static Map<PsiElement, FoldingDescriptor> buildRanges(
     @NotNull Editor editor, @NotNull PsiFile psiFile) {
   final FoldingBuilder foldingBuilder =
       LanguageFolding.INSTANCE.forLanguage(psiFile.getLanguage());
   final ASTNode node = psiFile.getNode();
   if (node == null) return Collections.emptyMap();
   final FoldingDescriptor[] descriptors =
       LanguageFolding.buildFoldingDescriptors(
           foldingBuilder, psiFile, editor.getDocument(), true);
   Map<PsiElement, FoldingDescriptor> ranges = new HashMap<PsiElement, FoldingDescriptor>();
   for (FoldingDescriptor descriptor : descriptors) {
     final ASTNode ast = descriptor.getElement();
     final PsiElement psi = ast.getPsi();
     if (psi != null) {
       ranges.put(psi, descriptor);
     }
   }
   return ranges;
 }