GrDocCommentOwner (final PsiElement context) { if (context == null || context instanceof PsiFile) { return null; } GrDocCommentOwner container = null; GrDocComment docComment = PsiTreeUtil.getParentOfType(context, GrDocComment.class); if (docComment != null) { container = docComment.getOwner(); } if (container == null) { container = PsiTreeUtil.getParentOfType(context, GrDocCommentOwner.class); } while (container instanceof GrAnonymousClassDefinition || container instanceof GrTypeParameter) { container = PsiTreeUtil.getParentOfType(container, GrDocCommentOwner.class); if (container == null) return null; } if (myForClass) { while (container != null) { final GrTypeDefinition parentClass = PsiTreeUtil.getParentOfType(container, GrTypeDefinition.class); if (parentClass == null && container instanceof GrTypeDefinition) { return container; } container = parentClass; } } return container; }