docs: public void free()
      {
          if (BaseApplet.getSharedInstance() != null)
          	if (BaseApplet.getSharedInstance().getApplet() == null)
          		if (this.getParent() != null)
          			this.getParent().remove(this);      // Remove from frame
          if (this.getHelpView() != null)
          	this.getHelpView().free();
          this.freeSubComponents(this); // Free all the sub-screens.
      	if (m_recordOwnerCollection != null)
      		m_recordOwnerCollection.free();
      	m_recordOwnerCollection = null;
          boolean bEmptyTaskList = true;
          if (m_application != null)
          	bEmptyTaskList = m_application.removeTask(this);  // Remove this session from the list
          if (bEmptyTaskList)
              this.quit();
          if (Application.getRootApplet() == this)
          {
              Application.setRootApplet(null);
          	if (m_application.getTaskList() != null)
          	{
  	            for (Task task : m_application.getTaskList().keySet())
  	            {
  	                if (task instanceof BaseApplet)
  	                	Application.setRootApplet((BaseApplet)task);     // New main applet
  	            }
          	}
          }
          m_application = null;
          if (bEmptyTaskList)
              if (gbStandAlone)
                  if (ClassServiceUtility.getClassService().getClassFinder(null) == null)
                      System.exit(0); // Hack - Can't figure out how to get this to applet to quit every time.
      }