public override TemplateCollection GetTemplates(CallContext context) { #if DEBUG var timer = Stopwatch.StartNew(); #endif var headTemplates = HeadProvider.GetTemplates(context) ?? EmptyTemplates; var readOnlyTemplates = ReadOnlyProviders .SelectMany(x => x .GetTemplates(context) ?? EmptyTemplates); var templates = headTemplates .Concat(readOnlyTemplates) .GroupBy(x => x.ID).Select(x => x.First()) // .Distinct() .ToArray(); var result = new TemplateCollection(); result.Reset(templates); #if DEBUG this.Trace(result, timer, context); #endif return(result); }