+Bracket_nesting_group::add_support (Grob *g)
+{
+ Side_position_interface::add_support (g, delimiter_);
+ for (vsize i = 0; i < children_.size (); i++)
+ children_[i]->add_support (g);
+}
+
+Bracket_nesting_group::~Bracket_nesting_group ()
+{
+ junk_pointers (children_);
+}
+
+void
+Bracket_nesting_group::set_bound (Direction d, Grob *g)
+{
+ delimiter_->set_bound (d, g);
+ for (vsize i = 0; i < children_.size (); i++)
+ children_[i]->set_bound (d, g);
+}
+
+void
+Bracket_nesting_group::set_nesting_support (Grob *parent)
+{
+ if (parent)
+ Side_position_interface::add_support (delimiter_, parent);
+
+ for (vsize i = 0; i < children_.size (); i++)
+ children_[i]->set_nesting_support (delimiter_);
+}
+
+void
+Bracket_nesting_group::from_list (SCM x)
+{
+ for (SCM s = x; scm_is_pair (s); s = scm_cdr (s))
+ {
+ SCM entry = scm_car (s);
+ if (scm_is_pair (entry))
+ {
+ Bracket_nesting_group *node = new Bracket_nesting_group;
+ node->from_list (entry);
+ children_.push_back (node);
+ }
+ else if (entry == ly_symbol2scm ("SystemStartBrace")
+ || entry == ly_symbol2scm ("SystemStartBracket")
+ || entry == ly_symbol2scm ("SystemStartBar")
+ || entry == ly_symbol2scm ("SystemStartSquare"))
+ symbol_ = entry;
+ else
+ children_.push_back (new Bracket_nesting_staff (0));
+ }
+}
+
+bool
+Bracket_nesting_group::add_staff (Grob *grob)