anchor.diff:  (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 do
  +         for sample across (profile-data profile) do
              (format s "------------------------~%")
              (loop
                 for thread across sample do
  
positive.code:                         (loop for (callee . count) across callees do
                               (format t "    ~D~10T~S~%" count callee))))))
               threads)))
  
negative.code:                             (setf profile-buffer (decode-profile-buffer (mezzano.supervisor:stop-profiling)
                                                                          (if prune #'call-with-profiling nil)
                                                                          ignore-functions))))))))
      (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.
  