if (annotatedFile == null) return null;
final Module module = ModuleUtilCore.findModuleForPsiElement(psiFile);
if (module == null) return null;
final DartSdk sdk = DartSdk.getGlobalDartSdk();
if (sdk == null) return null;
if (psiFile instanceof XmlFile && !containsDartEmbeddedContent((XmlFile)psiFile)) return null;
if (FileUtil.isAncestor(sdk.getHomePath(), annotatedFile.getPath(), true)) return null;
final List<VirtualFile> libraries = DartResolveUtil.findLibrary(psiFile, GlobalSearchScope.projectScope(project));
final VirtualFile libraryFile = libraries.isEmpty() || libraries.contains(annotatedFile) ? annotatedFile : libraries.get(0);
return new DartAnnotatorInfo(DartAnalyzerService.getInstance(project).getAnalysisContext(annotatedFile, sdk.getHomePath()),
DartFileBasedSource.getSource(project, annotatedFile),
DartFileBasedSource.getSource(project, libraryFile));
}