FieldLists getFieldLists(AbstractFieldListMsType fieldListType) throws PdbException {
		List<AbstractMsType> bases = new ArrayList<>();
		List<AbstractMsType> members = new ArrayList<>();
		List<AbstractMsType> methods = new ArrayList<>();
		for (MsTypeField typeIterated : fieldListType.getBaseClassList()) {
			bases.add((AbstractMsType) typeIterated);
		}
		for (MsTypeField typeIterated : fieldListType.getMemberList()) {
			members.add((AbstractMsType) typeIterated);
		}
		for (MsTypeField typeIterated : fieldListType.getMethodList()) {
			methods.add((AbstractMsType) typeIterated);
		}
		List<AbstractMemberMsType> nonstaticMembers =
			new ArrayList<>(fieldListType.getNonStaticMembers());
		List<AbstractStaticMemberMsType> staticMembers =
			new ArrayList<>(fieldListType.getStaticMembers());
		List<AbstractVirtualFunctionTablePointerMsType> vftPtrs =
			new ArrayList<>(fieldListType.getVftPointers());
		List<AbstractNestedTypeMsType> nestedTypes =
			new ArrayList<>(fieldListType.getNestedTypes());
		List<AbstractEnumerateMsType> enumerates = new ArrayList<>(fieldListType.getEnumerates());

		for (AbstractIndexMsType indexType : fieldListType.getIndexList()) {
			RecordNumber subRecordNumber = indexType.getReferencedRecordNumber();
			MsTypeApplier referencedTypeApplier =
				applicator.getTypeApplier(indexType.getReferencedRecordNumber());
			if (referencedTypeApplier instanceof FieldListTypeApplier fieldListApplier) {
				FieldListTypeApplier.FieldLists lists =
					fieldListApplier.getFieldLists(subRecordNumber);
				bases.addAll(lists.bases());
				members.addAll(lists.members());
				methods.addAll(lists.methods());
				nonstaticMembers.addAll(lists.nonstaticMembers());
				staticMembers.addAll(lists.staticMembers());
				vftPtrs.addAll(lists.vftPtrs());
				nestedTypes.addAll(lists.nestedTypes());
				enumerates.addAll(lists.enumerates());
			}
			else {
				pdbLogAndInfoMessage(this, "referenceTypeApplier is not FieldListTypeApplier");
			}
		}

		return new FieldLists(bases, members, nonstaticMembers, staticMembers, vftPtrs, methods,
			nestedTypes,
			enumerates);
	}
Constructor
@param applicator {@link DefaultPdbApplicator} for which this class is working
@throws IllegalArgumentException Upon invalid arguments
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/FieldListTypeApplier.java