code: @Override
      public String getString(@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 String ? (String) obj : null;
          }
      }
docs: Gets a property's value as a String. Returns null if the value doesn't exist, or its value is not a String.
  
  @param key the key
  @return the String or null.