doesn't need to be T, `cast[U](u: U)`