@Override
  public void registerReferenceProviders(@NotNull final PsiReferenceRegistrar registrar) {
    final PsiReferenceProvider filePathReferenceProvider = new FilePathReferenceProvider() {
      @Override
      public PsiReference @NotNull [] getReferencesByElement(@NotNull PsiElement element, @NotNull String text, int offset, boolean soft) {
        PsiReference[] references = super.getReferencesByElement(element, text, offset, soft);
        return references.length > 100 ? PsiReference.EMPTY_ARRAY : references;
      }
    };
    registrar.registerReferenceProvider(PlatformPatterns.psiElement(PsiLiteralExpression.class).and(new FilterPattern(new ElementFilter() {
      @Override
      public boolean isAcceptable(Object element, PsiElement context) {
        return !JavaI18nUtil.mustBePropertyKey((PsiLiteralExpression) context, null);
      }

      @Override
      public boolean isClassAcceptable(Class hintClass) {
        return true;
      }
    })), filePathReferenceProvider, PsiReferenceRegistrar.LOWER_PRIORITY);

    registrar.registerReferenceProvider(PlatformPatterns.psiElement(PsiDocToken.class),
                                        CommentsReferenceContributor.COMMENTS_REFERENCE_PROVIDER_TYPE.getProvider());
  }
@Override
  public void registerReferenceProviders(@NotNull final PsiReferenceRegistrar registrar)