template iff*[T](a: T, t: typedesc, e: stmt): stmt {.immediate.} =
if a of t:
let a = t(a)
e
type
Parent = ref object of RootObj
SonA = ref object of Parent
method doStuff(a: SonA) = echo "Works"
# EXAMPLE
proc create: Parent = SonA()
let p: RootRef = create()
iff p, SonA:
doStuff p
dGVtcGxhdGUgaWZmKltUXShhOiBULCB0OiB0eXBlZGVzYywgZTogc3RtdCk6IHN0bXQgey5pbW1lZGlhdGUufSA9CiAgaWYgYSBvZiB0OgogICAgbGV0IGEgPSB0KGEpCiAgICBlCiAgCnR5cGUKICBQYXJlbnQgPSByZWYgb2JqZWN0IG9mIFJvb3RPYmoKICBTb25BICAgPSByZWYgb2JqZWN0IG9mIFBhcmVudAogIAptZXRob2QgZG9TdHVmZihhOiBTb25BKSA9IGVjaG8gIldvcmtzIgoKIyBFWEFNUExFCnByb2MgY3JlYXRlOiBQYXJlbnQgPSBTb25BKCkKbGV0IHA6IFJvb3RSZWYgPSBjcmVhdGUoKQogIAppZmYgcCwgU29uQToKICBkb1N0dWZmIHA=