pub trait Codegen { type Output; fn generate(&self, project: &Project) -> Validation<Self::Output>; }