private JPanel createSouthPanel(Table table) {
		JPanel panel = new JPanel(new BorderLayout());
		DbSmallTableModel model = new DbSmallTableModel(new ServiceProviderStub(), table);
		GTable gTable = new GTable(model);

		tableFilterPanel = new GTableFilterPanel<>(gTable, model);
		JScrollPane scroll = new JScrollPane(gTable);
		panel.add(scroll, BorderLayout.CENTER);
		panel.add(tableFilterPanel, BorderLayout.SOUTH);

		TableStatistics[] stats = getStats(table);
		String recCnt = "Records: " + Integer.toString(table.getRecordCount());
		String intNodeCnt = "";
		String recNodeCnt = "";
		String chainBufCnt = "";
		String size = "";
		if (stats != null) {
			intNodeCnt = "Interior Nodes: " + Integer.toString(stats[0].interiorNodeCnt);
			recNodeCnt = "Record Nodes: " + Integer.toString(stats[0].recordNodeCnt);
			chainBufCnt = "Chained Buffers: " + Integer.toString(stats[0].chainedBufferCnt);
			size = "Size (KB): " + Integer.toString(stats[0].size / 1024);
			if (stats.length > 1) {
				intNodeCnt += " / " + Integer.toString(stats[1].interiorNodeCnt);
				recNodeCnt += " / " + Integer.toString(stats[1].recordNodeCnt);
				chainBufCnt += " / " + Integer.toString(stats[1].chainedBufferCnt);
				size += " / " + Integer.toString(stats[1].size / 1024);
			}
		}
		JLabel statsLabel = new GDLabel(
			recCnt + "   " + intNodeCnt + "   " + recNodeCnt + "   " + chainBufCnt + "   " + size);
		panel.add(statsLabel, BorderLayout.SOUTH);

		return panel;
	}
<code>DbViewer</code> is a diagnostic application for viewing a
Ghidra database.
Ghidra/Features/DebugUtils/src/main/java/db/DbViewer.java