public static AttributeAppender prepend(final String attributeName, final IModel<?> value) {
    Args.notEmpty((CharSequence) attributeName, "attributeName");
    return new AttributeAppender(attributeName, value) {
      private static final long serialVersionUID = 1L;

      protected String newValue(final String currentValue, final String replacementValue) {
        return super.newValue(replacementValue, currentValue);
      }
    }.setSeparator(" ");
  }
 public static AttributeModifier replace(final String attributeName, final IModel<?> value) {
   Args.notEmpty((CharSequence) attributeName, "attributeName");
   return new AttributeModifier(attributeName, value);
 }
 public static AttributeModifier remove(final String attributeName) {
   Args.notEmpty((CharSequence) attributeName, "attributeName");
   return replace(attributeName, Model.of(AttributeModifier.VALUELESS_ATTRIBUTE_REMOVE));
 }
 public static AttributeAppender prepend(final String attributeName, final Serializable value) {
   Args.notEmpty((CharSequence) attributeName, "attributeName");
   return prepend(attributeName, Model.of(value));
 }
 public static AttributeAppender append(final String attributeName, final IModel<?> value) {
   Args.notEmpty((CharSequence) attributeName, "attributeName");
   return new AttributeAppender(attributeName, value).setSeparator(" ");
 }