```
void run() {
    ...
    if (done) return cancel();
    ...
}

```

where `cancel()` return `void`. This won't compile... and I can *almost* understand why. But if I want to return a void from a void, why not? Instead, I end up writing something like this:

```
if (done) {
    cancel();
    return;
}

```

I'm not looking for code style suggestions, I want to know why Java expressly prohibits this type of void return. Any info is appreciated, thanks.