code: public void free()
      {
          if ((m_mapChildHolders != null) && (m_mapChildHolders.size() > 0))
          {
              Utility.getLogger().info("Not all sub-sessions freed by client - I will free them");
              synchronized (this)
              {
                  Object[] keys = m_mapChildHolders.keySet().toArray(); // Since these are removed on free
                  for (Object strID : keys)
                  {
                      BaseHolder baseHolder = (BaseHolder)m_mapChildHolders.get(strID);
                      baseHolder.free();  // Should be removed from collection.
                  }
                  m_mapChildHolders.clear();
              }
          }
          m_mapChildHolders = null;
          if (m_parentHolder != null)
              m_parentHolder.remove(this);
          m_parentHolder = null;
          m_remoteObject = null;
      }
docs: Free the resources for this holder.