base.Either[A:imm,mut,read,B:imm,mut,read]

imm .match[R$0:iso,imm,mut,mutH,read,readH](m: mut base.EitherMatch[imm A,imm B,R$0]): R$0,
read .match[R$0:iso,imm,mut,mutH,read,readH](m: mut base.EitherMatch[read A,read B,R$0]): R$0,
mut .match[R$0:iso,imm,mut,mutH,read,readH](m: mut base.EitherMatch[A,B,R$0]): R$0,
imm .match[R$0:iso,imm,mut,mutH,read,readH](m: mut base.EitherMatch[imm A,imm B,R$0]): R$0,
read .match[R$0:iso,imm,mut,mutH,read,readH](m: mut base.EitherMatch[read A,read B,R$0]): R$0,
mut .match[R$0:iso,imm,mut,mutH,read,readH](m: mut base.EitherMatch[A,B,R$0]): R$0,