Allows values, e.g. new object(), causing `InvalidCastException`s when used. Should just return throw `ArgumentException` when set like everything else