-- local emptyObject = require(CurrentModule.utils).emptyObject


local utils = Object.freeze(Object.assign({}, matcherUtils, {
	iterableEquality = iterableEquality,
	subsetEquality = subsetEquality,
}))

local AsymmetricMatcher = {}
AsymmetricMatcher.__index = AsymmetricMatcher
function AsymmetricMatcher.new(sample: any, inverse: boolean?)
	local self = {
		sample = sample,
		inverse = if inverse == nil then false else inverse,
		["$$typeof"] = Symbol.for_("jest.asymmetricMatcher"),
	}

	setmetatable(self, AsymmetricMatcher)
	return self
end

type State_ = MatcherState
function AsymmetricMatcher:getMatcherContext(): State_
	return Object.assign({}, getState(), {
		equals = equals,
		isNot = self.inverse,
		utils = utils,
	})
end
