Ensuring correct propagation of throwing types (the throwing type must always be the outermost)