docs: public void setOwner(ListenerOwner owner)
      {
          super.setOwner(owner);
          if (owner == null)
              return;
          if (m_recordMain != null)
          {   // If they are using the main record, then make sure the key area is correct.
              ReferenceField fieldThisRecord = this.getOwner().getReferenceField(m_recordMain);
              if (fieldThisRecord != null)
                  if (fieldThisRecord.getReferenceRecord(null, false) == null)
                      fieldThisRecord.setReferenceRecord(m_recordMain);   // Make sure these are linked
              this.getOwner().setKeyArea(fieldThisRecord);
              // Listen carefully:
              // If the main record belongs to another screen and the screen is closed,
              // do not change the sub-field.
              if (fieldThisRecord != null)
                  if (this.getOwner().getRecordOwner() != null)
                      if (m_recordMain.getRecordOwner() != null)
                          if (this.getOwner().getRecordOwner() != m_recordMain.getRecordOwner())
                              fieldThisRecord.addListener(new InitIfSubFieldHandler(null));
          }
          else if (m_fldThisFile == null)
          {
              if (m_strKeyName == null)
                  m_strKeyName = this.getOwner().getKeyArea().getKeyName();
              if (m_strKeyName != null)
              {
              	this.getOwner().setKeyArea(m_strKeyName);
              	if (m_fldMainFile != null)
              		m_fldThisFile = this.getOwner().getKeyArea().getField(0);
              	if (m_fldMainFile2 != null)
              		m_fldThisFile2 = this.getOwner().getKeyArea().getField(1);
              	if (m_fldMainFile3 != null)
              		m_fldThisFile3 = this.getOwner().getKeyArea().getField(2);
              }
          }
      }