`o` is optional. It only needs to be rewound if provided.