public static function generateCacheKey()
    {
        $args = func_get_args();
        if (empty($args)) {
            throw new \InvalidArgumentException('At least one argument must be passed to generate cache key.');
        }
        $const = $args[0] . '::VERSION';
        $version = defined($const) ? self::$delimiter . constant($const) : '';
        return self::$prefix . self::$delimiter . implode(self::$delimiter, $args) . $version;
    }