docs: public void free()
      {
          if (propertyChange != null)
          {
              PropertyChangeListener[] propertyChangeListeners = propertyChange.getPropertyChangeListeners();
              for (PropertyChangeListener propertyChangeListener : propertyChangeListeners)
              {
                  propertyChange.removePropertyChangeListener(propertyChangeListener);
              }
          }
          for (int i = m_vKeyAreaList.size() - 1 ; i >= 0 ;i--)
          {
              KeyAreaInfo keyArea = (KeyAreaInfo)m_vKeyAreaList.elementAt(i);
              keyArea.free();
          } 
          m_vKeyAreaList.removeAllElements();
          m_vKeyAreaList = null;
  
          for (int i = m_vFieldInfo.size() - 1 ; i >= 0 ;i--)
          {
              FieldInfo field = (FieldInfo)m_vFieldInfo.elementAt(i);
              field.free();
          } 
          m_vFieldInfo.removeAllElements();
          m_vFieldInfo = null;
  
          if (m_table != null)
          {
              m_table.setRecord(null);    // Don't try to free me
              m_table.free();
              m_table = null;
          }
      }