public static function has($data, string $path): bool
    {
        Assert::isArrayAccessible($data);
        Assert::stringNotEmpty($path);

        $path = explode('/', $path);

        while (($part = array_shift($path)) !== null) {
            if (! ($data instanceof ArrayAccess) && ! is_array($data)) {
                return false;
            }
            if (! (isset($data[$part]) || array_key_exists($part, $data))) {
                return false;
            }
            $data = $data[$part];
        }

        return true;
    }