public Serializable decode(File file, Map parameters) {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		try {
			DocumentBuilder builder = factory.newDocumentBuilder();
			Document doc = builder.parse(file);
			Transducer transducer = TransducerFactory.getTransducer(doc);
			return transducer.fromDOM(doc);
		} catch (ParserConfigurationException e) {
			throw new ParseException("Java could not create the parser!");
		} catch (IOException e) {
			throw new ParseException("Could not open file to read!");
		} catch (org.xml.sax.SAXException e) {
			throw new ParseException("Could not parse XML!\n" + e.getMessage());
		} catch (ExceptionInInitializerError e) {
			// Hmm. That shouldn't be.
			System.err.println("STATIC INIT:");
			e.getException().printStackTrace();
			throw new ParseException("Unexpected Error!");
		}
	}