TCast(_,Some _) can throw
try to detect closure vars
add awesome documentation