Consider this header:
```
struct Dummy {
struct Baz *Foo;
};
struct Bar {
int x;
};
typedef struct tagFoo {
struct Baz { int y; } bar;
} Foo;
```
In this case, we see Baz when we are visiting Dummy. Because of that, the name mangler thinks that Baz is nested inside Dummy, when in reality it's nested inside tagFoo.
```
struct Dummy {
struct Baz *Foo;
};
struct Bar {
int x;
};
typedef struct tagFoo {
struct Baz { int y; } bar;
} Foo;
```
In this case, we see Baz when we are visiting Dummy. Because of that, the name mangler thinks that Baz is nested inside Dummy, when in reality it's nested inside tagFoo.