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