void (GrTypeDefinition typeDefinition, AnnotationHolder holder) { final PsiClass containingClass = typeDefinition.getContainingClass(); String name = typeDefinition.getName(); if (containingClass != null) { final String containingClassName = containingClass.getName(); if (containingClassName != null && containingClassName.equals(name)) { holder.newAnnotation(HighlightSeverity.ERROR, GroovyBundle.message("duplicate.inner.class", name)).range(typeDefinition.getNameIdentifierGroovy()).create(); } } final String qName = typeDefinition.getQualifiedName(); if (qName != null) { JavaPsiFacade facade = JavaPsiFacade.getInstance(typeDefinition.getProject()); GlobalSearchScope scope = inferClassScopeForSearchingDuplicates(typeDefinition); final PsiClass[] classes = facade.findClasses(qName, scope); if (classes.length > 1) { String packageName = getPackageName(typeDefinition); if (!isScriptGeneratedClass(classes)) { holder.newAnnotation(HighlightSeverity.ERROR, GroovyBundle.message("duplicate.class", name, packageName)).range(typeDefinition.getNameIdentifierGroovy()).create(); } else { holder.newAnnotation(HighlightSeverity.ERROR, GroovyBundle.message("script.generated.with.same.name", qName)).range(typeDefinition.getNameIdentifierGroovy()).create(); } } } }