'A path is not simply revertable by path[::-1] since the code
specifies an action to take from the **previous** point.'

def _revert(self, path, first_action=Path.LINETO):

    reverse_path = []
    next_code = first_action
    for (code, position) in path[::(-1)]:
        reverse_path.append((next_code, position))
        next_code = code
    return reverse_path
