@Override
  public CandidateInfo resolveConflict(@NotNull List<CandidateInfo> conflicts){
    if (conflicts.size() == 1) return conflicts.get(0);
    final Map<Object, CandidateInfo> uniqueItems = new HashMap<>();
    for (CandidateInfo info : conflicts) {
      final PsiElement element = info.getElement();
      Object key;
      if (info instanceof MethodCandidateInfo) {
        key = ((PsiMethod)element).getSignature(((MethodCandidateInfo)info).getSubstitutor(false));
      }
      else {
        key = PsiUtilCore.getName(element);
      }

      if (!uniqueItems.containsKey(key)) {
        uniqueItems.put(key, info);
      }
    }

    if(uniqueItems.size() == 1) return uniqueItems.values().iterator().next();
    return null;
  }
@Override
  public CandidateInfo resolveConflict(@NotNull List<CandidateInfo> conflicts)