protected function createValueOptions(NodeInterface $node, $allowSelectNodes = false, $isRoot=true)
    {
        $key    = $isRoot ? $node->getValue() : $node->getValueWithParents();
        $name   = $node->getName();

        if ($node->hasChildren()) {
            $leafOptions = [];

            if ($allowSelectNodes && !$isRoot) {
                $leafOptions[$key] = $name;
                $key = "$key-group";
            }

            foreach ($node->getChildren() as $child) {
                $leafOptions += $this->createValueOptions($child, $allowSelectNodes, false);
            }

            $value = [
                'label' => $name,
                'options' => $leafOptions
            ];
        } else {
            $value = $name;
        }

        return [$key => $value];
    }