private function rotate(ContextInterface $context, array $dependencies): array
    {
        if (empty($dependencies)) {
            return [];
        }

        $top = array_shift($dependencies);

        $variants = [];
        foreach ($top->getVariants() as $value) {
            $variant = $context->withDependency(new ValueDependency($top->getName(), $value));

            if (empty($dependencies)) {
                $variants[] = $variant;
                continue;
            }

            foreach ($this->rotate($variant, $dependencies) as $inner) {
                $variants[] = $inner;
            }
        }

        return $variants;
    }