private AllocationSpec doAppropriativeAllocation(
InsertionRequirements requirements, AllocationSpec allocation) {
LimitingResourceQueueElement element = requirements.getElement();
List<LimitingResourceQueue> potentiallyValidQueues = getAssignableQueues(element);
LimitingResourceQueue queue = earliestQueue(potentiallyValidQueues);
List<LimitingResourceQueueElement> unscheduled = new ArrayList<LimitingResourceQueueElement>();
allocation = unscheduleElementsFor(queue, requirements, unscheduled);
allocation.setUnscheduledElements(queuesState.inTopologicalOrder(unscheduled));
return allocation;