pub(crate) fn print(w: &mut dyn Write) -> Result<(), Error>