boolean (VirtualFile file, TextRange lineInterval, VcsRevisionNumber currentRevisionNumber) { final ProjectLevelVcsManager vcsManager = ProjectLevelVcsManager.getInstance(myProject); final AbstractVcs vcs = vcsManager.getVcsFor(file); if (vcs == null || vcs.getDiffProvider() == null) return false; if (currentRevisionNumber == null) { currentRevisionNumber = vcs.getDiffProvider().getCurrentRevision(file); assert currentRevisionNumber != null; } final ThreeState isRecent = myContentAnnotationCache.isRecent(file, vcs.getKeyInstanceMethod(), currentRevisionNumber, lineInterval, System.currentTimeMillis() - mySettings.getLimit()); if (! ThreeState.UNSURE.equals(isRecent)) return ThreeState.YES.equals(isRecent); final FileAnnotation fileAnnotation; try { fileAnnotation = vcs.getAnnotationProvider().annotate(file); } catch (VcsException e) { LOG.info(e); return false; } myContentAnnotationCache.register(file, vcs.getKeyInstanceMethod(), currentRevisionNumber, fileAnnotation); for (int i = lineInterval.getStartOffset(); i <= lineInterval.getEndOffset(); i++) { Date lineDate = fileAnnotation.getLineDate(i); if (lineDate != null && isRecent(lineDate)) return true; } return false; }