code: @Override
      public Dictionary getDictionary(@NonNull String key) {
          if (key == null) { throw new IllegalArgumentException("key cannot be null."); }
  
          synchronized (lock) {
              final Object obj = getMValue(internalDict, key).asNative(internalDict);
              return obj instanceof Dictionary ? (Dictionary) obj : null;
          }
      }
docs: Get a property's value as a Dictionary, which is a mapping object of an dictionary value.
  Returns null if the property doesn't exists, or its value is not an dictionary.
  
  @param key the key.
  @return the Dictionary object or null if the key doesn't exist.