What is the combination serializer service?

The combination serializer service is used to serialize and deserialize models.
Serializing
This is used to take a collection of models and convert them into a string that can be used to find a corresponding combination.
Let's say you have a category called 
mens, a manufacturer called 
acme and a 
blue tag in the group 
color. Then if you visit 
/mens/acme/blue on the storefront it will load any products in the category 
mens that have the manufacturer 
acme and are tagged with 
blue.
Perhaps you might rather that it 404s unless a combination for those models exists (as otherwise there may very likely be no products that matches the criteria). This can be done by serializing the slugs and considering them invalid if they don't correspond to an existing combination model:
\Aero\Store\Routing\Slugs::setValidator(function (\Illuminate\Database\Eloquent\Collection $slugs, $resolver) {
    if ($resolver !== 'listings') return true;
    try {
        $serialized = \Aero\Common\Services\CombinationSerializer::serialize(
            $slugs->map(function (\Aero\Store\Models\Slug $slug) {
                return $slug->model;
            })
        );
        return \Aero\Catalog\Models\Combination::where('serialized', $serialized)->exists();
    } catch (\Exception $e) {
        return false;
    }
});
Deserializing
This is used to take a combination model and find all of its' component models (collections, categories, manufacturers & tags).
For example, you might want to resolve the category ids for the listings page from the combination:
\Aero\Store\Http\Responses\ListingsPage::extend(function (\Aero\Store\Http\Responses\ListingsPage $page, \Closure $next) {
    $categoryIds = \Aero\Common\Services\CombinationSerializer::deserialize($page->getData('combination'))
        ->filter(function (\Illuminate\Database\Eloquent\Model $model) {
            return $model instanceof \Aero\Catalog\Models\Category;
        })
        ->pluck('id');
    // Do stuff...
    return $next($page);
});