code: public void setOwner(ListenerOwner owner)
      {
          super.setOwner(owner);
          if (owner != null)
          {
              if (m_converterSource == null)
                  m_converterSource = this.getOwner();
              if (m_converterDest != null)
                  if (m_converterDest.getField() != null)
                      if (m_converterSource.getField() == this.getOwner())    // Always!
                          if (((BaseField)m_converterDest.getField()).getRecord() != this.getOwner().getRecord())
              { // Not same file, if target file closes, remove this listener!
                  ((BaseField)m_converterDest.getField()).getRecord().addListener(new FileRemoveBOnCloseHandler(this));
              }
          }
          else if (m_bFreeChainedConverters)
          {   // Free all the converters in the chain
              while ((m_converterDest != null) && (m_converterDest != m_converterDest.getField()))
              {
                  Converter converterNext = null;
                  if (m_converterDest instanceof FieldConverter)
                      converterNext = ((FieldConverter)m_converterDest).getNextConverter();
                  m_converterDest.free();
                  m_converterDest = converterNext;
              }
              while ((m_converterSource != null) && (m_converterSource != m_converterSource.getField()))
              {
                  Converter converterNext = null;
                  if (m_converterSource instanceof FieldConverter)
                      converterNext = ((FieldConverter)m_converterSource).getNextConverter();
                  m_converterSource.free();
                  m_converterSource = converterNext;
              }
          }
      }
docs: Set the field that owns this listener.
  @owner The field that this listener is being added to (if null, this listener is being removed).