anchor.diff:                              (setf profile-buffer (decode-profile-buffer (mezzano.supervisor:stop-profiling)
                                                                           (if prune #'call-with-profiling nil)
                                                                           ignore-functions))))))))
  -    (cond (path
  -           (save-profile path profile-buffer :verbosity verbosity :order-by order-by)
  -           (values-list results))
  -          (t profile-buffer))))
  +    (let ((data (make-instance 'profile-data :data profile-buffer)))
  +      (cond (path
  +             (save-profile path data :verbosity verbosity :order-by order-by)
  +             (values-list results))
  +            (t
  +             data)))))
   
   (defun decode-profile-buffer (buffer &optional prune-function ignore-functions)
     "Convert the buffer returned by STOP-PROFILING into a more useful format.
  
positive.code:     sys.int::%%closure-trampoline
      sys.int::%%funcallable-instance-trampoline))
  
  (defstruct thread-sample
    thread
    state
  
negative.code: (defun save-profile (path profile &key (verbosity :report) order-by)
    "Convert a profile into an almost human-readable format."
    (with-open-file (s path :direction :output :if-exists :new-version :if-does-not-exist :create)
      (when (eql verbosity :flame-graph)
        (generate-flame-graph profile s)
        (return-from save-profile))
      (format s "Version ~A~%" (lisp-implementation-version))
      (when (member verbosity '(:report :full))
        (let ((*standard-output* s))
          (generate-report profile order-by))
      (when (eql verbosity :full)
        (loop
           for sample across (profile-data profile) do
             (format s "------------------------~%")
             (loop
                for thread across sample do
  