protected final void buildPanel() {
		setLayout(new BorderLayout());

		TitledPanel leftPanel = new TitledPanel(getTitle(LEFT), getComparisonComponent(LEFT), 5);
		TitledPanel rightPanel = new TitledPanel(getTitle(RIGHT), getComparisonComponent(RIGHT), 5);
		titlePanels = new Duo<>(leftPanel, rightPanel);

		// Set the MINIMUM_PANEL_WIDTH for the left and right panel to prevent the split pane's
		// divider from becoming locked (can't be moved) due to extra long title names.
		titlePanels.get(LEFT)
				.setMinimumSize(
					new Dimension(MINIMUM_PANEL_WIDTH,
						titlePanels.get(LEFT).getMinimumSize().height));
		titlePanels.get(RIGHT)
				.setMinimumSize(
					new Dimension(MINIMUM_PANEL_WIDTH,
						titlePanels.get(RIGHT).getMinimumSize().height));

		splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, titlePanels.get(LEFT),
			titlePanels.get(RIGHT));
		splitPane.setResizeWeight(0.5);
		splitPane.setDividerSize(4);
		splitPane.setBorder(BorderFactory.createEmptyBorder());
		add(splitPane, BorderLayout.CENTER);
		updateOrientation();

		addMouseAndFocusListeners(LEFT);
		addMouseAndFocusListeners(RIGHT);
		setActiveSide(LEFT);
	}
Notification to subclasses that the comparison data has changed
Ghidra/Features/Base/src/main/java/ghidra/features/base/codecompare/panel/CodeComparisonPanel.java