code: public Matrix4x3f rotate(Quaternionfc quat, Matrix4x3f dest) {
          if ((properties & PROPERTY_IDENTITY) != 0)
              return dest.rotation(quat);
          else if ((properties & PROPERTY_TRANSLATION) != 0)
              return rotateTranslation(quat, dest);
          return rotateGeneric(quat, dest);
      }
docs: Apply the rotation - and possibly scaling - transformation of the given {@link Quaternionfc} to this matrix and store
  the result in <code>dest</code>.
  <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>
  If <code>M</code> is <code>this</code> matrix and <code>Q</code> the rotation matrix obtained from the given quaternion,
  then the new matrix will be <code>M * Q</code>. So when transforming a
  vector <code>v</code> with the new matrix by using <code>M * Q * v</code>,
  the quaternion rotation will be applied first!
  <p>
  In order to set the matrix to a rotation transformation without post-multiplying,
  use {@link #rotation(Quaternionfc)}.
  <p>
  Reference: <a href="http://en.wikipedia.org/wiki/Rotation_matrix#Quaternion">http://en.wikipedia.org</a>
  
  @see #rotation(Quaternionfc)
  
  @param quat
  the {@link Quaternionfc}
  @param dest
  will hold the result
  @return dest