private static void unpackArchive(ZipInputStream zip, File parentDir) throws IOException {
		ZipEntry entry = null;
		while ((entry = zip.getNextEntry()) != null) {
			String name = entry.getName();
			//System.out.println("Unpack: " + name);
			File f = new File(parentDir, name);
			if (name.endsWith("/")) {
				f.mkdirs();
				if (!f.isDirectory()) {
					throw new IOException("failed to create dir: " + f);
				}
			}
			else {
				FileUtilities.copyStreamToFile(zip, f, false, TaskMonitor.DUMMY);
			}
		}
	}
Start a server instance on the specified port.  The server repository
will be populated with the contents of the specified repository archive
zip file. This server must be disposed before attempting to create another.
This method will block until server either starts or fails to start.
@param dirPath server root directory to be created and populated
@param testRepositoryArchiveZipPath zip resource path to an archive
containing the contents of a server repository
@param port RMI registry port, 0 indicates that default port should be used
@param authMode primary authentication mode (0-3, -1=None, see GhidraServer)
@param enableAltLoginName if true alternate login name will be 
enabled for those modes which support it.
@param enableSSHAuthentication enable SSH authentication if true
@param enableAnonymousAuthentication enable anonymous logins
@throws IOException
Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/server/remote/ServerTestUtil.java