docs: private JsiiObject createNative(final String fqn) {
          try {
              Class<?> klass = resolveJavaClass(fqn);
              if (klass.isInterface() || Modifier.isAbstract(klass.getModifiers())) {
                  // "$" is used to represent inner classes in Java
                  klass = Class.forName(klass.getCanonicalName() + "$" + INTERFACE_PROXY_CLASS_NAME);
              }
              try {
                  Constructor<? extends Object> ctor = klass.getDeclaredConstructor(JsiiObject.InitializationMode.class);
                  ctor.setAccessible(true);
                  JsiiObject newObj = (JsiiObject) ctor.newInstance(JsiiObject.InitializationMode.Jsii);
                  ctor.setAccessible(false);
                  return newObj;
              } catch (NoSuchMethodException e) {
                  throw new JsiiException("Cannot create native object of type "
                          + klass.getName()
                          + " without a constructor that accepts an InitializationMode argument", e);
  
              } catch (IllegalAccessException | InstantiationException | InvocationTargetException e) {
                  throw new JsiiException("Unable to instantiate a new object for FQN " + fqn + ": "
                          + e.getMessage(), e);
              }
          } catch (ClassNotFoundException e) {
              this.log("WARNING: Cannot find the class: %s. Defaulting to JsiiObject", fqn);
              return new JsiiObject(JsiiObject.InitializationMode.Jsii);
          }
      }