code: @NonNull
      @Override
      public MutableDictionary setValue(@NonNull String key, Object value) {
          if (key == null) { throw new IllegalArgumentException("key cannot be null."); }
  
          synchronized (lock) {
              final MValue oldValue = internalDict.get(key);
              value = Fleece.toCBLObject(value);
              if (Fleece.valueWouldChange(value, oldValue, internalDict)) { internalDict.set(key, new MValue(value)); }
              return this;
          }
      }
docs: Set an object value by key. Allowed value types are List, Date, Map, Number, null, String,
  Array, Blob, and Dictionary. The List and Map must contain only the above types.
  An Date object will be converted to an ISO-8601 format string.
  
  @param key   the key.
  @param value the object value.
  @return The self object.