docs: public void writeFieldOffsets(FieldIterator fieldIterator, CodeType codeType)
      { // Now, write all the field offsets out in the header file
          ClassInfo recClassInfo = (ClassInfo)this.getMainRecord();
          boolean firstTime = true;
          String strBaseFieldName;
          String strFieldName = "MainField";     // In case there are no fields
          Record recFieldData = this.getRecord(FieldData.FIELD_DATA_FILE);
  
          boolean alwaysInclude = false;
          boolean alwaysExclude = false;
          if (recClassInfo.isARecord(false))
          {   // For record, all the fields are in the model class
              if (codeType == CodeType.INTERFACE)
                  alwaysInclude = true;
              else
                  alwaysExclude = true;
          }
          else
          {   // screen record are thick only - no model
              if (codeType == CodeType.THICK)
                  alwaysInclude = true;
              else
                  alwaysExclude = true;
          }
          for (int pass = 1; pass <= 2; ++pass) // Do this two times (two passes)
          {
              fieldIterator.close();
              while (fieldIterator.hasNext())
              {
                  fieldIterator.next();
                  strFieldName = recFieldData.getField(FieldData.FIELD_NAME).getString();
                  strBaseFieldName = recFieldData.getField(FieldData.BASE_FIELD_NAME).getString();
                  String type = "String";
                  switch (pass)
                  {
                  case 1:     // First, add all fields based on the super.New8 class
                      if (strBaseFieldName.length() > 0)
                      {
                          firstTime = false;
                          String value = convertNameToConstant(strBaseFieldName);
                          String strPre = DBConstants.BLANK;
                          if (recFieldData.getField(FieldData.FIELD_NAME).getString().equals(strBaseFieldName))
                              strPre = "//";
                          strFieldName = convertNameToConstant(strFieldName);
                          boolean includeThis = ((IncludeScopeField)recFieldData.getField(FieldData.INCLUDE_SCOPE)).includeThis(codeType, true);
                          if (alwaysInclude)
                              includeThis = true;
                          if (alwaysExclude)
                              includeThis = false;
                          if (includeThis)
                              m_StreamOut.writeit("\n" + strPre + "public static final " + type + " " + strFieldName + " = " + value + ";");
                      }
                      break;
                  case 2:     // Now, add all fields new to this class
                      if (strBaseFieldName.length() == 0)
                      {
                          firstTime = false;
                          boolean includeThis = ((IncludeScopeField)recFieldData.getField(FieldData.INCLUDE_SCOPE)).includeThis(codeType, true);
                          if (alwaysInclude)
                              includeThis = true;
                          if (alwaysExclude)
                              includeThis = false;
                          if (Rec.ID.equals(strFieldName))
                              includeThis = false;    // HACK
                          if (includeThis)
                              m_StreamOut.writeit("\n" + "public static final String " + this.convertNameToConstant(strFieldName) + " = \"" + strFieldName + "\";");
                          break;
                      }
                  }
              }
              recFieldData.close();
              if (pass == 2)
              {
                  if (!firstTime)
                      m_StreamOut.writeit("\n");
              }
          } // End of pass loop
          
      }