Is this because Boros is a forward reference? And is this not a bug?
Actually I'm quite surprised you got the second version to compile at all. You are defining a chicken as something that comes out of a egg, while a egg is something that comes out of a chicken.