The ArgumentTypeException's ISerializable ctor reads ExpectedType and ActualType from the SerializationInfo, but GetObjectData doesn't put it in there.
until this is implemented, a LINQ provider can just register it manually:
methodCallExpressionNodeTypeRegistry.Register (new[] { typeof (List<>).GetMethod ("Contains")}, typeof (ContainsExpressionNode));
methodCallExpressionNodeTypeRegistry.Register (new[] { typeof (ICollection<>).GetMethod ("Contains")}, typeof (ContainsExpressionNode));