docs: public Object next()
      {
          int iOldKeyOrder = m_recFieldData.getDefaultOrder();
          try {
              if (m_bFirstTime)
                  this.scanSharedFields();
  
              if (m_iCurrentIndex >= m_vFieldList.size())
                  return null;    // EOF
              FieldSummary fieldSummary = (FieldSummary)m_vFieldList.elementAt(m_iCurrentIndex);
              m_iCurrentIndex++;
  
              m_recFieldData.setKeyArea(FieldData.ID_KEY);
              m_recFieldData.addNew();
              m_recFieldData.getField(FieldData.kID).setData(fieldSummary.m_objID);
              if (!m_recFieldData.seek(null))
                  return null;    // Never
              
              if (fieldSummary.m_strNewBaseField != null)
                  m_recFieldData.getField(FieldData.BASE_FIELD_NAME).setString(fieldSummary.m_strNewBaseField);
              if (fieldSummary.m_strNewFieldClass == UNUSED)
              {
                  m_recFieldData.getField(FieldData.FIELD_CLASS).setString(fieldSummary.m_strNewFieldClass);
                  m_recFieldData.getField(FieldData.DEFAULT_VALUE).setString(DBConstants.BLANK);
                  m_recFieldData.getField(FieldData.INITIAL_VALUE).setString(DBConstants.BLANK);
              }
              else if (this.inBaseField(fieldSummary.m_strFieldFileName, m_rgstrClasses))
              {   // This field is in a base record class, so fake the record to think it just overrides the field
                  m_recFieldData.addNew();
                  m_recFieldData.getField(FieldData.BASE_FIELD_NAME).setString(fieldSummary.m_strFieldName);
                  m_recFieldData.getField(FieldData.FIELD_NAME).setString(fieldSummary.m_strFieldName);
                  m_recFieldData.getField(FieldData.FIELD_FILE_NAME).setString(m_rgstrClasses[m_rgstrClasses.length-1]);
              }
              m_recFieldData.getField(FieldData.INCLUDE_SCOPE).setValue(fieldSummary.m_iIncludeScope);
  
              return m_recFieldData;  // This is the next field data record
              
          } catch (DBException ex)    {
              ex.printStackTrace();
              return null;
          } finally {
              m_recFieldData.setKeyArea(iOldKeyOrder);
          }
      }