### Question:
ZipXmiCollectionReader extends AbstractFileReader { public static void deserialize(File currentZipFile, JCas jCas, String _xmlScheme) throws IOException { InputStream inputStream = unzipUniqueFileAsStream(currentZipFile); try { if (_xmlScheme.equals(XMI)) XmiCasDeserializer.deserialize(inputStream, jCas.getCas()); else XCASDeserializer.deserialize(inputStream, jCas.getCas()); } catch (SAXException e) { throw new IOException(e); } finally { inputStream.close(); } }  @Override void initialize(UimaContext context); @Override void getNext(JCas jCas); static void deserialize(File currentZipFile, JCas jCas,
            String _xmlScheme); static final String XMI; static final String XCAS; static final String PARAM_XML_SCHEME; }### Answer:
@Test public void testStructured() throws Exception { for (int docId : new int[] { 12345678, 1234, 12345 }) { JCas jCas = UimaTests.getTestCas("bla blahh " + docId); Header header = new Header(jCas); header.setDocId(docId + ""); header.addToIndexes(); AnalysisEngine serializer = createEngine(ZipXWriter.class, BlueUima.PARAM_OUTPUT_DIR, testDir, ZipXWriter.PARAM_FILE_NAMER_CLASS_NAME, HeaderDocIdFileNamer.class.getName(), ZipXWriter.PARAM_STRUCTURE_DIR, true); SimplePipeline.runPipeline(jCas, serializer); File newFile = new File(testDir, StructuredDirectory.getFilePath( docId, "xmi.zip")); assertTrue(newFile.exists()); JCas newJCas = JCasFactory.createJCas(); ZipXmiCollectionReader.deserialize(newFile, newJCas, ZipXmiCollectionReader.XMI); assertEquals("contents should match", "bla blahh " + docId, newJCas.getDocumentText()); } }