docs: public void free()
      {
          if (m_mapTable != null)
          {
              Iterator<BaseTable> iterator = this.getTables();
              while (iterator.hasNext())
              {
                  BaseTable table = iterator.next();
                  if ((table != null) && (table != this.getNextTable()))
                  {
                      Record record = table.getRecord();
                      if (record != null)
                          record.free();
                  }
              }
              m_mapTable.clear();
              m_mapTable = null;
          }
          if (m_tableNext != null)
          {
              BaseTable baseTable = m_tableNext;
              m_tableNext = null;   // This will prevent the record from being freed (freed in prev. line)
              baseTable.free(); // This will also free the record
              m_record = null;    // Being paranoid
          }
          super.free();
      }