base.Either[A,B]

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