+
+ Direction d = LEFT;
+ do {
+ ordered_rests[d].sort (Note_column::shift_compare);
+ } while (flip (&d) != LEFT);
+
+ do {
+ if (ordered_rests[d].size () < 1)
+ {
+ if (ordered_rests[-d].size() > 1)
+ ordered_rests[-d][0]->warning (_("Too many colliding rests."));
+
+ return SCM_UNSPECIFIED;
+ }
+ } while (flip (&d) != LEFT);
+
+ Grob *common = common_refpoint_of_array (ordered_rests[DOWN], me, Y_AXIS);
+ common = common_refpoint_of_array (ordered_rests[UP], common, Y_AXIS);
+
+ Real diff =
+ (ordered_rests[DOWN].top ()->extent (common, Y_AXIS)[UP]
+ - ordered_rests[UP].top ()->extent (common, Y_AXIS)[DOWN]) /staff_space;
+
+ if (diff > 0)