anchor.diff:       (adotimes ((print-info-indentation info))
          (princ " " str))))
   
  -(defmacro %with-padding (str info &body body)
  +(defmacro %with-indentation (str info &body body)
     `(progn
        (%print-indentation ,str ,info)
        ,@body))
   
   (defmacro %with-brackets (str info &body body)
  -  `(%with-padding ,str, info
  +  `(%with-indentation ,str, info
        (princ "(" ,str)
        ,@body
        (princ ")" ,str)))
  
positive.code:   (princ x str))
  
  (defun %late-print (x str info)
    (%with-padding str info
      (pcase x
        cons?       (%print-cons x str info)
        symbol?     (%print-symbol x str info)
  
negative.code: 
  (defvar *print-automatic-newline?* t)
  (defvar *always-print-package-names?* nil)
  (defvar *printer-argument-definitions* (make-hash-table :test #'eq))
  
  (defun add-printer-argument-definition (name x)
    (= (href *printer-argument-definitions* name) x))
  
  (add-printer-argument-definition '%%block '(&body body))
  (add-printer-argument-definition 'progn   '(&body body))
  (add-printer-argument-definition 'tagbody '(&body body))
  (add-printer-argument-definition 'block   '(name &body body))
  (add-printer-argument-definition 'cond    '(&body body))
  ;(add-printer-argument-definition 'function ['(,@(? .._ '(name)) (args &body body))])
  
  (adolist *macros*
    (add-printer-argument-definition !. .!.))
  
  (defun get-printer-argument-definition (x)
    (!? (href *printer-argument-definitions* x.)
        (? (function? !)
           (funcall ! x)
           !)))
  
  (defstruct print-info
    (pretty-print?  t)
  