| Small correction: both implementations do type checking, but only when mapped-by is discovered. When is read from annotation is assumed to be valid, and it may not be. There are other checks further down the line that ensure that the mapped-by field always exist, but the types have to be verified as well. |