    extern crate self;

    use crate;
    use self;
    mod __ {
        use super::*;
    }

    macro_rules! void {
        ($($tt:tt)*) => {discard!($($tt:tt)*)}
    }

    struct __ where Self:;
    fn __(_: Self) {}
    void!(Self);

    // edition dependent
    void!(try async await gen);
    // edition and context dependent
    void!(dyn);
    // builtin custom syntax
    void!(builtin offset_of format_args asm);
    // contextual
    void!(macro_rules, union, default, raw, auto, yeet);
    // reserved
    void!(abstract become box do final macro override priv typeof unsized virtual yield);
    void!('static 'self 'unsafe)