@Override
  public void addElement(@NotNull LookupElement added, @NotNull ProcessingContext context) {
    synchronized (this) {
      myCount++;

      for (String string : CompletionUtil.iterateLookupStrings(added)) {
        if (string.length() == 0) continue;

        myElements.putValue(string, added);
        mySortedStrings.add(string);
        final NavigableSet<String> after = mySortedStrings.tailSet(string, false);
        for (String s : after) {
          if (!s.startsWith(string)) {
            break;
          }
          for (LookupElement longer : myElements.get(s)) {
            updateLongerItem(added, longer);
          }
        }
      }
    }
    super.addElement(added, context);

    calculateToLift(added);
  }
@Override
  public void addElement(@NotNull LookupElement added, @NotNull ProcessingContext context)