public function edit(array &$array, string $path, $value): void
    {
        // If $path is not writable
        if (false === $this->isRoot($path) && false === $this->pa->isReadable($array, $path)) {
            throw new AccessException(sprintf('The path "%s" you are trying to edit isn\'t readable and so cannot be edited.', $path));
        }

        if ($this->isRoot($path)) {
            $array = $value;
        } else {
            $this->pa->setValue($array, $path, $value);
        }
    }