private EnumDataType applyEnumMsType(EnumDataType enumDataType, AbstractEnumMsType type)
			throws PdbException {

		if (enumDataType.getCount() != 0) {
			//already applied
			return enumDataType;
		}

		String fullPathName = type.getName();

		RecordNumber fieldListRecordNumber = type.getFieldDescriptorListRecordNumber();
		FieldListTypeApplier fieldListApplier =
			FieldListTypeApplier.getFieldListApplierSpecial(applicator, fieldListRecordNumber);

		FieldListTypeApplier.FieldLists lists =
			fieldListApplier.getFieldLists(fieldListRecordNumber);

		if (!lists.methods().isEmpty()) {
			// See applyCpp where we store sp in CppCompositeType so we don't have to determine
			//  this again (including possible demangling)... can we store this symbol path
			//  somewhere as well so we do not need to re-create it?
			SymbolPath sp = getFixedSymbolPath(type);
			applicator.predefineClass(sp);
		}

		// Note: not doing anything with getNamespaceList() or getMethodsList() at this time.
		List<AbstractEnumerateMsType> enumerates = lists.enumerates();

		int numElements = type.getNumElements();
		if (enumerates.size() != numElements) {
			pdbLogAndInfoMessage(this, "Enum expecting " + numElements + " elements, but only " +
				enumerates.size() + " available for " + fullPathName);
		}

		int length = getLength(type);
		boolean isSigned = isSigned(type);
		for (AbstractEnumerateMsType enumerateType : enumerates) {
			SymbolPath memberSymbolPath = new SymbolPath(enumerateType.getName());
			enumDataType.add(memberSymbolPath.getName(), narrowingConversion(type, length, isSigned,
				enumerateType.getNumeric()));
		}
		return enumDataType;
	}
Constructor for enum type applier, for transforming a enum into a Ghidra DataType
@param applicator {@link DefaultPdbApplicator} for which this class is working
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/EnumTypeApplier.java