Difference between applyMatrix4() and multiplying matrix manually

Hi,

I have created a cube and applied some position , rotation and scale transformations . Now I am trying to get this whole transformation from cube.matrix , and apply to another mesh , let’s say testMesh. If I use testMesh.applyMatrix4(this.cube.matrix), it works well as expected, my testMesh is getting the same transformation of cube. But If try to do manually like following , the testMesh is not getting transformed.

testMesh.matrix.multiply(this.cube.matrix);
testMesh.updateMatrix();
testMesh.updateWorldMatrix(true, true);

Eventhough I get desired output from applyMatrix4, technically I would like to understand the difference between two approaches . In both, values of testMesh.matrix are getting updated , but visually I am seeing only correct result with applyMatrix4. Can anyone please help me with the difference ?