private void populateModelWithCoreEnvConfig(ModelNode operation, ModelNode model)
      throws OperationFailedException {
    // core environment
    TransactionSubsystemRootResourceDefinition.NODE_IDENTIFIER.validateAndSet(operation, model);

    // We have some complex logic for the 'process-id' stuff because of the alternatives
    if (operation.hasDefined(TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName())
        && operation
            .get(TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName())
            .asBoolean()) {
      TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.validateAndSet(operation, model);
      if (operation.hasDefined(
          TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName())) {
        throw new OperationFailedException(
            String.format(
                "%s must be undefined if %s is 'true'.",
                TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName(),
                TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName()));
      } else if (operation.hasDefined(
          TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName())) {
        throw new OperationFailedException(
            String.format(
                "%s must be undefined if %s is 'true'.",
                TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName(),
                TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName()));
      }
      // model.get(TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName());
      // model.get(TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName());
    } else if (operation.hasDefined(
        TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName())) {
      TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.validateAndSet(
          operation, model);
      TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.validateAndSet(
          operation, model);
    } else if (operation.hasDefined(
        TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName())) {
      throw new OperationFailedException(
          String.format(
              "%s must be defined if %s is defined.",
              TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName(),
              TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_MAX_PORTS.getName()));
    } else {
      // not uuid and also not sockets!
      throw new OperationFailedException(
          String.format(
              "Either %s must be 'true' or  %s must be defined.",
              TransactionSubsystemRootResourceDefinition.PROCESS_ID_UUID.getName(),
              TransactionSubsystemRootResourceDefinition.PROCESS_ID_SOCKET_BINDING.getName()));
    }
  }