private void disposePage() {
      try {
        if (isSharedPage) {
          isSharedPage = false;
          return;
        }

        //RC: in theory, we should dispose only cached pages, because !cached are already release()-ed
        // in .releasePage(). But there are .disposePage() calls without previous releasePage(): i.e.
        // in .setAddress() -- hence we always release page if it is !null -- i.e. if there is page to
        // release:
        if (page != null && keepPageAcquiredUntilDispose) {
          page.release();
        }
      }
      finally {
        page = null;
      }
    }
private void disposePage()