public void importAllDataTypes(TaskMonitor monitor)
			throws IOException, DWARFException, CancelledException {
		int dtCountBefore = dataTypeManager.getDataTypeCount(true);

		monitor.initialize(prog.getTotalAggregateCount(), "DWARF Import Types");
		for (DIEAggregate diea : prog.allAggregates()) {
			monitor.increment();

			try {
				if (diea.getTag().isType()) {
					doGetDataType(diea);
				}
			}
			catch (IllegalArgumentException iae) {
				// squelch full stack trace for data type errors where structure is defined to
				// have itself inside itself.
				Msg.error(this, "Failed to process DWARF DIE %x: %s".formatted(diea.getOffset(),
					iae.getMessage()));
			}
			catch (OutOfMemoryError oom) {
				throw oom;
			}
			catch (Throwable th) {
				// Aggressively catch pretty much everything to allow the import to continue
				Msg.error(this, "Error when processing DWARF information for DIE %x"
						.formatted(diea.getOffset()),
					th);
				Msg.info(this, "DIE info:\n" + diea.toString());
			}
		}

		int dtCountAfter = dataTypeManager.getDataTypeCount(true);

		importSummary.dataTypesAdded = (dtCountAfter - dtCountBefore);
	}
Does the actual import work.  Updates the {@link #importSummary summary} object
with information about the types imported and errors encountered.

@param monitor to watch for cancel
@throws IOException if errors are encountered reading data
@throws DWARFException if errors are encountered processing
@throws CancelledException if the {@link TaskMonitor} is canceled by the user.
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/dwarf/DWARFDataTypeManager.java