anchor.diff:  (in-package #:vicon-parser)
  +
  +(defmacro with-retry-restart ((name format-string &rest format-args) &body body)
  +  (let ((stream (gensym "STREAM"))
  +        (tag (gensym "TAG"))
  +        (block (gensym "BLOCK")))
  +    `(block ,block
  +       (tagbody
  +          ,tag
  +          (restart-case
  +              (return-from ,block
  +                (progn ,@body))
  +            (,name ()
  +              :report (lambda (,stream)
  +                        (format ,stream ,format-string ,@format-args))
  +              (go ,tag)))))))
   
   (defun translate-name (name)
     (flet ((r (search replace data)
  
positive.code: (defun map-read-vicon-frames (stream vicon-file function)
    (loop for line = (read-clean-line stream)
          while line
          do (funcall function (parse-frame (cl-ppcre:split "," line) vicon-file))))
  
  (defun parse-vicon-file (pathname &key (external-format :default))
    (with-open-file (stream pathname :direction :input :external-format external-format)
  
negative.code:   (:method (point (name symbol) (frame frame))
      (setf (gethash name (points frame)) point)))
  
  (defmethod markers ((frame frame))
    (loop for marker being the hash-keys of (points frame)
          collect marker))
  
  