/**
     * {@inheritDoc}
     */
    public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder();
        $rootNode = $treeBuilder->root('stash');

        $rootNode
            ->beforeNormalization()
                ->ifTrue(function ($v) { return is_array($v) && !array_key_exists('default_cache', $v) && array_key_exists('caches', $v); })
                ->then(function ($v) {
                    return Configuration::normalizeDefaultCacheConfig($v);
                })
            ->end()
            ->beforeNormalization()
                ->ifTrue(function ($v) { return is_array($v) && !array_key_exists('caches', $v) && !array_key_exists('cache', $v); })
                ->then(function ($v) {
                    return Configuration::normalizeCacheConfig($v);
                })
            ->end()
            ->children()
                ->scalarNode('default_cache')->end()
                ->booleanNode('tracking')->end()
            ->end()
            ->fixXmlConfig('cache')
            ->append($this->getCachesNode())
        ;

        return $treeBuilder;
    }
 public function testNormalizeDefaultCacheConfig()
 {
     $testData = array('caches' => array('Cache1' => 'TheCacheSettings', 'Cache2' => 'teTheCacheSettingsst', 'Cache3' => 'teTheCacheSettingsst'));
     $returnedData = Configuration::normalizeDefaultCacheConfig($testData);
     $this->assertInternalType('array', $returnedData, 'Returns array.');
     $this->assertArrayHasKey('default_cache', $returnedData, 'Normalization adds default_cache');
     $this->assertEquals('Cache1', $returnedData['default_cache'], 'Normalization sets first cache to default.');
 }