code: public ModelNode resolveValue(final ExpressionResolver resolver, final ModelNode value) throws OperationFailedException {
          final ModelNode node = value.clone();
          if (!node.isDefined() && defaultValue != null && defaultValue.isDefined()) {
              node.set(defaultValue);
          }
          ModelNode resolved = resolver.resolveExpressions(node);
          resolved = parseResolvedValue(value, resolved);
          validator.validateParameter(name, resolved);
          return resolved;
      }
docs: Takes the given {@code value}, resolves it using the given {@code resolver}
  and validates it using this attribute's {@link #getValidator() validator}. If the value is
  undefined and a {@link #getDefaultValue() default value} is available, the default value is used.
  
  @param resolver the expression resolver
  @param value a node that is expected to be a valid value for an attribute defined by this definition
  
  @return the resolved value, possibly the default value if {@code value} is not defined
  
  @throws OperationFailedException if the value is not valid