code: public Matrix4d scaleAround(double sx, double sy, double sz, double ox, double oy, double oz, Matrix4d dest) {
          double nm30 = m00 * ox + m10 * oy + m20 * oz + m30;
          double nm31 = m01 * ox + m11 * oy + m21 * oz + m31;
          double nm32 = m02 * ox + m12 * oy + m22 * oz + m32;
          double nm33 = m03 * ox + m13 * oy + m23 * oz + m33;
          dest.m00 = m00 * sx;
          dest.m01 = m01 * sx;
          dest.m02 = m02 * sx;
          dest.m03 = m03 * sx;
          dest.m10 = m10 * sy;
          dest.m11 = m11 * sy;
          dest.m12 = m12 * sy;
          dest.m13 = m13 * sy;
          dest.m20 = m20 * sz;
          dest.m21 = m21 * sz;
          dest.m22 = m22 * sz;
          dest.m23 = m23 * sz;
          dest.m30 = -m00 * ox - m10 * oy - m20 * oz + nm30;
          dest.m31 = -m01 * ox - m11 * oy - m21 * oz + nm31;
          dest.m32 = -m02 * ox - m12 * oy - m22 * oz + nm32;
          dest.m33 = -m03 * ox - m13 * oy - m23 * oz + nm33;
          boolean one = Math.abs(sx) == 1.0 && Math.abs(sy) == 1.0 && Math.abs(sz) == 1.0;
          dest.properties = properties & ~(PROPERTY_PERSPECTIVE | PROPERTY_IDENTITY | PROPERTY_TRANSLATION
                  | (one ? 0 : PROPERTY_ORTHONORMAL));
          return dest;
      }
docs: /* (non-Javadoc)
  @see org.joml.Matrix4dc#scaleAround(double, double, double, double, double, double, org.joml.Matrix4d)