@Test
	public void testDisassemblerMidBlockOverlapWithProgram() throws Exception {

		programBuilder.addBytesBranchConditional(10, 20);
		programBuilder.addBytesReturn(12);

		programBuilder.addBytesBranchConditional(20, 10);
		programBuilder.addBytesReturn(22);

		AddressSetView disAddrs = disassembler.disassemble(addr(10), null);
		assertEquals(addrset(range(10, 13), range(20, 23)), disAddrs);

		programBuilder.addBytesBranchConditional(18, 30);

		programBuilder.addBytesReturn(30);

		disAddrs = disassembler.disassemble(addr(18), null);
		assertEquals(addrset(range(18, 19), range(30, 31)), disAddrs);

		verifyInstructionPresence();

		verifyNoBookmarks();

	}
+-> 10: breq 20 --+ (start1)
|   12: ret       |
|                 |     18: breq 30 -+ (start2)
+-- 20: breq 10 <-+         ...      |
    22: ret                          |
                                     |
                        30: ret  <---+
                        
Test bumping into existing instructions in Program mid-block
Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/program/disassemble/DisassemblerTest.java