class AbstractActivity implements Activity {

    @Override
    public void onOpen() {
        if (this.place == null) {
            throw new IllegalStateException("Activity " + this + " has not been started");
        }
        if (open) {
            throw new IllegalStateException("Activity " + this + " already open");
        }
        open = true;
        placeManager.executeOnOpenCallbacks(this.place);
    }

    public  AbstractActivity(final PlaceManager placeManager);

}