class AbstractExecutionSlotAllocator implements ExecutionSlotAllocator {

	void validateSchedulingRequirements(final Collection<ExecutionVertexSchedulingRequirements> schedulingRequirements) {
		schedulingRequirements.stream()
			.map(ExecutionVertexSchedulingRequirements::getExecutionVertexId)
			.forEach(id -> checkState(
				!pendingSlotAssignments.containsKey(id),
				"BUG: vertex %s tries to allocate a slot when its previous slot request is still pending", id));
	}

	  AbstractExecutionSlotAllocator(final PreferredLocationsRetriever preferredLocationsRetriever);

}