public function find($uuid, $max_version = null): ?Snapshot
    {
        $criteria = new Criteria();
        $criteria->where(Criteria::expr()->eq('uuid', $uuid));

        if (null !== $max_version) {
            $criteria->andWhere(Criteria::expr()->lte('version', $max_version));
        }

        $criteria->orderBy(['version' => Criteria::DESC]);
        $snapshot = $this->em->getRepository(Snapshot::class)->matching($criteria)->first();

        return $snapshot instanceof Snapshot ? $snapshot : null;
    }