private boolean precheckOrScheduleDependencies(AbstractMsType type)
			throws PdbException {
		boolean done = true;

		RecordNumber returnRecordNumber = getReturnRecordNumber(type);
		DataType dt = applicator.getDataTypeOrSchedule(returnRecordNumber);
		if (dt == null) {
			done = false;
		}

		List<RecordNumber> args = getArgsRecordNumbers(type);
		for (RecordNumber argRecordNumber : args) {
			dt = applicator.getDataTypeOrSchedule(argRecordNumber);
			if (dt == null) {
				done = false;
			}
		}

		RecordNumber thisRecordNumber = getThisPointerRecordNumber(type);
		if (thisRecordNumber != null) {
			dt = applicator.getDataTypeOrSchedule(thisRecordNumber);
			if (dt == null) {
				done = false;
			}
		}

		RecordNumber containerRecordNumber = getContainingComplexRecordNumber(type);
		if (containerRecordNumber != null) {
			dt = applicator.getDataTypeOrSchedule(containerRecordNumber);
			if (dt == null) {
				done = false;
			}
		}

		return done;
	}
Uses {@link DefaultPdbApplicator#getDataTypeOrSchedule(RecordNumber)}) on all underlying
 types to ensure that the types get scheduled... and detects whether any types were not yet
 available so that this composite type is denoted as not done.
@param type the MS type of the function
@return {@code true} if all underlying types are already available
@throws PdbException upon processing issue
Ghidra/Features/PDB/src/main/java/ghidra/app/util/pdb/pdbapplicator/AbstractFunctionTypeApplier.java