docs: public void writeFileDesc()
      {
      // Now write the record classes for any other records belonging in this source file
          ClassInfo classInfo = new ClassInfo(this);
          String strFileNameTarget = m_strFileName;
          String strBaseFileName = DBConstants.BLANK;
          classInfo.setKeyArea(ClassInfo.CLASS_SOURCE_FILE_KEY);
          if ((m_strFileName != null)
              && (m_strFileName.length() != 0))
          {
              StringSubFileFilter fileBehavior = new StringSubFileFilter(m_strFileName, ClassInfo.CLASS_SOURCE_FILE, null, null, null, null);
              fileBehavior.setEndKey(false);          // Manually check for EOF
              classInfo.addListener(fileBehavior);    // Only select records which match m_strFileName
          }
          if (m_strPackage.length() != 0)
              classInfo.addListener(new CompareFileFilter(ClassInfo.CLASS_PACKAGE, m_strPackage, "=", null, false));
          if (m_strProjectID.length() != 0)
              classInfo.addListener(new CompareFileFilter(ClassInfo.CLASS_PROJECT_ID, m_strProjectID, "=", null, false));
  
          try   {
              classInfo.close();
              while (classInfo.hasNext())
              {
                  classInfo.next();
                  if ((m_strFileName == null) || (m_strFileName.length() == 0))
                      if ((m_systemName != null) && (!"base".equalsIgnoreCase(Utility.getSystemSuffix(m_systemName, null))) && (!"_base".equalsIgnoreCase(Utility.getSystemSuffix(m_systemName, null))))
                          if (classInfo.getCounterField().getValue() >= 16777216)
                              continue;   // There must be a better way to tell if this belongs in a base table
                  String strClassName = classInfo.getField(ClassInfo.CLASS_NAME).getString();
                  String strRecordType = classInfo.getField(ClassInfo.CLASS_TYPE).getString();
                  if (strRecordType.length() == 0)
                      strRecordType = " ";
                  //String strPackage =  classInfo.getField(ClassInfo.CLASS_PACKAGE).getString();
                  String strFileName = classInfo.getField(ClassInfo.CLASS_SOURCE_FILE).getString();
                  Record classProject = ((ReferenceField)classInfo.getField(ClassInfo.CLASS_PROJECT_ID)).getReference();
                  if (classProject != null)
                  	if ((classProject.getEditMode() == DBConstants.EDIT_IN_PROGRESS) || (classProject.getEditMode() == DBConstants.EDIT_CURRENT))
                  		if (classProject.getField(ClassProject.SYSTEM_CLASSES).getState() == true)	// Special system classes, don't generate!
                          strFileName = DBConstants.BLANK; // Skip these
                  if (strFileName.length() == 0)
                      continue;
                  if (!strBaseFileName.equals(strFileName))
                  {
                      if (strBaseFileName.length() != 0)
                      {   // Not the first file
                          if ((strFileNameTarget != null) && (strFileNameTarget.length() > 0))
                              if (strFileName.length() < strFileNameTarget.length())
                                  break;  // EOF
                          if ((strFileNameTarget != null) && (strFileNameTarget.length() > 0))
                              if (strFileName.substring(0, strFileNameTarget.length()).compareTo(strFileNameTarget) > 0)
                                  break;  // EOF
                          
                          m_ClassNameList.free();
                          m_ClassNameList = null;
                      }
  
                      NameList aClassNameList = new NameList();
                      m_ClassNameList = aClassNameList;
  
                      strBaseFileName = strFileName;    // Current File
                  }
                  this.writeThisClass(strClassName, strRecordType);
              } // End of write record method(s) loop
              classInfo.close();
          } catch (DBException ex)   {
              ex.printStackTrace();
          }
      }