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

        $this->sources = $this->sources->put($identity, $source);

        return $this;
    }