boolean (PsiElement context) { final int offset = context.getTextRange().getStartOffset(); PsiElement prevSibling = context.getPrevSibling(); if (context.getParent() instanceof GrReferenceElement && prevSibling != null && prevSibling.getNode() != null) { ASTNode node = prevSibling.getNode(); return !TokenSets.DOTS.contains(node.getElementType()); } if (GroovyCompletionUtil.isNewStatement(context, true)) { final PsiElement leaf = GroovyCompletionUtil.getLeafByOffset(offset - 1, context); if (leaf != null && (leaf.getParent() instanceof GrStatementOwner || leaf.getParent() instanceof GrLabeledStatement)) { return true; } } if (context.getParent() != null) { PsiElement parent = context.getParent(); if (parent instanceof GrExpression && parent.getParent() instanceof GroovyFile) { return true; } if (parent instanceof GrReferenceExpression) { PsiElement superParent = parent.getParent(); if (superParent instanceof GrStatementOwner || superParent instanceof GrLabeledStatement || superParent instanceof GrControlStatement || superParent instanceof GrMethodCall) { return true; } } return false; } return false; }