Indeed, passing a null reference in the `SourceType` constructor makes the `CreateProxy` method to fail.

(The code fails [here](https://github.com/AutoFixture/AutoFixture/blob/master/Src/SemanticComparison/ProxyGenerator.cs#L350) because the `parameters` array contains elements which are `null`.)

##### Scenario 1

Why should someone supply a null reference through a class constructor? Normally, I would expect an `ArgumentNullException` to be thrown from the class constructor before even going further with the proxy creation.

If we agree that this is not a good practice, we should let the `CreateProxy` method fail by throwing an `InvalidOperationException`.

The [`InvalidOperationException` is handled](https://github.com/AutoFixture/AutoFixture/blob/master/Src/SemanticComparison/Likeness.cs#L76-83) and no additional work is required.

##### Scenario 2

We could try to *force* the proxy creation by supplying (instead of a null reference) some default value.

* For value types this would be `default(T)`.
* For reference types `default(T)` returns `null` so there isn't much we can do here.

-----

Effectively addressing Scenario 2 looks tricky - Scenario 1 is much safer, I think...