private ClangTranslationUnit GetAndParseTranslationUnit(ISourceFile sourceFile, List<ClangUnsavedFile> unsavedFiles)
{
var dataAssociation = GetAssociatedData(sourceFile);
if (dataAssociation.TranslationUnit == null)
{
dataAssociation.TranslationUnit = GenerateTranslationUnit(sourceFile, unsavedFiles);
}
// Always do a reparse, as a workaround for some issues in libclang 3.7.1
dataAssociation.TranslationUnit.Reparse(unsavedFiles.ToArray(), ReparseTranslationUnitFlags.None);
return dataAssociation.TranslationUnit;
}