pub(crate) fn extract_generic<'a>(name: &str, ty: &'a Type) -> Option<&'a Type>