@@ -0,0 +1,1387 @@
+package nl.beehivejava.scriptj.loader;%0A%0Aimport nl.beehivejava.scriptj.script.Script;%0Aimport nl.beehivejava.scriptj.script.ScriptType;%0A%0Aimport java.io.IOException;%0A%0A/**%0A * A %7B@code ScriptLoader%7D can load a %7B@link Script%7D from an external location, for example, a %7B@code Script%7D existing%0A * on the filesystem.%0A *%0A * @author Lesley%0A */%0Apublic interface ScriptLoader %7B%0A%0A    /**%0A     * Loads a %7B@link Script%7D on the given %7B@code location%7D. The %7B@code location%7D represents%0A     * the %7B@code Script%7D file.%0A     *%0A     * @param location The %7B@code location%7D of the %7B@code Script%7D file, should not be %7B@code null%7D.%0A     * @return The loaded %7B@code Script%7D.%0A     * @throws IOException              If something failed while loading the %7B@code Script%7D from the%0A     *                                  given %7B@code location%7D.%0A     * @throws NullPointerException     If the given %7B@code location%7D is %7B@code null%7D.%0A     * @throws IllegalArgumentException If the loaded %7B@code Script%7D's type is not%0A     *                                  compatible (See %7B@link #compatibleScriptType()%7D.%0A     */%0A    Script load(String location) throws IOException;%0A%0A    /**%0A     * Gets this %7B@code ScriptLoader%7D's compatible %7B@link ScriptType%7D. It represents the type of %7B@code Script%7D that%0A     * it can load.%0A     *%0A     * @return The compatible %7B@code ScriptType%7D.%0A     */%0A    ScriptType compatibleScriptType();%0A%0A%7D%0A

Add an interface for a ScriptLoader.