typedef A[T] = (var T^ m); var (bool x) b; () f[T](A[T]^ a, A[T]^ b) { var A[(bool b)] nonpriv; /* ERRORS */ a^.m^ = a^.m^; nonpriv.m^ = a^.m^; a^.m^ = nonpriv.m^; }