public static function identify(Throwable $exception): string
    {
        $hash = \spl_object_hash($exception);

        // if we know about the exception, return it's id
        if (isset(self::$identification[$hash])) {
            return self::$identification[$hash];
        }

        // cleanup in preparation for the identification
        if (\count((array) self::$identification) >= 16) {
            \array_shift(self::$identification);
        }

        // generate, store, and return the id
        return self::$identification[$hash] = self::uuid4();
    }