@Contract(pure = true)
  static List<HighlightInfo> addSyntaxInjectedFragmentInfo(@NotNull EditorColorsScheme scheme,
                                                           @NotNull TextRange hostRange,
                                                           TextAttributesKey @NotNull [] keys) {
    if (hostRange.isEmpty()) {
      return List.of();
    }
    // erase marker to override hosts colors
    HighlightInfo eraseInfo = HighlightInfo.newHighlightInfo(HighlightInfoType.INJECTED_LANGUAGE_FRAGMENT)
      .range(hostRange)
      .textAttributes(TextAttributes.ERASE_MARKER)
      .createUnconditionally();

    LayeredTextAttributes injectedAttributes = LayeredTextAttributes.create(scheme, keys);
    if (injectedAttributes.isEmpty() || keys.length == 1 && keys[0] == HighlighterColors.TEXT) {
      // nothing to add
      return List.of(eraseInfo);
    }

    HighlightInfo injectedInfo = HighlightInfo.newHighlightInfo(HighlightInfoType.INJECTED_LANGUAGE_FRAGMENT)
      .range(hostRange)
      .textAttributes(injectedAttributes)
      .createUnconditionally();
    return List.of(eraseInfo, injectedInfo);
  }
@Contract(pure = true)
  static List<HighlightInfo> addSyntaxInjectedFragmentInfo(@NotNull EditorColorsScheme scheme,
                                                           @NotNull TextRange hostRange,
                                                           TextAttributesKey @NotNull [] keys)