throw new ApplicationError();
throw Debug.abort();
    private Label branch(Test test, Chain chain) {	assert chain != null;	Label label = chain.label;	switch (test) {	case False:	    code.Emit(OpCodes.Br, label);	    return label;	case True:	    return null;	case Bool(boolean value):	    code.Emit(value ? OpCodes.Brtrue : OpCodes.Brfalse, label);	    return label;	case And(Test t):	    return branch(t, chain);	case Or(Test t):	    return branch(t, chain);	case Binary(int opcode, MSILType type):	    code.Emit(branch(negate(opcode)), label);	    return label;	default:	    throw new ApplicationError();	}    }