anchor.diff:  ;;;
   (in-package :clim-internals)
   
  +(defun valid-margin-spec-p (margins)
  +  (ignore-errors ; destructuring-bind may error; that yields invalid spec
  +    (destructuring-bind (&key left top right bottom) margins
  +      (flet ((margin-spec-p (m)
  +               (and (member (first m) '(:absolute :relative))
  +                    (not (null (second m))))))
  +        (every #'margin-spec-p (list left top right bottom))))))
  +
  +(deftype margin-spec ()
  +  `(satisfies valid-margin-spec-p))
  +
   (defclass standard-page-layout ()
     ((%page-region :reader stream-page-region :writer (setf %page-region))
  -   (margins :initarg :text-margins :accessor stream-text-margins))
  +   (margins :initarg :text-margins :accessor stream-text-margins :type margin-spec))
     (:default-initargs :text-margins '(:left   (:absolute 0)
                                        :top    (:absolute 0)
                                        :right  (:relative 0)
  
positive.code:     (thunk :bottom))
    (check-type new-margins margin-spec)
    (unless (equal new-margins old-margins)
      (slot-makunbound stream '%page-region)))
  
  (defgeneric invoke-with-temporary-page (stream continuation &key margins move-cursor)
    (:method ((stream standard-page-layout) continuation &key margins (move-cursor t))
  
negative.code:   (unless (region-equal sheet-region (sheet-region stream))
      (slot-makunbound stream '%page-region)))
  
  (defmethod (setf stream-text-margins) :around
      (new-margins (stream standard-page-layout)
       &aux (old-margins (stream-text-margins stream)))
    (macrolet ((thunk (edge)
  