pub fn generate<W: Write>( writer: W, mod_name: &str, name: &str, atoms: Vec<&str>, visitors: Vec<&str>) -> Result<(), Box<dyn Error>>