pub fn expand(input: DeriveInput) -> Result<TokenStream>