@Override
    public LookupElement @NotNull [] calculateLookupItems(ExpressionContext context) {
      Project project = context.getProject();
      int offset = context.getStartOffset();
      Editor editor = context.getEditor();
      assert editor != null;
      Document document = editor.getDocument();
      PsiDocumentManager.getInstance(project).commitDocument(document);
      PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(document);
      assert file != null;
      PsiElement elementAt = file.findElementAt(offset);
      Set<String> parameterNames = getPeerNames(elementAt);
      if (parameterNames == null) return LookupElement.EMPTY_ARRAY;

      Set<LookupElement> set = new LinkedHashSet<>();

      for (String name : myNames) {
        if (parameterNames.contains(name)) {
          int j = 1;
          while (parameterNames.contains(name + j)) j++;
          name += j;
        }

        set.add(LookupElementBuilder.create(name));
      }

      String[] suggestedNames = ExpressionUtil.getNames(context);
      if (suggestedNames != null) {
        for (String name : suggestedNames) {
          if (parameterNames.contains(name)) {
            int j = 1;
            while (parameterNames.contains(name + j)) j++;
            name += j;
          }

          set.add(LookupElementBuilder.create(name));
        }
      }

      return set.toArray(LookupElement.EMPTY_ARRAY);
    }
@Override
    public LookupElement @NotNull [] calculateLookupItems(ExpressionContext context)