code: @Override
      public Object getValue(@NonNull String key) {
          if (key == null) { throw new IllegalArgumentException("key cannot be null."); }
  
          synchronized (lock) {
              return getMValue(internalDict, key).asNative(internalDict);
          }
      }
docs: Gets a property's value as an object. The object types are Blob, Array,
  Dictionary, Number, or String based on the underlying data type; or nil if the
  property value is null or the property doesn't exist.
  
  @param key the key.
  @return the object value or nil.