docs: protected void scanRecordFields(String[] strClassNames, int iClassIndex, boolean bMarkUnused)
      {
          ClassInfo recClassInfo = new ClassInfo(Record.findRecordOwner(m_recClassInfo));
          FieldData recFieldData = new FieldData(Record.findRecordOwner(m_recFieldData));
          String strClassName = strClassNames[iClassIndex];
          try {
              // First, re-read the original class.
              recClassInfo.getField(ClassInfo.CLASS_NAME).setString(strClassName);
              recClassInfo.setKeyArea(ClassInfo.CLASS_NAME_KEY);
              if (!recClassInfo.seek(null))
                  return; // Never
              
              recFieldData.setKeyArea(FieldData.FIELD_FILE_NAME_KEY);
              recFieldData.addListener(new SubFileFilter(recClassInfo.getField(ClassInfo.CLASS_NAME), FieldData.FIELD_FILE_NAME, null, null, null, null));
  
              strClassName = recClassInfo.getField(ClassInfo.CLASS_NAME).toString();
              recFieldData.close();
              while (recFieldData.hasNext())
              {
                  recFieldData.next();
                  
                  int iIndex = this.findField(recFieldData, true);    // Find the base field in my list
                  FieldSummary fieldSummary = new FieldSummary(recFieldData, FieldSummary.RECORD_FIELD);
                  if (iIndex == -1)
                  {
                      m_vFieldList.add(fieldSummary);  // Add this
                  }
                  else
                  {   // If there is a base, replace it with this
                      FieldSummary fieldSummaryBase = (FieldSummary)m_vFieldList.get(iIndex);
                      m_vFieldList.set(iIndex, fieldSummaryBase.mergeNewSummary(fieldSummary, (iClassIndex >= strClassNames.length - 1), strClassName));  // Replace this
                  }
              }
              
              if (bMarkUnused)
              {
                  for (int i = 0; i < m_vFieldList.size(); i++)
                  {
                      FieldSummary fieldSummary = (FieldSummary)m_vFieldList.elementAt(i);
                      if (!this.isInRecord(strClassNames, iClassIndex, fieldSummary.m_strFieldFileName))
                      {
                          fieldSummary.m_strNewFieldClass = UNUSED;
                          fieldSummary.m_strNewBaseField = fieldSummary.m_strFieldName;
                      }
                  }
              }
          } catch (DBException ex)    {
              ex.printStackTrace();
          } finally {
              recClassInfo.free();
              recFieldData.free();
          }
      }