@Override
  public void removeElement(@NotNull LookupElement element, @NotNull ProcessingContext context) {
    synchronized (this) {
      for (String s : CompletionUtil.iterateLookupStrings(element)) {
        myElements.remove(s, element);
        if (myElements.get(s).isEmpty()) {
          mySortedStrings.remove(s);
        }
      }

      removeFromMap(element, myToLift, myReversedToLift);
      removeFromMap(element, myReversedToLift, myToLift);
    }

    super.removeElement(element, context);
  }
@Override
  public void removeElement(@NotNull LookupElement element, @NotNull ProcessingContext context)