public static function createSymbolicLink(string $link, string $target) : void
    {
        $exception = null;

        try {
            $success = ErrorCatcher::run(static function() use ($link, $target) {
                return symlink($target, $link);
            });

            if ($success === true) {
                return;
            }
        } catch (\ErrorException $e) {
            $exception = $e;
        }

        throw new IoException('Error creating symbolic link ' . $link . ' to ' . $target, 0, $exception);
    }