@Test
	public void testMultipleCheckIns() throws Exception {
		GTreeNode node = getNode(PROGRAM_A);
		addToVersionControl(node, false);
		GTreeNode xnode = getNode(PROGRAM_B);
		addToVersionControl(xnode, false);

		selectNodes(node, xnode);

		DockingActionIf action = getAction("CheckOut");
		performAction(action, getDomainFileActionContext(node, xnode), false);

		DialogComponentProvider dialog = waitForDialogComponent("Confirm Bulk Checkout");
		pressButtonByText(dialog, "Yes");

		waitForTasks();

		// make some changes to check in
		Program program = (Program) ((DomainFileNode) node).getDomainFile()
				.getDomainObject(this, true, false, TaskMonitor.DUMMY);
		editProgram(program, (p) -> {
			SymbolTable symTable = p.getSymbolTable();
			symTable.createLabel(p.getMinAddress().getNewAddress(0x010001000), "fred",
				SourceType.USER_DEFINED);
		});
		program.release(this);

		program = (Program) ((DomainFileNode) xnode).getDomainFile()
				.getDomainObject(this, true, false, TaskMonitor.DUMMY);
		editProgram(program, (p) -> {
			SymbolTable symTable = p.getSymbolTable();
			symTable.createLabel(p.getMinAddress(), "bob", SourceType.USER_DEFINED);
		});
		program.release(this);

		DockingActionIf checkInAction = getAction("CheckIn");
		performAction(checkInAction, getDomainFileActionContext(node, xnode), false);

		fillOutCheckInDialog();

		waitForTasks();

		DomainFile df = ((DomainFileNode) node).getDomainFile();
		assertTrue(!df.isCheckedOut());
		df = ((DomainFileNode) xnode).getDomainFile();
		assertTrue(!df.isCheckedOut());
	}
Tests for version control (not multi user).
Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/framework/main/datatree/VersionControlAction1Test.java