function assert_any(assert_func, actual, expected_array, ...args)
    {
        var errors = [];
        var passed = false;
        forEach(expected_array,
                function(expected)
                {
                    try {
                        assert_func.apply(this, [actual, expected].concat(args));
                        passed = true;
                    } catch (e) {
                        errors.push(e.message);
                    }
                });
        if (!passed) {
            throw new AssertionError(errors.join("\n\n"));
        }
    }
Asserts that ``actual`` matches at least one value of ``expected``
according to a comparison defined by ``assert_func``.

Note that tests with multiple allowed pass conditions are bad
practice unless the spec specifically allows multiple
behaviours. Test authors should not use this method simply to
hide UA bugs.

@param {AssertFunc} assert_func - Function to compare actual
and expected. It must throw when the comparison fails and
return when the comparison passes.
@param {Any} actual - Test value.
@param {Array} expected_array - Array of possible expected values.
@param {Any[]} args - Additional arguments to pass to ``assert_func``.