This is the first step in refactoring the deriving code in libsyntax. No code is changed, just rearranged.
fn()
&fn()
as Trait