RetType dispatchByItemKind_gen(Inst item,Visitor& vis) {
	using namespace Brig;
	switch(item.brig()->kind) {
	case BRIG_INST_CVT: return vis(InstCvt(item));
	case BRIG_INST_MOD: return vis(InstMod(item));
	case BRIG_INST_BASIC: return vis(InstBasic(item));
	case BRIG_INST_ATOMIC: return vis(InstAtomic(item));
	case BRIG_INST_SOURCE_TYPE: return vis(InstSourceType(item));
	case BRIG_INST_IMAGE: return vis(InstImage(item));
	case BRIG_INST_BR: return vis(InstBr(item));
	case BRIG_INST_FBAR: return vis(InstFbar(item));
	case BRIG_INST_SEG: return vis(InstSeg(item));
	case BRIG_INST_MEM: return vis(InstMem(item));
	case BRIG_INST_BAR: return vis(InstBar(item));
	case BRIG_INST_CMP: return vis(InstCmp(item));
	case BRIG_INST_ATOMIC_IMAGE: return vis(InstAtomicImage(item));
	case BRIG_INST_ADDR: return vis(InstAddr(item));
	default: assert(false); break;
	}
	return RetType();
}