private List<IParaFragment> GetOccurrencesOfAnalyses(IEnumerable<IAnalysis> analyses)
{
var result = new List<IParaFragment>();
var interestingParas = ParagraphsToSearch;
foreach (var analysis in analyses)
{
// Don't create this one layer further out! We want to avoid processing the same segment
// repeatedly for the SAME analysis, but not if other analyses occur in it.
var segs = new HashSet<ISegment>();
foreach (var seg in analysis.Wordform.OccurrencesInTexts)
{
if (!interestingParas.Contains(seg.Owner as IStTxtPara))
continue;
if (segs.Contains(seg))
continue; // wordform occurs in it more than once, but we only want to add the occurences once.
segs.Add(seg);
foreach (var occurrence in seg.GetOccurrencesOfAnalysis(analysis, int.MaxValue, true))
result.Add(occurrence);
}
}
return result;
}