code: public function build(array $config)
      {
          /** @var AbstractVariation[] $variations */
          $variations = [];
  
          foreach ($config as $name => $variation) {
              $variations[$name] = $this->factory->createNew($name, $variation);
          }
  
          return new ContainerVariation($this->buildTree($variations));
      }
docs: @param array $config
  
  @return VariationInterface
  
  @throws Exception\CircularDependencyException
  @throws \InvalidArgumentException