code: boolean updateValue(Object newValue) {
          String nv = (newValue == null) ? null : newValue.toString();
          synchronized (lock) {
              if ((nv == null && stringValue == null)
                 || (nv != null && nv.equals(stringValue))) {
                  return false;
              }
              stringValue = nv;
              setStatusForValues();
              changedTime = System.currentTimeMillis();
              return true;
          }
      }
docs: return true iff the value actually changed