docs: public void writeRecordInterface(String strClassName)
      {
          ClassInfo recClassInfo = (ClassInfo)this.getMainRecord();
          Record recFileHdr = this.getRecord(FileHdr.FILE_HDR_FILE);
          FieldData recFieldData = (FieldData)this.getRecord(FieldData.FIELD_DATA_FILE);
          if (!recClassInfo.isARecord(false))
              return;
          String strDBType = recFileHdr.getField(FileHdr.TYPE).getString(); // Is Remote file?
          strDBType = this.fixDBType(strDBType, "Constants.");
          String strPackage = this.getPackage(CodeType.INTERFACE);
      // Now, write the field resources (descriptions)
          String strBaseClass = recClassInfo.getField(ClassInfo.BASE_CLASS_NAME).getString();
          if ((strBaseClass.equalsIgnoreCase("Record")) || (strBaseClass.equalsIgnoreCase("QueryRecord")))
              strBaseClass = "";  // .model.db.Rec
          this.writeHeading(strClassName + "Model", strPackage, ClassProject.CodeType.INTERFACE);
          this.writeIncludes(CodeType.INTERFACE);
  
          String baseClassPackage = "";
          if (!strBaseClass.equals(""))
          {
              this.readRecordClass(strBaseClass);     // Return the record to the original position
              ClassProject classProject = (ClassProject)((ReferenceField)recClassInfo.getField(ClassInfo.CLASS_PROJECT_ID)).getReference();
              baseClassPackage = classProject.getFullPackage(CodeType.INTERFACE, recClassInfo.getField(ClassInfo.CLASS_PACKAGE).toString());
              if ((baseClassPackage.equalsIgnoreCase("org.jbundle.model.db")) || (baseClassPackage.equalsIgnoreCase("org.jbundle.model.base.db")))
                  strBaseClass = "";  // The only interface in the model package is 'Rec'.
              strBaseClass = strBaseClass + "Model";
          }
          if ((strBaseClass.equals("")) || (strBaseClass.equals("Model")))
              strBaseClass = "Rec";
          if (strBaseClass.equals("Rec"))
              baseClassPackage = "org.jbundle.model.db";
          m_StreamOut.writeit("import " + baseClassPackage + ".*;\n");            
          m_StreamOut.writeit("\n");
          
          m_StreamOut.writeit("public interface " + strClassName + "Model extends " + strBaseClass + "\n");
          m_StreamOut.writeit("{\n");
          m_StreamOut.setTabs(+1);
  
          this.readRecordClass(strClassName);     // Return the record to the original position
          FieldIterator fieldIterator = new FieldIterator(recFileHdr, recClassInfo, recFieldData, true);
          this.writeFieldOffsets(fieldIterator, CodeType.INTERFACE);
          this.writeKeyOffsets(CodeType.INTERFACE);   // Write the Key offsets
          this.writeClassFields(CodeType.INTERFACE);    // Write the thin class fields.
          
          m_StreamOut.writeit("\n");
  
          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 = strClassName;  // Default file name (unless mapped)
  
          if ((dBFileName != null) && (dBFileName.length() > 0))
          {
              m_StreamOut.writeit("public static final String " + this.convertNameToConstant(strClassName) + "_FILE = \"" + dBFileName + "\";\n");
  
              m_StreamOut.writeit("public static final String THIN_CLASS = \"" + this.getPackage(CodeType.THIN) + "." + strClassName + "\";\n");
              m_StreamOut.writeit("public static final String THICK_CLASS = \"" + this.getPackage(CodeType.THICK) + "." + strClassName + "\";\n");
          }
           
          if (m_MethodNameList.size() != 0)
              m_MethodNameList.removeAllElements();
          this.writeClassMethods(CodeType.INTERFACE);   // Write the methods (that are) interfaces
  
          m_StreamOut.setTabs(-1);
          this.writeEndCode(true);
          recFieldData.close();
  
          this.readRecordClass(strClassName);     // Return the record to the original position
      }