private void generateCoreTypes() {
		voidDt = new VoidDataType(progDataTypes);
		coreBuiltin = new HashMap<Long, TypeMap>();
		TypeMap type = new TypeMap(displayLanguage, VoidDataType.dataType, "void", false, false,
			builtInDataTypes);
		coreBuiltin.put(type.id, type);

		for (BuiltIn dt : Undefined.getUndefinedDataTypes()) {
			type = new TypeMap(displayLanguage, dt, "unknown", false, false, builtInDataTypes);
			coreBuiltin.put(type.id, type);
		}
		for (BuiltIn dt : AbstractIntegerDataType.getSignedDataTypes(progDataTypes)) {
			type = new TypeMap(displayLanguage, dt, "int", false, false, builtInDataTypes);
			coreBuiltin.put(type.id, type);
		}
		for (BuiltIn dt : AbstractIntegerDataType.getUnsignedDataTypes(progDataTypes)) {
			type = new TypeMap(displayLanguage, dt, "uint", false, false, builtInDataTypes);
			coreBuiltin.put(type.id, type);
		}
		for (BuiltIn dt : AbstractFloatDataType.getFloatDataTypes(progDataTypes)) {
			type = new TypeMap(displayLanguage, dt, "float", false, false, builtInDataTypes);
			coreBuiltin.put(type.id, type);
		}

		type = new TypeMap(DataType.DEFAULT, "code", "code", false, false, CODE_DECOMPILER_ID);
		coreBuiltin.put(type.id, type);

		// Set "char" datatype
		BuiltIn charDataType = new CharDataType(progDataTypes);

		String charMetatype = null;
		boolean isChar = false;
		boolean isUtf = false;
		if (charDataType instanceof CharDataType && ((CharDataType) charDataType).isSigned()) {
			charMetatype = "int";
		}
		else {
			charMetatype = "uint";
		}
		if (charDataType.getLength() == 1) {
			isChar = true;
		}
		else {
			isUtf = true;
		}
		charMap = new TypeMap(displayLanguage, charDataType, charMetatype, isChar, isUtf,
			builtInDataTypes);
		coreBuiltin.put(charMap.id, charMap);

		// Set up the "wchar_t" datatype
		WideCharDataType wideDataType = new WideCharDataType(progDataTypes);
		wCharMap = new TypeMap(displayLanguage, wideDataType, "int", false, true, builtInDataTypes);
		coreBuiltin.put(wCharMap.id, wCharMap);

		if (wideDataType.getLength() != 2) {
			wChar16Map = new TypeMap(displayLanguage, new WideChar16DataType(progDataTypes), "int",
				false, true, builtInDataTypes);
			coreBuiltin.put(wChar16Map.id, wChar16Map);
		}
		else {
			wChar16Map = wCharMap;
		}
		if (wideDataType.getLength() != 4) {
			wChar32Map = new TypeMap(displayLanguage, new WideChar32DataType(progDataTypes), "int",
				false, true, builtInDataTypes);
			coreBuiltin.put(wChar32Map.id, wChar32Map);
		}
		else {
			wChar32Map = wCharMap;
		}

		BuiltIn boolDataType = new BooleanDataType(progDataTypes);
		type = new TypeMap(displayLanguage, boolDataType, "bool", false, false, builtInDataTypes);
		coreBuiltin.put(type.id, type);

		// Set aside the "byte" builtin for encoding byte references
		long byteId = builtInDataTypes.getID(ByteDataType.dataType.clone(builtInDataTypes));
		byteMap = coreBuiltin.get(byteId | BUILTIN_ID_HEADER);
	}
Build the list of core data-types. Data-types that are always available to the Decompiler
and are associated with a (metatype,size) pair.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeDataTypeManager.java