anchor.diff:  
   Creates an implicit block named NIL, so (return ...) can be used
   to exit early from the loop with an explicit return value."
  -  (with-gensyms (vec var)
  -    `(let1 ,vec (simple-tvector-vec ,tvec)
  -       (loop for ,var across ,vec
  -          for ,element = ($ ,var) do
  -            (progn ,@body)))))
  +  (with-gensym var
  +    `(loop for ,var across ,tvec
  +        for ,element = ($ ,var) do
  +          (progn ,@body))))
   
   
  -(defprint-object (tvec simple-tvector :identity nil)
  -  (let1 vec (simple-tvector-vec tvec)
  -    (dotimes (i (length vec))
  -      (unless (zerop i)
  -        (write-string " "))
  -      (let1 var (svref vec i)
  -        (multiple-value-bind (value present?) (peek-$ var)
  -          (if present?
  -              (format t "~A" value)
  -              (write-string "unbound")))))))
  +;; simple-tvector is a deftype, not a class or struct:
  +;; cannot specialize methods on it
  +#|
  + (defprint-object (tvec simple-tvector :identity nil)
  +  (dotimes (i (length tvec))
  +    (unless (zerop i)
  +      (write-string " "))
  +    (let1 var (svref tvec i)
  +      (multiple-value-bind (value present?) (peek-$ var)
  +        (if present?
  +            (format t "~A" value)
  +            (write-string "unbound"))))))
  +|#
positive.code: Works both inside and outside transactions"
    (declare (type simple-tvector tvec)
             (type fixnum index))
    ($ (svref (simple-tvector-vec tvec) index)))
  
  (defun (setf tsvref) (value tvec index)
    "Set the INDEX-th element of simple-tvector TVEC to VALUE.
  Works both inside and outside transactions"
    (declare (type simple-tvector tvec)
             (type fixnum index))
    (setf ($ (svref (simple-tvector-vec tvec) index)) value))
  
  
  (defun tsvref-tx (tvec index)
  
negative.code:   (declare (type fixnum length)
             (type list initial-contents)
             (ignore element-type))
    (let1 tvec (make-array length :element-type 'tvar :initial-element +dummy-tvar+)
      (if initial-contents
          (loop for i from 0 to (1- length)
             for cell = initial-contents then (rest cell)
             for element = (first cell) do
               (setf (svref tvec i) (tvar element)))
          (dotimes (i length)
            (setf (svref tvec i) (tvar initial-element))))
      tvec))
  
  (declaim (inline simple-tvector-length))
  (defun simple-tvector-length (tvec)
    "Return the length of simple-tvector TVEC."
    (declare (type simple-tvector tvec))
    (length tvec))
  
  
  (declaim (inline tsvref (setf tsvref) tsvref-x (setf tsvref-tx) tsvref-notx (setf tsvref-notx)))
  