docs: protected ModelNode createProductNode(OperationContext context, InstallationConfiguration installation) throws OperationFailedException {
          assert installation != null;
          assert installation.getEnvironment() != null;
  
          ProcessEnvironment environment = installation.getEnvironment();
          ModelNode product = new ModelNode().setEmptyObject();
          product.get(HOSTNAME).set(installation.getHostName());
          product.get(INSTANCE_ID).set(environment.getInstanceUuid().toString());
          PathAddress organizationAddress = PathAddress.EMPTY_ADDRESS;
          if (context.getProcessType().isHostController()) {
              organizationAddress = PathAddress.pathAddress(HOST, environment.getHostControllerName());
          }
          ModelNode root = context.readResourceFromRoot(organizationAddress, false).getModel();
          if (!root.hasDefined(ORGANIZATION) && context.getProcessType().isHostController()) {
              root = context.readResourceFromRoot(PathAddress.EMPTY_ADDRESS, false).getModel();
          }
          if (root.hasDefined(ORGANIZATION)) {
              product.get(ORGANIZATION).set(root.get(ORGANIZATION).asString());
          } else if (root.hasDefined(DOMAIN_ORGANIZATION)) {
              product.get(ORGANIZATION).set(root.get(DOMAIN_ORGANIZATION).asString());
          }
          if (installation.getConfig() != null) {
              if (installation.getConfig().getProductName() != null) {
                  product.get(PRODUCT_NAME).set(installation.getConfig().getProductName());
              }
              if (installation.getConfig().getProductVersion() != null) {
                  product.get(PRODUCT_VERSION).set(installation.getConfig().getProductVersion());
              }
              if (installation.getConfig().isProduct()) {
                  product.get(PRODUCT_COMMUNITY_IDENTIFIER).set(PRODUCT_TYPE);
              } else {
                  product.get(PRODUCT_COMMUNITY_IDENTIFIER).set(PROJECT_TYPE);
              }
          }
          if (context.getProcessType() != ProcessType.SELF_CONTAINED) {
              String home = installation.getInstallationDir();
              if (home != null && !home.isEmpty()) {
                  product.get(PRODUCT_HOME).set(home);
  
                  String installationDate = installation.getInstallationDate();
                  if (installationDate != null && !installationDate.isEmpty()) {
                      product.get(PRODUCT_INSTALLATION_DATE).set(installationDate);
                  }
              }
          }
          String updateDate = installation.getLastUpdateDate();
          if (updateDate != null && !updateDate.isEmpty()) {
              product.get(PRODUCT_LAST_UPDATE).set(updateDate);
          }
          product.get(STANDALONE_DOMAIN_IDENTIFIER).set(context.getProcessType().name());
          product.get(OS).set(createOSNode());
          product.get(CPU).set(createCPUNode());
          product.get(JVM).set(createJVMNode());
          return product;
      }