@ApiStatus.Internal
  public static CompletionInitializationContextImpl runContributorsBeforeCompletion(Editor editor,
                                                                                    PsiFile psiFile,
                                                                                    int invocationCount,
                                                                                    @NotNull Caret caret,
                                                                                    CompletionType completionType) {
    final Ref<CompletionContributor> current = Ref.create(null);
    CompletionInitializationContextImpl context =
      new CompletionInitializationContextImpl(editor, caret, psiFile, completionType, invocationCount) {
        CompletionContributor dummyIdentifierChanger;

        @Override
        public void setDummyIdentifier(@NotNull String dummyIdentifier) {
          super.setDummyIdentifier(dummyIdentifier);

          if (dummyIdentifierChanger != null) {
            LOG.error("Changing the dummy identifier twice, already changed by " + dummyIdentifierChanger);
          }
          dummyIdentifierChanger = current.get();
        }
      };
    Project project = psiFile.getProject();
    DumbModeAccessType.RELIABLE_DATA_ONLY.ignoreDumbMode(() -> {
      for (final CompletionContributor contributor : CompletionContributor.forLanguageHonorDumbness(context.getPositionLanguage(), project)) {
        current.set(contributor);
        contributor.beforeCompletion(context);
        CompletionAssertions.checkEditorValid(editor);
        assert !PsiDocumentManager.getInstance(project).isUncommited(editor.getDocument()) : "Contributor " +
                                                                                             contributor +
                                                                                             " left the document uncommitted";
      }
    });
    return context;
  }
@ApiStatus.Internal
  public static CompletionInitializationContextImpl runContributorsBeforeCompletion(Editor editor,
                                                                                    PsiFile psiFile,
                                                                                    int invocationCount,
                                                                                    @NotNull Caret caret,
                                                                                    CompletionType completionType)