docs: private static boolean equalValue(final AttributeDefinition attribute, final OperationContext context, final ModelNode model,
                                        final LogContextConfiguration logContextConfiguration, final HandlerConfiguration configuration)
              throws OperationFailedException {
          final boolean result;
          if (attribute.getName().equals(ENABLED.getName())) {
              final boolean resolvedValue = ENABLED.resolveModelAttribute(context, model).asBoolean();
              final boolean currentValue;
              if (configuration.hasProperty(ENABLED.getPropertyName())) {
                  currentValue = Boolean.parseBoolean(configuration.getPropertyValueString(ENABLED.getPropertyName()));
              } else {
                  currentValue = isDisabledHandler(logContextConfiguration.getLogContext(), configuration.getName());
              }
              result = resolvedValue == currentValue;
          } else if (attribute.getName().equals(ENCODING.getName())) {
              final String resolvedValue = ENCODING.resolvePropertyValue(context, model);
              final String currentValue = configuration.getEncoding();
              result = (resolvedValue == null ? currentValue == null : resolvedValue.equals(currentValue));
          } else if (attribute.getName().equals(FORMATTER.getName())) {
              // Ignored if there is a named-formatter defined
              if (model.hasDefined(NAMED_FORMATTER.getName())) {
                  result = true;
              } else {
                  final String formatterName = configuration.getName();
                  // Only check the pattern if the name matches the currently configured name
                  if (formatterName.equals(configuration.getFormatterNameValueExpression().getResolvedValue())) {
                      final FormatterConfiguration fmtConfig;
                      if (logContextConfiguration.getFormatterNames().contains(formatterName)) {
                          fmtConfig = logContextConfiguration.getFormatterConfiguration(formatterName);
                          final String resolvedValue = FORMATTER.resolvePropertyValue(context, model);
                          final String currentValue = fmtConfig.getPropertyValueString(PATTERN.getName());
                          result = (resolvedValue == null ? currentValue == null : resolvedValue.equals(currentValue));
                      } else {
                          result = false;
                      }
                  } else {
                      result = false;
                  }
              }
          } else if (attribute.getName().equals(NAMED_FORMATTER.getName())) {
              final ModelNode valueNode = NAMED_FORMATTER.resolveModelAttribute(context, model);
              // Ignore if not defined
              if (valueNode.isDefined()) {
                  final String resolvedValue = valueNode.asString();
                  final String currentValue = configuration.getFormatterName();
                  result = resolvedValue.equals(currentValue);
              } else {
                  result = true;
              }
          } else if (attribute.getName().equals(FILTER_SPEC.getName())) {
              final ModelNode valueNode = FILTER_SPEC.resolveModelAttribute(context, model);
              final String resolvedValue = (valueNode.isDefined() ? valueNode.asString() : null);
              final String currentValue = configuration.getFilter();
              result = (resolvedValue == null ? currentValue == null : resolvedValue.equals(currentValue));
          } else if (attribute.getName().equals(LEVEL.getName())) {
              final String resolvedValue = LEVEL.resolvePropertyValue(context, model);
              final String currentValue = configuration.getLevel();
              result = (resolvedValue == null ? currentValue == null : resolvedValue.equals(configuration.getLevel()));
          } else if (attribute.getName().equals(SUBHANDLERS.getName())) {
              final Collection<String> resolvedValue = SUBHANDLERS.resolvePropertyValue(context, model);
              final Collection<String> currentValue = configuration.getHandlerNames();
              result = (resolvedValue == null ? currentValue == null : resolvedValue.containsAll(currentValue));
          } else if (attribute.getName().equals(PROPERTIES.getName())) {
              result = true;
              final PropertyConfigurable propertyConfigurable;
              // A POJO configuration will have the same name as the handler
              final PojoConfiguration pojoConfiguration = logContextConfiguration.getPojoConfiguration(configuration.getName());
              if (pojoConfiguration == null) {
                  propertyConfigurable = configuration;
              } else {
                  propertyConfigurable = pojoConfiguration;
              }
              if (model.hasDefined(PROPERTIES.getName())) {
                  for (Property property : PROPERTIES.resolveModelAttribute(context, model).asPropertyList()) {
                      final String resolvedValue = property.getValue().asString();
                      final String currentValue = propertyConfigurable.getPropertyValueString(property.getName());
                      if (!(resolvedValue == null ? currentValue == null : resolvedValue.equals(currentValue))) {
                          return false;
                      }
                  }
              } else if (model.has(PROPERTIES.getName())) {
                  final List<String> propertyNames = propertyConfigurable.getPropertyNames();
                  for (String propertyName : propertyNames) {
                      final String propertyValue = propertyConfigurable.getPropertyValueString(propertyName);
                      if (propertyValue != null) {
                          return false;
                      }
                  }
              }
          } else {
              if (attribute instanceof ConfigurationProperty) {
                  final ConfigurationProperty<?> propAttribute = ((ConfigurationProperty<?>) attribute);
                  final String resolvedValue = String.valueOf(propAttribute.resolvePropertyValue(context, model));
                  final String currentValue = configuration.getPropertyValueString(propAttribute.getPropertyName());
                  result = (resolvedValue == null ? currentValue == null : resolvedValue.equals(currentValue));
              } else {
                  result = false;
              }
          }
          return result;
      }