docs: public int setProperty(String strProperty, String strValue, boolean bDisplayOption, int iMoveMode)
      {
          if (m_propertiesCache == null)
              m_propertiesCache = this.loadProperties();
          boolean bChanged = false;
          // If strValue == null, delete; if = '', it's okay (key='') [a blank property]!
          if (strValue == null)
          {
          	if (m_propertiesCache.get(strProperty) != null)
          	{
          		m_propertiesCache.remove(strProperty);
          		bChanged = true;
          	}
          }
          else
          {
          	if (!strValue.equals(m_propertiesCache.get(strProperty)))
          	{
          		m_propertiesCache.put(strProperty, strValue); // Add this param
          		bChanged = true;
          	}
          }
          int iErrorCode = DBConstants.NORMAL_RETURN;
          if (bChanged)
          {	// Only change if there is a change of properties (not just a change in the #date line in properties)
  	        String strProperties = this.propertiesToInternalString(m_propertiesCache);
  	        Map<String,Object> propertiesSave = m_propertiesCache;
  	        iErrorCode = this.setString(strProperties, bDisplayOption, iMoveMode);
  	        m_propertiesCache = propertiesSave;   // Zeroed out in set String
          }
          return iErrorCode;
      }