If I got it right: an Object3D has on one side the set of properties (position, scale, rotation) [*] and on the other side the matrix - this later contains esentially the same information, it's computed from the others in Object3D.updateMatrix() and is the one really used internally by the renderer computations. Instead, the set (position, scale, rotation) is the one that is usually manipulated by the programmer (translations, rotations...).
Sometimes, however, one manipulates directly the matrix, and, further, instead of setting matrixAutoUpdate=false and forgetting about (position, scale, rotation), one wants to keep the properties in sync, i.e. do what Object3D.updateMatrix() does but in the other direction. Is there some implemented/efficient/recommended procedure to accomplish this?
[*] Caveats:
1) if useQuaternion=true, the quaternion is used instead of rotation
2) rotation is complemented by eulerOrder
3) I'm not sure what role play up in this picture, I guess it's not important here.