ROOT TMatrixD operator*=transpose causes unexpected behavior

{
TMatrix mm(2,2);
mm[0][0] = 2;
mm[0][1] = 2;
mm.Print()
}

outputs

2x2 matrix is as follows

     |      0    |      1    |
-------------------------------
   0 |          2           2 
   1 |          0           0 

I want to calculate mm*mm^T and I expected mm*=mm.T() to produce the right results but instead I get

root [15] mm*=mm.T()
(class TMatrixT<float>)140225110178512
root [16] mm.Print()

2x2 matrix is as follows

     |      0    |      1    |
-------------------------------
   0 |          4           0 
   1 |          4           0 

which is clearly wrong.

It seems like T() modifies the matrix in place. Is this a feature or a bug? Perhaps it’s incorrect usage, but I couldn’t find much documentation on T() operator and I feel like this mistake can be a common and easily overlooked one.

This is the expected behavior. If you do want to keep the original matrix
use Transpose(const TMatrixT& source) or constructor with kTranspose
option or even better use the constructor
TMatrixT(const TMatrixT& a, TMatrixT::EMatrixCreatorsOp2 op, const TMatrixT& b) with the option kTransposeMult