void (@NotNull GrRangeExpression range) { super.visitRangeExpression(range); final PsiType type = range.getType(); if (!(type instanceof GrRangeType)) return; final PsiType iterationType = ((GrRangeType)type).getIterationType(); if (iterationType == null) return; final GroovyResolveResult[] nexts = ResolveUtil.getMethodCandidates(iterationType, "next", range, PsiType.EMPTY_ARRAY); final GroovyResolveResult[] previouses = ResolveUtil.getMethodCandidates(iterationType, "previous", range, PsiType.EMPTY_ARRAY); if (nexts.length == 0) { registerError(range, iterationType.getPresentableText(), CALL_NEXT); } if (previouses.length == 0) { registerError(range, iterationType.getPresentableText(), CALL_PREVIOUS); } if (!InheritanceUtil.isInheritor(iterationType, CommonClassNames.JAVA_LANG_COMPARABLE)) { registerError(range, iterationType.getPresentableText()); } }