…ut trying to match it with a non-nullable IsAny.
This fixes issue #90.
The problem was that Matches() has to cast its input to the type parameter T in order to call the Condition function.
Since T is a reference type, it does not accept nulls and throws a NullReferenceException at the site of the cast.
We get around this by treating value types as a special case. If T is a value type and the input is null, it clearly doesn't match (since value types are not nullable).