@Override
  public final @NotNull FilteringTree.Matching checkMatching(@NotNull U userObject, @Nullable Iterable<TextRange> matchingFragments) {
    FilteringTree.Matching result;
    if (matchingFragments == null) {
      result = FilteringTree.Matching.NONE;
    } else {
      TextRange onlyFragment = getOnlyElement(matchingFragments);
      result = onlyFragment != null && onlyFragment.getStartOffset() == 0 ? FilteringTree.Matching.FULL : FilteringTree.Matching.PARTIAL;
    }
    onMatchingChecked(userObject, matchingFragments, result);

    return result;
  }
@Override
  public final @NotNull FilteringTree.Matching checkMatching(@NotNull U userObject, @Nullable Iterable<TextRange> matchingFragments)