I think using a Specification interface sounds like a great idea :)

How would `IEqualityComparer` handle the situation with deeply nested trees?