reflect 0.0.9

The "but I thought Rust doesn't have reflection?" memorial brand new way of defining procedural macros.
Documentation
use quote::quote;

mod debug;

#[test]
fn test_debug() {
    let input = quote! {
        struct Point {
            x: i32,
            y: i32,
        }
    };

    let expected = quote! {
        impl ::std::fmt::Debug for Point {
            fn fmt(&self, __arg0: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
                /*
                // TODO: somewhat more intelligent impl
                match *self {
                    Point { x: ref __v3, y: ref __v4 } => {
                        let mut __v5 = ::std::fmt::Formatter::debug_struct(__arg0, "Point");
                        let _ = ::std::fmt::DebugStruct::field(&mut __v5, "x", __v3);
                        let _ = ::std::fmt::DebugStruct::field(&mut __v5, "y", __v4);
                        let __v11 = ::std::fmt::DebugStruct::finish(&mut __v5);
                        __v11
                    }
                }
                */

                let __v0 = self;
                let __v1 = __arg0;
                let __v3 = &__v0.x;
                let __v4 = &__v0.y;
                let mut __v5 = ::std::fmt::Formatter::debug_struct(__v1, "Point");
                let __v6 = &mut __v5;
                let _ = ::std::fmt::DebugStruct::field(__v6, "x", __v3);
                let _ = ::std::fmt::DebugStruct::field(__v6, "y", __v4);
                let __v11 = ::std::fmt::DebugStruct::finish(__v6);
                __v11
            }
        }
    };

    let actual = reflect::derive(input, debug::derive);
    assert_eq!(actual.to_string(), expected.to_string());
}