>Attempting to follow the Reused Abstractions Principle, it's always a design smell to me when we introduce yet another interface with a single implementation. Is there some other abstraction we can reuse?

Yes, there are other similar abstractions. My first thought was simply allowing `System.Func<ParameterInfo, MemberInfo, bool>` to be passed in.

I chose not to use [something like an `IEqualityComparer<T>`](https://github.com/AutoFixture/AutoFixture/issues/167#issuecomment-24027755), because the `T` would have to be of type `object` (`ParameterInfo` and `FieldInfo` do not share a common ancestry). Similarly, `IEqualityComparer` gives no indication to consumers what types must be used for comparison. Additionally, the general idea of calling them 'equal' (as opposed to 'matched') seems wrong to me.

> Before we answer that question, is this the only comparison we'd ever need to have? How about PropertyInfo, FieldInfo, etc.?

In the context of `ConstructorInitializedMemberAssertion`, I don't see why we'd ever need more than matching bewteen:
 * ParameterInfo <-> FieldInfo
 * ParameterInfo <-> PropertyInfo

If you mean in the larger context of AutoFixture or Idioms, then you might be the best person to answer that question.