public int assignAddressFallback(StorageClass resource, DataType tp, boolean matchExact,
			int[] status, ParameterPieces param) {

		for (ParamEntry element : entry) {
			int grp = element.getGroup();
			if (status[grp] < 0) {
				continue;
			}
			if (resource != element.getType()) {
				if (matchExact || element.getType() != StorageClass.GENERAL) {
					continue;
				}
			}

			status[grp] =
				element.getAddrBySlot(status[grp], tp.getAlignedLength(), tp.getAlignment(), param);
			if (param.address == null) {
				continue;	// -tp- does not fit in this entry
			}
			if (element.isExclusion()) {
				for (int group : element.getAllGroups()) {
					// For an exclusion entry
					status[group] = -1;			// some number of groups are taken up
				}
			}
			param.type = tp;
			return AssignAction.SUCCESS;
		}
		param.address = null;
		return AssignAction.FAIL;
	}
Assign storage for given parameter class, using the fallback assignment algorithm

Given a resource list, a data-type, and the status of previously allocated slots,
select the storage location for the parameter.  The status array is
indexed by group: a positive value indicates how many slots have been allocated
from that group, and a -1 indicates the group/resource is fully consumed.
If an Address can be assigned to the parameter, it and other details are passed back in the
ParameterPieces object and the SUCCESS code is returned.  Otherwise, the FAIL code is returned.
@param resource  is the resource list to allocate from
@param tp is the data-type of the parameter
@param matchExact is false if TYPECLASS_GENERAL is considered a match for any storage class
@param status is an array marking how many slots have already been consumed in a group
@param param will hold the address and other details of the assigned parameter
@return either SUCCESS or FAIL
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/ParamListStandard.java