// our header.h which is used by entire program
struct ZeStruct;
int ZeStruct_x(ZeStruct* z);
// some library which we want to hide from the world
struct ConcreteZeStruct { int x; };
// implementation that tries to hide ConcreteZeStruct behind ZeStruct?
typedef struct ConcreteZeStruct ZeStruct;
int ZeStruct_x(ZeStruct* z){
return z->x;
}