public function getDiff($version, $current = null)
    {
        if (!in_array($version, $this->getVersions(), true)) {
            throw new \UnexpectedValueException("Invalid log entry $version for {$this->path}.");
        }

        $diff = \Arbit\VCSWrapper\Cache\Manager::get($this->path, $version, 'diff');
        if ($diff === false) {
            // Refetch the basic content information, and cache it.
            $process = new \Arbit\VCSWrapper\BzrCli\Process();
            $process->workingDirectory($this->root);
            $process->argument('diff');

            if ($current !== null) {
                $process->argument('-r' . $version . ".." . $current);
            } else {
                $process->argument("-r" . $version);
            }

            $process->argument(new \SystemProcess\Argument\PathArgument('.' . $this->path));
            $process->execute();

            // Parse resulting unified diff
            $parser = new \Arbit\VCSWrapper\Diff\Unified();
            $diff   = $parser->parseString($process->stdoutOutput);
            \Arbit\VCSWrapper\Cache\Manager::cache($this->path, $version, 'diff', $diff);
        }

        return $diff;
    }