@Override
  public void collectSlowLineMarkers(@NotNull List<? extends PsiElement> elements, @NotNull Collection<? super LineMarkerInfo<?>> result) {
    if (!hasIconTypeExpressions(elements)) {
      return;
    }

    for (PsiElement element : elements) {
      UCallExpression expression = UastContextKt.toUElement(element, UCallExpression.class);
      if (expression == null) {
        continue;
      }

      ProgressManager.checkCanceled();

      if (!ProjectIconsAccessor.isIconClassType(expression.getExpressionType())) {
        continue;
      }

      UValue uValue = UEvaluationContextKt.uValueOf(expression);
      if (!(uValue instanceof UCallResultValue)) {
        continue;
      }

      List<UValue> arguments = ((UCallResultValue)uValue).getArguments();
      if (!arguments.isEmpty()) {
        Collection<UExpression> constants = new ArrayList<>();
        for (UConstant constant : UValueKt.toPossibleConstants(arguments.get(0))) {
          if (constant instanceof UStringConstant) {
            UExpression source = constant.getSource();
            constants.add(source);
          }
        }
        if (!constants.isEmpty()) {
          UIdentifier identifier = expression.getMethodIdentifier();
          if (identifier != null && identifier.getSourcePsi() != null) {
            LineMarkerInfo<PsiElement> marker = createIconLineMarker(ContainerUtil.getFirstItem(constants), identifier.getSourcePsi());
            if (marker != null) {
              result.add(marker);
            }
          }
        }
      }
    }
  }
@Override
  public void collectSlowLineMarkers(@NotNull List<? extends PsiElement> elements, @NotNull Collection<? super LineMarkerInfo<?>> result)