code: public void free()
      {
          int iOldEditMode = 0;
          if (m_record != null) // First, release the record for this table
          {
              iOldEditMode = this.getRecord().getEditMode();
              this.getRecord().setEditMode(iOldEditMode | DBConstants.EDIT_CLOSE_IN_FREE);    // This is a cludge... signals tables that this is the last close()!
          }
          this.close();
          if (m_record != null) // First, release the record for this table
              this.getRecord().setEditMode(iOldEditMode);   // This is a cludge... signals tables that this is the last close()!
  
          super.free(); // Set the record's table reference to null.
  
          if (m_database != null)
              m_database.removeTable(this);
          m_database = null;
          m_dataSource = null;
          m_objectID = null;
      }
docs: Free this table object.
  Don't call this directly, freeing the record will free the table correctly.
  You never know, another table may have been added to the table chain.
  First, closes this table, then removes me from the database.