SuggestedNameInfo (@NotNull PsiElement element, @Nullable PsiElement nameSuggestionContext, @NotNull Set<String> result) { if (nameSuggestionContext == null) nameSuggestionContext = element; if (element instanceof GrVariable && nameSuggestionContext instanceof GroovyPsiElement) { final PsiType type = ((GrVariable)element).getTypeGroovy(); if (type != null) { final String[] names = GroovyNameSuggestionUtil .suggestVariableNameByType(type, new DefaultGroovyVariableNameValidator((GroovyPsiElement)nameSuggestionContext)); result.addAll(Arrays.asList(names)); final VariableKind kind = JavaCodeStyleManager.getInstance(element.getProject()).getVariableKind((GrVariable)element); final String typeText = type.getCanonicalText(); return new SuggestedNameInfo(names) { @Override public void nameChosen(String name) { JavaStatisticsManager.incVariableNameUseCount(name, kind, ((GrVariable)element).getName(), typeText); } }; } } return null; }