private AutoCompletionDecision shouldAutoComplete(@NotNull CompletionProgressIndicator indicator,
                                                    @NotNull List<? extends LookupElement> items,
                                                    @NotNull CompletionParameters parameters) {
    if (!invokedExplicitly) {
      return AutoCompletionDecision.SHOW_LOOKUP;
    }
    final LookupElement item = items.get(0);
    if (items.size() == 1) {
      final AutoCompletionPolicy policy = getAutocompletionPolicy(item);
      if (policy == AutoCompletionPolicy.NEVER_AUTOCOMPLETE) return AutoCompletionDecision.SHOW_LOOKUP;
      if (policy == AutoCompletionPolicy.ALWAYS_AUTOCOMPLETE) return AutoCompletionDecision.insertItem(item);
      if (!indicator.getLookup().itemMatcher(item).isStartMatch(item)) return AutoCompletionDecision.SHOW_LOOKUP;
    }
    if (!isAutocompleteOnInvocation(parameters.getCompletionType())) {
      return AutoCompletionDecision.SHOW_LOOKUP;
    }
    if (isInsideIdentifier(indicator.getOffsetMap())) {
      return AutoCompletionDecision.SHOW_LOOKUP;
    }
    if (items.size() == 1 && getAutocompletionPolicy(item) == AutoCompletionPolicy.GIVE_CHANCE_TO_OVERWRITE) {
      return AutoCompletionDecision.insertItem(item);
    }

    AutoCompletionContext context =
      new AutoCompletionContext(parameters, items.toArray(LookupElement.EMPTY_ARRAY), indicator.getOffsetMap(), indicator.getLookup());
    AutoCompletionDecision resultingDecision = DumbModeAccessType.RELIABLE_DATA_ONLY.ignoreDumbMode(() -> {
      for (final CompletionContributor contributor : CompletionContributor.forParameters(parameters)) {
        AutoCompletionDecision decision = contributor.handleAutoCompletionPossibility(context);
        if (decision != null) {
          return decision;
        }
      }
      return null;
    });

    if (resultingDecision != null) {
      return resultingDecision;
    }

    return AutoCompletionDecision.SHOW_LOOKUP;
  }
private AutoCompletionDecision shouldAutoComplete(@NotNull CompletionProgressIndicator indicator,
                                                    @NotNull List<? extends LookupElement> items,
                                                    @NotNull CompletionParameters parameters)