public function testMergingTwoBagsCreatesANewModifiedInstance()
{
$bag1 = (new FlagBag('bag1'))->withFlag($flag1 = new MutableFlag('flag1', new \stdClass()));
$bag2 = (new FlagBag('bag2'))->withFlag($flag2 = new MutableFlag('flag2', new \stdClass()));
$mergedBag = $bag1->mergeWith($bag2);
$this->assertInstanceOf(FlagBag::class, $mergedBag);
$this->assertEquals((new FlagBag('bag1'))->withFlag($flag1), $bag1);
$this->assertEquals((new FlagBag('bag2'))->withFlag(new MutableFlag('flag2', new \stdClass())), $bag2);
$this->assertEquals((new FlagBag('bag1'))->withFlag(new MutableFlag('flag1', new \stdClass()))->withFlag(new MutableFlag('flag2', new \stdClass())), $mergedBag);
}