code: public Matrix4d perspectiveFrustumSlice(double near, double far, Matrix4d dest) {
          double invOldNear = (m23 + m22) / m32;
          double invNearFar = 1.0 / (near - far);
          dest.m00 = m00 * invOldNear * near;
          dest.m01 = m01;
          dest.m02 = m02;
          dest.m03 = m03;
          dest.m10 = m10;
          dest.m11 = m11 * invOldNear * near;
          dest.m12 = m12;
          dest.m13 = m13;
          dest.m20 = m20;
          dest.m21 = m21;
          dest.m22 = (far + near) * invNearFar;
          dest.m23 = m23;
          dest.m30 = m30;
          dest.m31 = m31;
          dest.m32 = (far + far) * near * invNearFar;
          dest.m33 = m33;
          dest.properties = properties & ~(PROPERTY_IDENTITY | PROPERTY_TRANSLATION | PROPERTY_ORTHONORMAL);
          return dest;
      }
docs: /* (non-Javadoc)
  @see org.joml.Matrix4dc#perspectiveFrustumSlice(double, double, org.joml.Matrix4d)