+ {
+ SCM cell = scm_cons (symbol, new_value);
+ props_->alist_ = scm_cons (cell, props_->alist_);
+ return cell;
+ }
+ return SCM_EOL;
+}
+
+void
+Grob_property_info::matched_pop (SCM cell)
+{
+ if (!scm_is_pair (cell))
+ return;
+ if (!check ())
+ return;
+ SCM current_alist = props_->alist_;
+ SCM daddy = props_->based_on_;
+ for (SCM p = current_alist; !scm_is_eq (p, daddy); p = scm_cdr (p))
+ {
+ if (scm_is_eq (scm_car (p), cell))
+ {
+ if (scm_is_pair (scm_car (cell)))
+ props_->nested_--;
+ props_->alist_ = partial_list_copy (current_alist, p, scm_cdr (p));
+ return;
+ }
+ }
+ return;