@NotNull
  @Override
  public DataIndexer<FunctionalExpressionKey, List<IndexEntry>, FileContent> getIndexer() {
    return inputData -> {
      CharSequence text = inputData.getContentAsText();
      int[] offsets = ArrayUtil.mergeArrays(
        new StringSearcher("->", true, true).findAllOccurrences(text),
        new StringSearcher("::", true, true).findAllOccurrences(text));
      if (offsets.length == 0) return Collections.emptyMap();

      Map<FunctionalExpressionKey, List<IndexEntry>> result = new HashMap<>();
      LighterAST tree = ((PsiDependentFileContent)inputData).getLighterAST();
      FileLocalResolver resolver = new FileLocalResolver(tree);

      LightTreeUtil.processLeavesAtOffsets(offsets, tree, new BiConsumer<>() {
        int index = 0;

        @Override
        public void accept(LighterASTTokenNode leaf, Integer offset) {
          LighterASTNode element = tree.getParent(leaf);
          if (element == null) return;

          if (element.getTokenType() == METHOD_REF_EXPRESSION || element.getTokenType() == LAMBDA_EXPRESSION) {
            FunctionalExpressionKey key = new FunctionalExpressionKey(getFunExprParameterCount(tree, element),
                                                                      calcReturnType(tree, element),
                                                                      calcExprType(element, resolver));

            LighterASTNode context = LightTreeUtil.getParentOfType(tree, element, ElementType.MEMBER_BIT_SET, TokenSet.EMPTY);
            if (context != null) {
              List<IndexEntry> list = result.computeIfAbsent(key, __ -> new ArrayList<>());
              list.add(new IndexEntry(element.getStartOffset(), index,
                                      context.getStartOffset(), context.getEndOffset(),
                                      createOccurrence(element, resolver)));
            }
            index++;
          }
        }
      });

      return result;
    };
  }
@NotNull
  @Override
  public DataIndexer<FunctionalExpressionKey, List<IndexEntry>, FileContent> getIndexer()