code: void destroy( HttpSession session )
      {
          onDestroy();    // for backwards compatiblity
          super.destroy( session );
  
          //
          // We may have lost our transient ServletContext reference.  Try to get the ServletContext reference from the
          // HttpSession object if necessary.
          //
          ServletContext servletContext = getServletContext();
          if ( servletContext == null && session != null ) servletContext = session.getServletContext();
  
          if ( servletContext != null )
          {
              PageFlowEventReporter er = AdapterManager.getServletContainerAdapter( servletContext ).getEventReporter();
              er.flowControllerDestroyed( this, session );
          }
      }
docs: Internal destroy method that is invoked when this object is being removed from the session.  This is a
  framework-invoked method; it should not normally be called directly.