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 AttributeModifier(final String attribute, final IModel<?> replaceModel) {
   super();
   Args.notNull((Object) attribute, "attribute");
   this.attribute = attribute;
   this.replaceModel = replaceModel;
 }
 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(" ");
 }