FileCoverageInfo (@NotNull VirtualFile file, @NotNull final Annotator annotator, @NotNull final ProjectData projectData, @NotNull final Map<String, String> normalizedFiles2Files) { file = file.getCanonicalFile() != null ? file.getCanonicalFile() : file; assert file != null; final String filePath = normalizeFilePath(file.getPath()); // process file final FileCoverageInfo info; final ClassData classData = getClassData(filePath, projectData, normalizedFiles2Files); if (classData != null) { // fill info from coverage data info = fileInfoForCoveredFile(classData); } else { // file wasn't mentioned in coverage information info = fillInfoForUncoveredFile(VfsUtilCore.virtualToIoFile(file)); } if (info != null) { annotator.annotateFile(filePath, info); } return info; }