casting sugar for procedure parameters.
It is specially useful in event handling scenarios:
type
Event = ref object of RootObj
MouseEvent = ref object of Event
mousex, mousey: int
elem.addEventListener proc(me: MouseEvent) = discard # error: Expected `Event` but got `MouseEvent`
elem.addEventListener proc(me: Event as MouseEvent) {.caster.} = # works!
echo me.mousex
# ...
see docs or ./tests/test.nim
.