docs: public int setData(Object data, boolean bDisplayOption, int iMoveMode)
      {
          int iErrorCode = DBConstants.NORMAL_RETURN;
          FieldListener nextListener = (FieldListener)this.getNextValidListener(iMoveMode);
          Object dataOld = m_data;
          boolean m_bModifiedOld = m_bModified;
          if (nextListener != null)
          {
              boolean bOldState = nextListener.setEnabledListener(false);      // Disable the listener to eliminate echos
              iErrorCode = nextListener.doSetData(data, bDisplayOption, iMoveMode);
              nextListener.setEnabledListener(bOldState);       // Reenable
          }
          else
              iErrorCode = this.doSetData(data, bDisplayOption, iMoveMode);
          if (iErrorCode == DBConstants.NORMAL_RETURN) if (m_bJustChanged)
          {
              iErrorCode = this.handleFieldChanged(bDisplayOption, iMoveMode);
              if (iErrorCode != DBConstants.NORMAL_RETURN)
              {   // Revert the data to old
                  if (dataOld != m_data)
                  {   // Always
                      if ((dataOld == data) ||
                          ((dataOld != null) && (dataOld.equals(data))))   // Make sure behaviors aren't causing change
                              iErrorCode = DBConstants.NORMAL_RETURN;     // If changes soely due to a behavior would cause an error, don't return an error
                      m_data = dataOld;
                      m_bModified = m_bModifiedOld;
                      m_bJustChanged = false;
                  }
              }
          }
          if (bDisplayOption)         // Can't do only if (m_bJustChanged) (last value may not be on screen)
              this.displayField();
          return iErrorCode;
      }