anchor.diff:    (dy int))
   
   (defbinding region-intersect (source1 source2) nil
  -  (source1 region)
  +  ((ensure-region source1) region :return)
     ((ensure-region source2) region))
   
   (defbinding region-union (source1 source2) nil
  -  (source1 region)
  +  ((ensure-region source1) region :return)
     ((ensure-region source2) region))
   
   (defbinding region-subtract (source1 source2) nil
  -  (source1 region)
  +  ((ensure-region source1) region :return)
     ((ensure-region source2) region))
   
   (defbinding region-xor (source1 source2) nil
  -  (source1 region)
  +  ((ensure-region source1) region :return)
     ((ensure-region source2) region))
   
   
  
positive.code:   "Obtains the area covered by the region as a list of rectangles."
    (multiple-value-bind (location length) (%region-get-rectangles region)
      (prog1
  	(map-c-vector 'list #'identity location 'point length :get)
        (deallocate-memory location))))
  
  (defbinding region-empty-p () boolean
  
negative.code:   (dx int)
    (dy int))
  
  #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.8.0")
  (defbinding window-move-region (window region dx dy) nil
    (window window)
    ((ensure-region region) region)
    (dx int)
    (dy int))
  
  (defbinding window-reparent () nil
    (window window)
    (new-parent window)
  