---> struct foo2 | | | | | V | void (*func1)(struct foo1*) <---- | | | 1 | | | | V | | struct foo1* | | | | 2 | | | | V | | struct foo1 | | | | |________| | | | | | struct foo3* | | | | | struct foo | | | |_________________________|