void (@NotNull final PsiElement element, @NotNull final List<? super FoldingDescriptor> descriptors) { TextRange nodeTextRange = element.getTextRange(); if (nodeTextRange.getLength() < 2) { return; } if (element instanceof YAMLDocument) { if (PsiTreeUtil.findChildrenOfAnyType(element.getParent(), YAMLDocument.class).size() > 1) { descriptors.add(new FoldingDescriptor(element, nodeTextRange)); } } else if (element instanceof YAMLScalar && ((YAMLScalar)element).isMultiline() || element instanceof YAMLKeyValue && ((YAMLKeyValue)element).getValue() instanceof YAMLCompoundValue || element instanceof YAMLSequenceItem && ((YAMLSequenceItem)element).getValue() instanceof YAMLCompoundValue) { descriptors.add(new FoldingDescriptor(element, nodeTextRange)); } PsiElement child = element.getFirstChild(); while (child != null) { child = foldComments(child, descriptors); if (child == null) break; collectDescriptors(child, descriptors); child = child.getNextSibling(); } }