@Override
    public GroovyResolveResult @NotNull [] getCandidates() {
      if (!hasCandidates()) return GroovyResolveResult.EMPTY_ARRAY;
      final GroovyResolveResult[] results = ResolveUtil.filterSameSignatureCandidates(getCandidatesInternal());
      List<GroovyResolveResult> list = new ArrayList<>(results.length);
      myPropertyNames.removeAll(myPreferredFieldNames);

      Set<String> usedFields = new HashSet<>();
      for (GroovyResolveResult result : results) {
        final PsiElement element = result.getElement();
        if (element instanceof PsiField) {
          final String name = ((PsiField)element).getName();
          if (myPropertyNames.contains(name) ||
              myLocalVars.contains(name) ||
              usedFields.contains(name)) {
            continue;
          }
          else {
            usedFields.add(name);
          }
        }

        list.add(result);
      }
      return list.toArray(GroovyResolveResult.EMPTY_ARRAY);
    }
@Override
    public GroovyResolveResult @NotNull [] getCandidates()