Fix a number of bugs related to label inference

* Double-presentation
* Inconsistent presentation between struct nav and caret nav
* Infering what is clearly the wrong label