docs: public void _merge(AppConfigurator conf) {
          app.emit(SysEventId.CONFIG_PREMERGE);
          if (mergeTracker.contains(conf)) {
              return;
          }
          mergeTracker.add(conf);
          for (Method method : AppConfig.class.getDeclaredMethods()) {
              boolean isPrivate = Modifier.isPrivate(method.getModifiers());
              if (isPrivate && method.getName().startsWith("_merge")) {
                  method.setAccessible(true);
                  $.invokeVirtual(this, method, conf);
              }
          }
  
  
          Set<String> keys = conf.propKeys();
          if (!keys.isEmpty()) {
              for (String k : keys) {
                  if (!raw.containsKey(k)) {
                      raw.put(k, conf.propVal(k));
                  }
              }
          }
      }