pub fn derive(input: TokenStream) -> TokenStream