docs: public void writeThinRecord(String strClassName)
      {
          ClassInfo recClassInfo = (ClassInfo)this.getMainRecord();
          if (!recClassInfo.isARecord(false))
              return;
          Record recFileHdr = this.getRecord(FileHdr.FILE_HDR_FILE);
          FieldData recFieldData = (FieldData)this.getRecord(FieldData.FIELD_DATA_FILE);
          String strDatabaseName = recFileHdr.getField(FileHdr.DATABASE_NAME).getString();   // Database name
          String strDBType = recFileHdr.getField(FileHdr.TYPE).getString(); // Is Remote file?
          strDBType = this.fixDBType(strDBType, "Constants.");
          String strPackage = this.getPackage(CodeType.THIN);
          String implementsPackage = this.getPackage(CodeType.INTERFACE);
          if (implementsPackage.equalsIgnoreCase("org.jbundle.model.base.db"))
              implementsPackage = "org.jbundle.model.db";
      // Now, write the field resources (descriptions)
          String strBaseClass = recClassInfo.getField(ClassInfo.BASE_CLASS_NAME).getString();
          if ((strBaseClass.equalsIgnoreCase("Record")) || (strBaseClass.equalsIgnoreCase("QueryRecord")))
              strBaseClass = "FieldList";
          this.writeHeading(strClassName, strPackage, ClassProject.CodeType.THIN);
          this.writeIncludes(CodeType.THIN);
  
          m_StreamOut.writeit("import java.util.*;\n");
          m_StreamOut.writeit("import " + DBConstants.ROOT_PACKAGE + "thin.base.util.*;\n\n");
          m_StreamOut.writeit("import " + DBConstants.ROOT_PACKAGE + "thin.base.db.*;\n\n");
  
          if (!strBaseClass.equals("FieldList"))
          {
              this.readRecordClass(strBaseClass);     // Return the record to the original position
              ClassProject classProject = (ClassProject)((ReferenceField)recClassInfo.getField(ClassInfo.CLASS_PROJECT_ID)).getReference();
              String baseClassPackage = classProject.getFullPackage(CodeType.THIN, recClassInfo.getField(ClassInfo.CLASS_PACKAGE).toString());
              if (baseClassPackage.equalsIgnoreCase("org.jbundle.thin.base.db"))
              {
                  baseClassPackage = null;
                  strBaseClass = "FieldList"; // Only valid thin base field in this package
              }
              if (baseClassPackage != null)
                  m_StreamOut.writeit("import " + baseClassPackage + ".*;\n");            
          }
          m_StreamOut.writeit("import " + implementsPackage + ".*;\n");
          
          m_StreamOut.writeit("\n");
          m_StreamOut.writeit("public class " + strClassName + " extends " + strBaseClass + "\n");
          m_StreamOut.setTabs(+1);
          String implementsClass = strClassName + "Model";
          m_StreamOut.writeit("implements " + implementsClass + "\n");
          m_StreamOut.setTabs(-1);
          m_StreamOut.writeit("{\n");
          m_StreamOut.setTabs(+1);
          m_StreamOut.writeit("private static final long serialVersionUID = 1L;\n");
  
          this.readRecordClass(strClassName);     // Return the record to the original position
          FieldIterator fieldIterator = new FieldIterator(recFileHdr, recClassInfo, recFieldData, false);
          this.writeFieldOffsets(fieldIterator, CodeType.THIN);
          this.writeClassFields(CodeType.THIN);    // Write the thin class fields.
          
          m_StreamOut.writeit("\n");
  
          m_StreamOut.writeit("public " + strClassName + "()\n");
          m_StreamOut.writeit("{\n");
          m_StreamOut.setTabs(+1);
          m_StreamOut.writeit("super();\n");
          m_StreamOut.setTabs(-1);
          m_StreamOut.writeit("}\n");
          m_StreamOut.writeit("public " + strClassName + "(Object recordOwner)\n");
          m_StreamOut.writeit("{\n");
          m_StreamOut.setTabs(+1);
          m_StreamOut.writeit("this();\n");
          m_StreamOut.writeit("this.init(recordOwner);\n");
          m_StreamOut.setTabs(-1);
          m_StreamOut.writeit("}\n");
  
          recFileHdr.getField(FileHdr.FILE_NAME).setString(strClassName);
          recFileHdr.setKeyArea(FileHdr.FILE_NAME_KEY);
  	try {
          boolean bFileType = (recFileHdr.seek("="));
          if (bFileType) // Is there a file with this name?
              this.writeFields(strClassName, strDatabaseName, strDBType, recClassInfo, recFileHdr, recFieldData, fieldIterator);
  	} catch (DBException ex) {
  		ex.printStackTrace();
  	}
          
          m_MethodNameList.removeAllElements();
          this.writeClassMethods(CodeType.THIN);
          
          m_StreamOut.setTabs(-1);
          this.writeEndCode(true);
          recFieldData.close();
  
          this.readRecordClass(strClassName);     // Return the record to the original position
      }