+ Drul_array<bool> broken;
+ Drul_array<Item *> bounds;
+ Direction d = LEFT;
+ do
+ {
+ bounds[d] = me->get_bound (d);
+ broken[d] = bounds[d]->break_status_dir () != CENTER;
+ }
+ while (flip (&d) != LEFT);
+
+ if (broken[LEFT]
+ && ly_c_equal_p (bounds[RIGHT]->get_column ()->get_property ("when"),
+ bounds[LEFT]->get_property ("when")))
+ {
+ me->suicide ();
+ }
+ return SCM_UNSPECIFIED;
+}
+
+
+MAKE_SCHEME_CALLBACK (Hairpin, print, 1);
+
+SCM
+Hairpin::print (SCM smob)
+{
+ Spanner *me = dynamic_cast<Spanner *> (unsmob_grob (smob));
+
+ SCM s = me->get_property ("grow-direction");
+ if (!is_direction (s))