public static synchronized void createServer(String dirPath, int port, String[] userNames)
			throws IOException {

		if (serverProcess != null) {
			throw new RuntimeException("Server already running, only one allowed");
		}

		File dir = new File(dirPath);
		if (dir.exists()) {
			Msg.error(ServerTestUtil.class,
				"WARNING! Removing existing server directory: " + dirPath);
			FileUtilities.deleteDir(dir);
			if (dir.exists()) {
				throw new IOException("Failed to remove existing server directory: " + dirPath);
			}
		}
		FileUtilities.mkdirs(dir);

		// Add users to Server using UserManager
		createUsers(dirPath, userNames);

		startServer(dirPath, port, -1, false, false, false);

	}
Create and start a server instance on the specified port.
This server must be disposed before attempting to create another.
This method will block until server starts or fails to start.
@param dirPath server root directory
@param port RMI registry port, 0 indicates that default port should be used
@param userNames list of server users
@throws IOException
Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/server/remote/ServerTestUtil.java