private TileSet unmarshalTilesetFile(InputStream in) throws Exception {
private TileSet unmarshalTilesetFile(InputStream in, String filename) throws Exception {
    private TileSet unmarshalTilesetFile(InputStream in) throws Exception {        TileSet set = null;        Node tsNode;        Document tsDoc = null;        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();        try {            DocumentBuilder builder = factory.newDocumentBuilder();            tsDoc = builder.parse(in, ".");        } catch (FileNotFoundException fnf) {            // TODO: Have a popup and ask the user to browse to the file...            throw new Exception("Where else can I look?");        }        String xmlPathSave = xmlPath;        xmlPath = ".";        NodeList tsNodeList = tsDoc.getElementsByTagName("tileset");        for (int itr = 0; (tsNode = tsNodeList.item(itr)) != null; itr++) {            set = unmarshalTileset(tsNode);            if (set.getSource() != null) {                throw new Exception(                        "Recursive external Tilesets are not supported.");            }            //set.setSource(filename);            // TODO: This is a deliberate break. multiple tilesets per TSX are            // not supported yet (maybe never)...            break;        }        xmlPath = xmlPathSave;        return set;    }