Support autodowncasting when passing pointers into val