private IEnumerable <FieldResult> ProcessField(InvoiceTemplate template, Document document, InvoiceField field) { var result = extractor.Extract(field, document).ToArray(); foreach (var aggregator in aggregators) { if (!aggregator.CanHandle(field)) { continue; } IEnumerable <FieldResult> aggregated = aggregator.Aggregate(template, field, result); foreach (FieldResult item in aggregated) { yield return(item); } yield break; } foreach (var fieldResult in result) { yield return(fieldResult); } }