protected function isValidRename($source, $dest)
    {
        $adapter = $this->filesystem->getAdapter();

        if ( ! $adapter->has($source)) {
            throw new FileNotFoundException($source);
        }

        $subdir = Util::dirname($dest);

        if (strlen($subdir) && ! $adapter->has($subdir)) {
            throw new FileNotFoundException($source);
        }

        if ( ! $adapter->has($dest)) {
            return true;
        }

        return $this->compareTypes($source, $dest);
    }