class AbstractActivity implements Activity {

    @Override
    public void onClose() {
        if (this.place == null) {
            throw new IllegalStateException("Activity " + this + " has not been started");
        }
        if (!open) {
            throw new IllegalStateException("Activity " + this + " not open");
        }
        open = false;
        placeManager.executeOnCloseCallbacks(this.place);
    }

    public  AbstractActivity(final PlaceManager placeManager);

}