Add isEmpty flag for regions. Solves #1920.

Adds an "isEmpty" flag for regions which will prevent the `empty` method from executing a second time if it is already empty. See #1920 for more details.
Yeah, the `isEmpty` flag is not needed.