private boolean processTypeDef(Map<String, Object> result) throws InvalidNameException, DuplicateNameException {
		String name = (String) result.get("name");
		// String displayName = (String) result.get("displayName");
		Boolean isAutoNamed = (Boolean) result.get("autoNamed");
		String typeLoc = (String) result.get("typeLocation");
		CategoryPath cp = typeLoc == null ? CategoryPath.ROOT : new CategoryPath(typeLoc);
		DataType dt = findDataType(result);
		if (dt == null) {
			log.appendMsg(name + " NOT FOUND");
			return false;
		}

		int dtSize = dt.getLength();
		int size = (int) (double) result.get("size");
		if (size != -1 && size != dtSize) {
			log.appendMsg("SIZE=" + result.get("size") + " specified on type-def " + name
					+ " does not agree with length of datatype " + dt.getPathName() + " (" + dtSize + ")");
		}

		cp = getCategoryPath(result);
		TypeDef td = new TypedefDataType(cp, name, dt, dataManager);
		processSettings(result, td.getDefaultSettings());
		if (isAutoNamed != null && isAutoNamed) {
			td.enableAutoNaming();
		}
		// if (displayName != null) {
		// td.setName(displayName);
		// }

		try {
			if (name.equals(dt.getPathName()) && dt instanceof TypeDef) {
				td = (TypeDef) dt;
			}
			td.setCategoryPath(cp);
			dt = td;
		} catch (DuplicateNameException e) {
			log.appendMsg("Unable to place typedef '" + name + "' in category '" + cp + "'");
		}

		addDataType(getPath(td), td);
		return true;
	}
Reads the datatypes encoded in SARIF from the specified SARIF parser and
recreates them in a datatype manager.

@param result  the SARIF parser
@param monitor the task monitor
@throws SAXParseException  if an SARIF parse error occurs
@throws CancelledException if the user cancels the read operation
Ghidra/Features/Sarif/src/main/java/sarif/managers/DataTypesSarifMgr.java