synchronized
  @Override
  public void unregisterProvider(@NotNull PsiReferenceProvider provider) {
    for (Map.Entry<String, @NotNull ProviderInfo<ElementPattern<?>>[]> entry : myNamesToProvidersMap.entrySet()) {
      entry.setValue((ProviderInfo<ElementPattern<?>>[])removeFromArray(provider, entry.getValue()));
    }
    for (Map.Entry<String, @NotNull ProviderInfo<ElementPattern<?>>[]> entry : myNamesToProvidersMapInsensitive.entrySet()) {
      entry.setValue((ProviderInfo<ElementPattern<?>>[])removeFromArray(provider, entry.getValue()));
    }
  }
synchronized
  @Override
  public void unregisterProvider(@NotNull PsiReferenceProvider provider)