	switch (t->forw) {
	default: Uerror("bad forward move");
	case 0:	/* if without executable clauses */
		continue;
	case 1: /* generic 'goto' or 'skip' */
		IfNotBlocked
		m = 3; goto P999;
	case 2: /* generic 'else' */
		IfNotBlocked
		if (trpt->o_pm&1) continue;
		m = 3; goto P999;

		 /* PROC :init: */
	case 3: /* STATE 1 - line 26 "deadlock.philosophers.prm" - [((philosophers>0))] (3:0:1 - 1) */
		IfNotBlocked
		if (!((((int)((P1 *)THIS)->philosophers)>0)))
			continue;
		/* merge: philosophers = (philosophers-1)(0, 2, 3) */
		reached[ot][2] = 1;
		
#ifndef HSFSPIN
			(trpt+1)->bup.oval = ((int)((P1 *)THIS)->philosophers);
		
#endif /* HSFSPIN */
((P1 *)THIS)->philosophers = (((int)((P1 *)THIS)->philosophers)-1);
#ifdef VAR_RANGES
		logval(":init::philosophers", ((int)((P1 *)THIS)->philosophers));
#endif
		;
		m = 3; goto P999; /* 1 */
	case 4: /* STATE 3 - line 28 "deadlock.philosophers.prm" - [(run philosopher(philosophers))] (0:0:0 - 1) */
		IfNotBlocked
		if (!(addproc(0, ((int)((P1 *)THIS)->philosophers))))
			continue;
		m = 3; goto P999; /* 0 */
	case 5: /* STATE 4 - line 29 "deadlock.philosophers.prm" - [forks[philosophers]!fork] (0:0:0 - 1) */
		IfNotBlocked
		if (q_full(NOW
forks[((int)((P1 *)THIS)->philosophers)]))
			continue;
		qsend(NOW
forks[((int)((P1 *)THIS)->philosophers)], 0, 1);
		m = 2; goto P999; /* 0 */
	case 6: /* STATE 5 - line 30 "deadlock.philosophers.prm" - [((philosophers==0))] (9:0:1 - 1) */
		IfNotBlocked
		if (!((((int)((P1 *)THIS)->philosophers)==0)))
			continue;
		/* dead 1: philosophers */  
#ifndef HSFSPIN
			(trpt+1)->bup.oval = ((P1 *)THIS)->philosophers;
		((P1 *)THIS)->philosophers = 0
#endif /* HSFSPIN */
;
		/* merge: goto :b1(0, 6, 9) */
		reached[ot][6] = 1;
		;
		m = 3; goto P999; /* 1 */
	case 7: /* STATE 11 - line 34 "deadlock.philosophers.prm" - [-end-] (0:0:0 - 1) */
		IfNotBlocked
		if (!delproc(1, II)) continue;
		m = 3; goto P999; /* 0 */

		 /* PROC philosopher */
	case 8: /* STATE 1 - line 12 "deadlock.philosophers.prm" - [forks[my_id]?fork] (0:0:0 - 1) */
		if (q_len(NOW
forks[((P0 *)THIS)->my_id]) == 0) continue;

		XX=1;
		if (1 != qrecv(NOW
forks[((P0 *)THIS)->my_id], 0, 0, 0)) continue;
		if (q_flds[((Q0 *)qptr(NOW
forks[((P0 *)THIS)->my_id]-1))->_t] != 1)
			Uerror("wrong nr of msg fields in rcv");
		
#ifndef HSFSPIN
#endif /* HSFSPIN */
;
		qrecv(NOW
forks[((P0 *)THIS)->my_id], XX-1, 0, 1);
		;
		m = 4; goto P999; /* 0 */
	case 9: /* STATE 2 - line 13 "deadlock.philosophers.prm" - [forks[((my_id+1)%4)]?fork] (0:0:0 - 1) */
		if (q_len(NOW
forks[((((P0 *)THIS)->my_id+1)%4)]) == 0) continue;

		XX=1;
		if (1 != qrecv(NOW
forks[((((P0 *)THIS)->my_id+1)%4)], 0, 0, 0)) continue;
		if (q_flds[((Q0 *)qptr(NOW
forks[((((P0 *)THIS)->my_id+1)%4)]-1))->_t] != 1)
			Uerror("wrong nr of msg fields in rcv");
		
#ifndef HSFSPIN
#endif /* HSFSPIN */
;
		qrecv(NOW
forks[((((P0 *)THIS)->my_id+1)%4)], XX-1, 0, 1);
		;
		m = 4; goto P999; /* 0 */
	case 10: /* STATE 3 - line 15 "deadlock.philosophers.prm" - [forks[my_id]!fork] (0:0:0 - 1) */
		IfNotBlocked
		if (q_full(NOW
forks[((P0 *)THIS)->my_id]))
			continue;
		qsend(NOW
forks[((P0 *)THIS)->my_id], 0, 1);
		m = 2; goto P999; /* 0 */
	case 11: /* STATE 4 - line 15 "deadlock.philosophers.prm" - [forks[((my_id+1)%4)]!fork] (0:0:0 - 1) */
		IfNotBlocked
		if (q_full(NOW
forks[((((P0 *)THIS)->my_id+1)%4)]))
			continue;
		qsend(NOW
forks[((((P0 *)THIS)->my_id+1)%4)], 0, 1);
		m = 2; goto P999; /* 0 */
/* STATE 8 - line 18 "deadlock.philosophers.prm" - [-end-] (0:0 - 1) same as 7 (0:0 - 1) */
	case  _T5:	/* np_ */
		if (!((!(trpt->o_pm&4) && !(trpt->tau&128))))
			continue;
		/* else fall through */
	case  _T2:	/* true */
		m = 3; goto P999;
	}

