// Path: src/main/java/moulder/Moulder.java
// public interface Moulder {
//     /**
//      * This is where a moulder can process the input element to generate its
//      * result.
//      *
//      * @param element the element and its associated data to process
//      * @return the list of nodes and their associated data that were generated
//      *         after processing the input element.
//      */
//     List<Node> process(Element element);
// }
// 
// Path: src/main/java/moulder/Value.java
// public interface Value<T> {
// 	/**
// 	 * 
// 	 * @return the generated value
// 	 */
// 	T get();
// }
// 
// Path: src/main/java/moulder/values/SimpleValue.java
// public class SimpleValue<T> implements Value<T> {
//     private final T value;
// 
//     /**
//      * @param value the value to be returned by {@link #get()}
//      */
//     public SimpleValue(T value) {
//         this.value = value;
//     }
// 
//     public T get() {
//         return value;
//     }
// }


import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import moulder.Moulder;
import moulder.Value;
import moulder.values.SimpleValue;
package moulder.moulds;




/**
 * Moulder, which adds a CSS class if it's not already present.
 */
public class AddCssClassMoulder implements Moulder {

    private final Value<String> value;

    /**
     * @param value
     *            a value that returns the CSS class
     */
    public AddCssClassMoulder(Value<String> value) {
        this.value = value;
    }

    /**
     * @param cssClass
     *            the CSS class
     */
    public AddCssClassMoulder(String cssClass) {
// Path: src/main/java/moulder/Moulder.java
// public interface Moulder {
//     /**
//      * This is where a moulder can process the input element to generate its
//      * result.
//      *
//      * @param element the element and its associated data to process
//      * @return the list of nodes and their associated data that were generated
//      *         after processing the input element.
//      */
//     List<Node> process(Element element);
// }
// 
// Path: src/main/java/moulder/Value.java
// public interface Value<T> {
// 	/**
// 	 * 
// 	 * @return the generated value
// 	 */
// 	T get();
// }
// 
// Path: src/main/java/moulder/values/SimpleValue.java
// public class SimpleValue<T> implements Value<T> {
//     private final T value;
// 
//     /**
//      * @param value the value to be returned by {@link #get()}
//      */
//     public SimpleValue(T value) {
//         this.value = value;
//     }
// 
//     public T get() {
//         return value;
//     }
// }


// Path: src/main/java/moulder/moulds/AddCssClassMoulder.java
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import moulder.Moulder;
import moulder.Value;
import moulder.values.SimpleValue;

package moulder.moulds;




/**
 * Moulder, which adds a CSS class if it's not already present.
 */
public class AddCssClassMoulder implements Moulder {

    private final Value<String> value;

    /**
     * @param value
     *            a value that returns the CSS class
     */
    public AddCssClassMoulder(Value<String> value) {
        this.value = value;
    }

    /**
     * @param cssClass
     *            the CSS class
     */
    public AddCssClassMoulder(String cssClass) {
        this(new SimpleValue<String>(cssClass));