non-empty-array&hasOffset has unexpected type compatiiblity

Bug report

From a project I'm working on, tried to make it as simple as possible.

/** @var array<string, array<mixed>> $state */
$state = (fn()=>[])();

$state = array_map(function (array $item): array {
	if (array_key_exists('type', $item) && array_key_exists('data', $item)) {
		return $item;
	}

	return [
		'type' => 'type',
		'data' => $item,
	];
}, $state);

This is giving an error during analysis:

Anonymous function should return non-empty-array but returns non-empty-array.

I don't think this should report this error, or at the very least the error should be more descriptive...

Dumping the type of the item that's being returned gives me non-empty-array&hasOffset('data')&hasOffset('type') so it might have something to do with non-empty-array not accepting non-empty-array&hasOffset?

Code snippet that reproduces the problem

https://phpstan.org/r/4010febf-b2ab-481c-9812-a4bdd33440b1

Expected output

No error

Did PHPStan help you today? Did it make you happy in any way?

I cannot imagine living without PHPStan anymore!