docs: public void writeRecordClassDetail(String strRecordClass)
      {
          ClassInfo recClassInfo = (ClassInfo)this.getMainRecord();
          try   {
              this.readRecordClass(strRecordClass);
              if (m_MethodNameList.size() != 0)
                  m_MethodNameList.removeAllElements();
              this.writeClassInterface();
          
              m_StreamOut.writeit("private static final long serialVersionUID = 1L;\n");
  
              Record recFieldData = this.getRecord(FieldData.FIELD_DATA_FILE);
              Record recFileHdr = this.getRecord(FileHdr.FILE_HDR_FILE);
              FieldIterator fieldIterator = new FieldIterator(recFileHdr, recClassInfo, recFieldData, true);
          	this.writeFieldOffsets(fieldIterator, CodeType.THICK); // Write the BaseField offsets
              this.writeKeyOffsets(CodeType.THICK);   // Write the Key offsets
          
              this.writeClassFields(CodeType.THICK);
              this.writeDefaultConstructor(strRecordClass);
              
              this.writeRecordInit();
              this.writeInit();   // Special case... zero all class fields!
          
              recFileHdr.getField(FileHdr.FILE_NAME).setString(strRecordClass);
              recFileHdr.setKeyArea(FileHdr.FILE_NAME_KEY);
              boolean bFileType = (recFileHdr.seek("="));
              if (bFileType) // Is there a file with this name?
              {
                  String dBFileName = recFileHdr.getField(FileHdr.FILE_MAIN_FILENAME).getString();
                  if (dBFileName.length() != 0)
                  {
                      dBFileName = this.fixSQLName(dBFileName);
                      if (dBFileName.equalsIgnoreCase("NONE"))
                          dBFileName = null;
                  }
                  else if (recFileHdr.getField(FileHdr.TYPE).toString().indexOf("MAPPED") == -1)
                      dBFileName = strRecordClass;  // Default file name (unless mapped)
  
                  if ((dBFileName != null) && (dBFileName.length() > 0))
                      if (!this.readThisMethod("getTableNames"))
                  {
                  	this.writeMethodInterface(null, "getTableNames", "String", "boolean bAddQuotes", "", "Get the table name.", null);
                  	m_StreamOut.writeit("\treturn (m_tableName == null) ? Record.formatTableNames(" + this.convertNameToConstant(strRecordClass + "File") + ", bAddQuotes) : super.getTableNames(bAddQuotes);\n}\n");
                  }
  
                  String recordName = recFileHdr.getField(FileHdr.FILE_REC_CALLED).getString();    // Description of a record
                  String databaseName = recFileHdr.getField(FileHdr.DATABASE_NAME).getString(); // Database name
                  String strDBType = recFileHdr.getField(FileHdr.TYPE).getString(); // Is Remote file?
                  if (recordName.length() != 0)   // Valid Name
                  {
                      if (!this.readThisMethod("getRecordName"))
                      {
                      	this.writeMethodInterface(null, "getRecordName", "String", "void", "", "Get the name of a single record.", null);
                      	m_StreamOut.writeit("\treturn \"" + recordName + "\";\n}\n");
                      }
                  }
                  if (databaseName.length() > 0)
                  {   // If you don't supply a database name, you better supply your own method (See DatabaseInfo).
                      if (!this.readThisMethod("getDatabaseName"))
                      {
                      	this.writeMethodInterface(null, "getDatabaseName", "String", "void", "", "Get the Database Name.", null);
                      	m_StreamOut.writeit("\treturn \"" + databaseName + "\";\n}\n");
                      }
                  }
                  if (strDBType.length() > 0)
                  {
                      if (!this.readThisMethod("getDatabaseType"))
                      {
                      	this.writeMethodInterface(null, "getDatabaseType", "int", "void", "", "Is this a local (vs remote) file?", null);
                      	strDBType = this.fixDBType(strDBType, "DBConstants.");
                      	m_StreamOut.writeit("\treturn " + strDBType + ";\n}\n");
                      }
                  }
                  this.writeFileMakeViews();
              }
              else
                  if (recClassInfo.getField(ClassInfo.CLASS_TYPE).getString().equalsIgnoreCase("Record"))
                      m_StreamOut.writeit("\npublic static final String " + this.convertNameToConstant(strRecordClass + "File") + " = null;\t// Screen field\n");    // Screen fields
                      
  
              this.writeSetupField();
              this.readRecordClass(strRecordClass); // Must re-read this record class
  
              if (bFileType) // Is there a file with this name?
                  this.writeSetupKey(CodeType.THICK, true);
              this.writeClassMethods(CodeType.THICK);       // Write the remaining methods
              this.writeEndCode(true);
          } catch (DBException ex)   {
              ex.printStackTrace();
          }
      }