code: public Matrix4f translationRotateScaleMulAffine(Vector3fc translation, 
                                                      Quaternionfc quat, 
                                                      Vector3fc scale,
                                                      Matrix4f m) {
          return translationRotateScaleMulAffine(translation.x(), translation.y(), translation.z(), quat.x(), quat.y(), quat.z(), quat.w(), scale.x(), scale.y(), scale.z(), m);
      }
docs: Set <code>this</code> matrix to <code>T * R * S * M</code>, where <code>T</code> is the given <code>translation</code>,
  <code>R</code> is a rotation - and possibly scaling - transformation specified by the given quaternion, <code>S</code> is a scaling transformation
  which scales the axes by <code>scale</code> and <code>M</code> is an {@link #isAffine() affine} matrix.
  <p>
  When transforming a vector by the resulting matrix the transformation described by <code>M</code> will be applied first, then the scaling, then rotation and
  at last the translation.
  <p>
  When used with a right-handed coordinate system, the produced rotation will rotate a vector
  counter-clockwise around the rotation axis, when viewing along the negative axis direction towards the origin.
  When used with a left-handed coordinate system, the rotation is clockwise.
  <p>
  This method is equivalent to calling: <code>translation(translation).rotate(quat).scale(scale).mulAffine(m)</code>
  
  @see #translation(Vector3fc)
  @see #rotate(Quaternionfc)
  @see #mulAffine(Matrix4fc)
  
  @param translation
  the translation
  @param quat
  the quaternion representing a rotation
  @param scale
  the scaling factors
  @param m
  the {@link #isAffine() affine} matrix to multiply by
  @return this