public function compute(Identity $identity, MapInterface $target): MapInterface
    {
        if (
            (string) $target->keyType() !== 'string' ||
            (string) $target->valueType() !== 'mixed'
        ) {
            throw new \TypeError('Argument 2 must be of type MapInterface<string, mixed>');
        }

        if (!$this->sources->contains($identity)) {
            return $target;
        }

        $source = $this->sources->get($identity);

        return $this->diff($source, $target);
    }