@SuppressWarnings("unchecked")
	private boolean processUnionMembers(Entry<String, Object> entry, Union union) throws InvalidDataTypeException {
		boolean processedAll = true;
		Map<String, Object> member = (Map<String, Object>) entry.getValue();
		String memberName = (String) entry.getKey();
		Boolean noFieldName = (Boolean) member.get("hasNoFieldName");
		if (noFieldName != null && noFieldName) {
			memberName = null;
		}

		Map<String, Object> type = (Map<String, Object>) member.get("type");
		DataType memberDT = findDataType(type);
		if (memberDT != null) {
			processSettings(type, memberDT.getDefaultSettings());
			String memberComment = (String) member.get("comment");
			int dtSize = memberDT.getLength();
			if (member.get("bitSize") != null) {
				int bitSize = (int) (double) member.get("bitSize");
				union.addBitField(memberDT, bitSize, memberName, memberComment);
				return processedAll;
			}
			DataTypeComponent dtc = union.add(memberDT, dtSize, memberName, memberComment);
			processSettings(member, dtc.getDefaultSettings());
		}
		return processedAll;
	}
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