#import auto & egg


//# @
struct chicken {
  struct egg * hatchedFrom;
};

//# $f
void ctor_chicken( struct chicken * this, struct egg * hatchedFrom ) { // probably autogen
  this->hatchedFrom = hatchedFrom; // ctor_pointer$
}

//# $f
void live( struct chicken * this ) {
        int printf( const char *, ... );  // scaffold
        void exit( int );

  // scaffold
  static int calls = 0;
  if ((calls += 1) > 10) exit(0);

  printf( "chicken %p hatched from egg %p\n", this, this->hatchedFrom );
  struct egg laid; // not a pointer
  ctor_egg( & laid, this );
  hatch( & laid );
}
