IMO jumping to labels is obviated in modern languages by low cost inline lambdas. Instead of complex loop breaking logic, stick the body in a lambda and use return. It's easier for me to follow and gives you more control over what's in scope. It also makes refactoring easier later on.