code: public boolean close(PageComponent pageComponent) {
          if (!pageComponent.canClose()) {
              return false;
          }
  
          if (!pageComponents.contains(pageComponent)) {
              return false;
          }
  
          if (pageComponent == activeComponent) {
              fireFocusLost(pageComponent);
              activeComponent = null;
          }
  
          doRemovePageComponent(pageComponent);
          pageComponents.remove(pageComponent);
          pageComponent.removePropertyChangeListener(pageComponentUpdater);
          if (pageComponent instanceof ApplicationListener && getApplicationEventMulticaster() != null) {
              getApplicationEventMulticaster().removeApplicationListener((ApplicationListener) pageComponent);
          }
  
          pageComponent.dispose();
          fireClosed(pageComponent);
          if (activeComponent == null) {
              setActiveComponent();
          }
          return true;
      }
docs: Closes the given <code>PageComponent</code>. This method disposes the <code>PageComponent</code>, triggers all
  necessary events ("focus lost" and "closed"), and will activate another <code>PageComponent</code> (if there is
  one).
  <p>
  Returns <code>false</code> if this <code>ApplicationPage</code> doesn't contain the given
  <code>PageComponent</code>.
  
  @param pageComponent
  the <code>PageComponent</code>
  @return boolean <code>true</code> if pageComponent was successfully closed.