public static function appendNamespaces (string $description)
    {
        $treeBuilder = new TreeBuilder("namespaces");
        $node = \method_exists($treeBuilder, "getRootNode")
            ? $treeBuilder->getRootNode()
            : $treeBuilder->root("namespaces");

        $node
            ->scalarPrototype()->end()
            ->validate()
            ->ifTrue(
                function (array $paths)
                {
                    foreach ($paths as $namespace => $path)
                    {
                        if (1 !== \preg_match('~^' . Asset::NAMESPACE_REGEX . '$~', $namespace))
                        {
                            return true;
                        }
                    }

                    return false;
                }
            )
            ->thenInvalid("The namespaces must start with a-z and can only contain a-z and 0-9.")
            ->end()
            ->validate()
            ->ifTrue(
                function (array $paths)
                {
                    foreach ($paths as $path)
                    {
                        if (!\is_string($path))
                        {
                            return true;
                        }

                        if (false !== \strpos($path, "..."))
                        {
                            return true;
                        }
                    }

                    return false;
                }
            )
            ->thenInvalid("The namespaces can't be outside of the project root (and can't use '..' in their paths).")
            ->end()
            ->info($description)
            ->defaultValue([]);

        return $node;
    }