    use proc_macros::{mirror, identity, DeriveIdentity};
    use pm::proc_macro;

    mirror! {
        {
            ,i32 :x pub
            ,i32 :y pub
        } Foo struct
    }
    macro_rules! def_fn {
        ($($tt:tt)*) => {$($tt)*}
    }

    def_fn! {
        fn bar() -> u32 {
            100
        }
    }

    macro_rules! dont_color_me_braces {
        () => {0}
    }

    macro_rules! noop {
        ($expr:expr) => {
            $expr
        }
    }

    /// textually shadow previous definition
    macro_rules! noop {
        ($expr:expr) => {
            $expr
        }
    }

    macro_rules! keyword_frag {
        ($type:ty) => ($type)
    }

    macro with_args($i:ident) {
        $i
    }

    macro without_args {
        ($i:ident) => {
            $i
        }
    }

    macro_rules! id {
        ($($tt:tt)*) => {
            $($tt)*
        };
    }

    include!(concat!("foo/", "foo.rs"));

    struct S<T>(T);
    fn main() {
        struct TestLocal;
        // regression test, TestLocal here used to not resolve
        let _: S<id![TestLocal]>;

        format_args!("Hello, {}!", (92,).0);
        dont_color_me_braces!();
        noop!(noop!(1));
    }