public function generateLocationIdExcludeCriterion(array $excludeLocations)
    {
        $excludeCriterion = array();
        foreach ($excludeLocations as $location) {
            if (!$location instanceof Location) {
                throw new InvalidArgumentType('excludeLocations', 'array of Location objects');
            }

            $excludeCriterion[] = new Criterion\LogicalNot(
                new Criterion\LocationId($location->id)
            );
        }

        return new Criterion\LogicalAnd($excludeCriterion);
    }