public FailureMessages Merge(FailureMessages failure) { var result = this; foreach (var f in failure.All <FailureMessage>()) { result = result.With(f); } return(result); }
private IEnumerable <T> All <T>() where T : FailureMessage { if (this == Empty) { yield break; } if (head is T) { yield return((T)head); } foreach (T message in tail.All <T>()) { yield return(message); } }