@alexcrichton My understanding of this is very limited too but I think head() opens two blocks (as can be seen in https://github.com/jakub-/rust/blob/7173b9d1b8475bf2b44e50b78501f45f98c76bc0/src/libsyntax/print/pprust.rs#L246).

    impl Trait for T {
        fn foo() -> uint { 42 }
    }

One spanning "impl Trait for T" (presumably so you can indent properly when you're wrapping a header that's too long?), and other one spanning the whole thing up to }.