Either use closures inside the casts struct or some magic method name like `castFirstName`.
Check if we need to handle both get and sets.