It is not clear to me that the CL chose the right approach. Given that the Read function panics when other conditions that must be satisfied are not satisfied, it seems ok to panic in this case as well.
My point is that in the case when a pointer to a struct is passed and struct itself is incorrect then the reflect-related code may (or may not?) panic.
It seems to me that documentation on Read is a little bit unclear.