It could probably handle deeply nested trees from the `SemanticComparer<T>` level but that wouldn't be so extensible..

About the Specification interface:

The `SemanticComparer<T>` class looks implicitly like a boolean 'And' Composite over `IMemberComparer` instances. Probably, a Specification interface could make that explicit.