public function merge(ConfigurationInterface $configuration): ConfigurationInterface
    {
        foreach ($configuration as $key => $value) {
            if (isset($this->data[$key]) 
                && $value instanceof ConfigurationInterface 
                && $this->data[$key] instanceof ConfigurationInterface
            ) {
                $configuration = $this->data[$key];
                $configuration->merge($value);

                $value = $configuration;
            }

            $this->set($key, $value);
        }

        return $this;
    }
public function merge(ConfigurationInterface $configuration): ConfigurationInterface
    {
        foreach ($configuration as $key => $value) {
            if (isset($this->data[$key]) 
                && $value instanceof ConfigurationInterface 
                && $this->data[$key] instanceof ConfigurationInterface
            ) {
                $configuration = $this->data[$key];
                $configuration->merge($value);

                $value = $configuration;
            }

            $this->set($key, $value);
        }

        return $this;
    }
{@inheritdoc}