docs: public int doRecordChange(FieldInfo field, int iChangeType, boolean bDisplayOption)
      { // Read a valid record
          boolean bAllowChange = !m_bOrigLockFlag;    // Orig locked = can't change, not locked = change okay
          if (m_field != null)
              if (!m_field.getState())
                  bAllowChange = true;    // Unless just changed to unlocked = change still okay.
          if (!bAllowChange)
          {
              Task task = this.getOwner().getTask();
              switch (iChangeType)
              {
              case DBConstants.UPDATE_TYPE:
                  if (m_bNewOnChange)
                  {
                      try {
                          Record record = this.getOwner();
                          BaseBuffer buffer = new VectorBuffer(null, BaseBuffer.PHYSICAL_FIELDS | BaseBuffer.MODIFIED_ONLY);
                          buffer.fieldsToBuffer(record);
                          record.addNew();
                          buffer.bufferToFields(record, true, DBConstants.SCREEN_MOVE);
                          record.add();
                          Object bookmark = record.getLastModified(DBConstants.BOOKMARK_HANDLE);
                          record.setHandle(bookmark, DBConstants.BOOKMARK_HANDLE);
                          break;  // Normal return
                      } catch (DBException ex) {
                          ex.printStackTrace();
                      }
                  }
              case DBConstants.DELETE_TYPE:
                  if (task != null)
                      return task.setLastError("Can't change manually locked record");
                  return DBConstants.ERROR_RETURN;
              default:
              }
          }
          return super.doRecordChange(field, iChangeType, bDisplayOption);        // Initialize the record
      }