    #[derive(Clone, Debug)]
    struct Foo {
        pub x: i32,
        pub y: i32,
    }

    fn foo<T>() -> T {
        unimplemented!();
        foo::<i32>();
    }

    // comment
    fn main() {
        println!("Hello, {}!", 92);

        let mut vec = Vec::new();
        if true {
            let x = 92;
            vec.push(Foo { x, y: 1 });
        }
        unsafe { vec.set_len(0); }

        let mut x = 42;
        let y = &mut x;
        let z = &y;

        y;
    }

    enum E<X> {
        V(X)
    }

    impl<X> E<X> {
        fn new<T>() -> E<T> {}
    }