PsiClass (SourcePosition position) { PsiFile file = position.getFile(); if (!(file instanceof GroovyFileBase)) return null; PsiElement element = file.findElementAt(position.getOffset()); while (true) { element = PsiTreeUtil.getParentOfType(element, GrTypeDefinition.class, GroovyFileBase.class); if (element instanceof GroovyFileBase) { return ((GroovyFileBase)element).getScriptClass(); } else if (element instanceof GrTypeDefinition && !((GrTypeDefinition)element).isAnonymous()) { return (GrTypeDefinition)element; } } }