private function getResourcesSection()
    {
        $builder = new TreeBuilder();
        $node = $builder->root('resources');

        $node
            ->useAttributeAsKey('prefix')
            ->prototype('array')
                ->useAttributeAsKey('name')
                ->prototype('array')
                    ->children()
                        ->variableNode('templates')->end() // TODO normalization ?
                        ->scalarNode('entity')->isRequired()->cannotBeEmpty()->end()
                        ->scalarNode('controller')->end()
                        ->scalarNode('repository')->end()
                        ->scalarNode('operator')->end()
                        ->scalarNode('event')->end()
                        ->scalarNode('form')->isRequired()->cannotBeEmpty()->end()
                        ->scalarNode('table')->isRequired()->cannotBeEmpty()->end()
                        ->scalarNode('parent')->end()
                        ->arrayNode('translation')
                            ->children()
                                ->scalarNode('entity')->end()
                                ->scalarNode('repository')->end()
                                ->arrayNode('fields')
                                    ->prototype('scalar')->end()
                                    ->defaultValue([])
                                ->end()
                            ->end()
                        ->end()
                    ->end()
                ->end()
            ->end()
        ;

        return $node;
    }