// 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/HtmlValue.java
// public class HtmlValue implements Value<Iterable<Node>> {
//     private Value<String> html;
// 
//     public HtmlValue(String html) {
//         this(new SimpleValue<String>(html));
//     }
// 
//     public HtmlValue(Value<String> html) {
//         super();
//         this.html = html;
//     }
// 
//     public Iterable<Node> get() {
//         List<Node> nodes = Jsoup.parseBodyFragment(html.get()).body()
//                 .childNodes();
//         List<Node> copy = new ArrayList<Node>(nodes);
//         return copy;
//     }
// 
// }


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



/**
 * A moulder that prepends content before its input element
 * 
 * @author jawher
 * 
 */
public class Prepender implements Moulder {
	private Value<Iterable<Node>> content;

	/**
	 * 
	 * @param content
	 *            the nodes that are to be prepended before the input element.
	 */
	public Prepender(Value<Iterable<Node>> content) {
		super();
		this.content = content;
	}

	/**
	 * a convenience version of the {@link #Prepender(moulder.Value)} constructor that
	 * parses the supplied <code>html</code> string.
	 * 
	 * @param html
	 */
	public Prepender(String html) {
		this(new HtmlValue(html));
	}

    public List<Node> process(Element element) {
// 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/HtmlValue.java
// public class HtmlValue implements Value<Iterable<Node>> {
//     private Value<String> html;
// 
//     public HtmlValue(String html) {
//         this(new SimpleValue<String>(html));
//     }
// 
//     public HtmlValue(Value<String> html) {
//         super();
//         this.html = html;
//     }
// 
//     public Iterable<Node> get() {
//         List<Node> nodes = Jsoup.parseBodyFragment(html.get()).body()
//                 .childNodes();
//         List<Node> copy = new ArrayList<Node>(nodes);
//         return copy;
//     }
// 
// }


// Path: src/main/java/moulder/moulds/Prepender.java
import moulder.Moulder;
import moulder.Value;
import moulder.values.HtmlValue;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import java.util.ArrayList;
import java.util.List;

package moulder.moulds;



/**
 * A moulder that prepends content before its input element
 * 
 * @author jawher
 * 
 */
public class Prepender implements Moulder {
	private Value<Iterable<Node>> content;

	/**
	 * 
	 * @param content
	 *            the nodes that are to be prepended before the input element.
	 */
	public Prepender(Value<Iterable<Node>> content) {
		super();
		this.content = content;
	}

	/**
	 * a convenience version of the {@link #Prepender(moulder.Value)} constructor that
	 * parses the supplied <code>html</code> string.
	 * 
	 * @param html
	 */
	public Prepender(String html) {
		this(new HtmlValue(html));
	}

    public List<Node> process(Element element) {
        List<Node> res = new ArrayList<Node>();