AnnotationData (@NotNull Project project, @NotNull VirtualFile file) { FilePath filePath = null; VcsRevisionNumber revisionNumber = null; if (file instanceof VcsVirtualFile) { VcsFileRevision revision = ((VcsVirtualFile)file).getFileRevision(); if (revision instanceof VcsFileRevisionEx) { filePath = ((VcsFileRevisionEx)revision).getPath(); } else { filePath = VcsUtil.getFilePath(file); } revisionNumber = revision != null ? revision.getRevisionNumber() : null; } else if (file instanceof ContentRevisionVirtualFile) { ContentRevision revision = ((ContentRevisionVirtualFile)file).getContentRevision(); filePath = revision.getFile(); revisionNumber = revision.getRevisionNumber(); } if (filePath == null || revisionNumber == null) return null; if (revisionNumber instanceof TextRevisionNumber || revisionNumber == VcsRevisionNumber.NULL) { return null; } AbstractVcs vcs = VcsUtil.getVcsFor(project, filePath); return vcs != null ? new AnnotationData(vcs, filePath, revisionNumber) : null; }