void (CommonProblemDescriptor @NotNull [] descriptors, @NotNull RefEntity refEntity, @NotNull BiConsumer<? super Element, ? super CommonProblemDescriptor> problemSink, @NotNull Predicate<? super CommonProblemDescriptor> isDescriptorExcluded) { final List<ProblemDescriptorKey> keys = Arrays .stream(descriptors) .filter(desc -> !isDescriptorExcluded.test(desc)) .map(desc -> new ProblemDescriptorKey(desc)) .sorted() .toList(); for (ProblemDescriptorKey key : keys) { final var descriptor = key.descriptor; Element element = null; try { element = refEntity.getRefManager().export(refEntity, key.lineNumber); } catch (ProcessCanceledException e) { throw e; } catch (Throwable e) { LOG.error(e); } if (element == null) return; exportResult(refEntity, descriptor, element); problemSink.accept(element, descriptor); } }