+ if (Staff_symbol::has_interface (me))
+ return me;
+
+ SCM st = me->get_object ("staff-symbol");
+ return unsmob_grob (st);
+}
+
+Real
+Staff_symbol_referencer::staff_space (Grob *me)
+{
+ Grob *st = get_staff_symbol (me);
+ if (st)
+ return Staff_symbol::staff_space (st);
+ return 1.0;
+}
+
+Real
+Staff_symbol_referencer::line_thickness (Grob *me)
+{
+ Grob *st = get_staff_symbol (me);
+ if (st)
+ return Staff_symbol::get_line_thickness (st);
+ return me->layout ()->get_dimension (ly_symbol2scm ("line-thickness"));
+}
+
+Real
+Staff_symbol_referencer::get_position (Grob *me)
+{
+ Real p = 0.0;
+ Grob *st = get_staff_symbol (me);
+ Grob *c = st ? me->common_refpoint (st, Y_AXIS) : 0;
+ if (st && c)