assert(_expr, msg, _negateMsg, expected, _actual, showDiff) {
    var ok = util.test(this, arguments);
    if (false !== showDiff) showDiff = true;
    if (undefined === expected && undefined === _actual) showDiff = false;
    if (true !== config.showDiff) showDiff = false;

    if (!ok) {
      msg = util.getMessage(this, arguments);
      var actual = util.getActual(this, arguments);
      /** @type {Record<PropertyKey, unknown>} */
      var assertionErrorObjectProperties = {
        actual: actual,
        expected: expected,
        showDiff: showDiff
      };

      var operator = util.getOperator(this, arguments);
      if (operator) {
        assertionErrorObjectProperties.operator = operator;
      }

      throw new AssertionError(
        msg,
        assertionErrorObjectProperties,
        // @ts-expect-error Not sure what to do about these types yet
        config.includeStack ? this.assert : util.flag(this, 'ssfi')
      );
    }
  }
### .assert(expression, message, negateMessage, expected, actual, showDiff)

Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass.

@name assert
@param {unknown} _expr to be tested
@param {string | Function} msg or function that returns message to display if expression fails
@param {string | Function} _negateMsg or function that returns negatedMessage to display if negated expression fails
@param {unknown} expected value (remember to check for negation)
@param {unknown} _actual (optional) will default to `this.obj`
@param {boolean} showDiff (optional) when set to `true`, assert will display a diff in addition to the message if expression fails
@returns {void}