@Override
    public TransformedOperation transformOperation(
        final TransformationContext context, final PathAddress address, final ModelNode operation)
        throws OperationFailedException {
      final String attribute = operation.require(NAME).asString();
      boolean containsExpression = false;
      if (attributeNames.contains(attribute)) {
        if (operation.hasDefined(VALUE)) {
          AttributeTransformationRequirementChecker checker;
          if (attributeCheckers != null && (checker = attributeCheckers.get(attribute)) != null) {
            if (checker.isAttributeTransformationRequired(
                attribute, operation.get(VALUE), context)) {
              containsExpression = true;
            }
          } else if (SIMPLE_EXPRESSIONS.isAttributeTransformationRequired(
              attribute, operation.get(VALUE), context)) {
            containsExpression = true;
          }
        }
      }
      final boolean rejectResult = containsExpression;
      if (rejectResult) {
        // Create the rejection policy
        final OperationRejectionPolicy rejectPolicy =
            new OperationRejectionPolicy() {
              @Override
              public boolean rejectOperation(ModelNode preparedResult) {
                // Reject successful operations
                return true;
              }

              @Override
              public String getFailureDescription() {
                return context
                    .getLogger()
                    .getAttributeWarning(
                        address, operation, MESSAGES.attributesDontSupportExpressions(), attribute);
              }
            };
        return new TransformedOperation(
            operation, rejectPolicy, OperationResultTransformer.ORIGINAL_RESULT);
      }
      // In case it's not an expressions just forward unmodified
      return new TransformedOperation(operation, OperationResultTransformer.ORIGINAL_RESULT);
    }
 /**
  * Check the model for expression values.
  *
  * @param model the model
  * @return the attribute containing an expression
  */
 private Set<String> checkModel(final ModelNode model, TransformationContext context)
     throws OperationFailedException {
   final Set<String> attributes = new HashSet<String>();
   AttributeTransformationRequirementChecker checker;
   for (final String attribute : attributeNames) {
     if (model.hasDefined(attribute)) {
       if (attributeCheckers != null && (checker = attributeCheckers.get(attribute)) != null) {
         if (checker.isAttributeTransformationRequired(attribute, model.get(attribute), context)) {
           attributes.add(attribute);
         }
       } else if (SIMPLE_EXPRESSIONS.isAttributeTransformationRequired(
           attribute, model.get(attribute), context)) {
         attributes.add(attribute);
       }
     }
   }
   return attributes;
 }