Why don't we call this method `type_cast_for_write` as well? Not that I'm overly fond of the current name but introducing another one for the same concept will increase the complexity even more.