;ELC   
;;; Compiled
;;; in Emacs version 30.2.50
;;; with all optimizations.


#@31 Where the break buffer draws.#@2 #@170 How this buffer reaches the daemon.
One plist in, the reply plist out.  A variable so the renderers can be driven
from fixtures, and so `flan.el' is named in one place.
(byte-code "\300\301!\210\300\302!\210\303\304\305\306\307\310\311\312&\210\313\314\315\316\317DD\320\321\322%\207" [require seq subr-x custom-declare-group flan-cnr nil "The conditions and restarts buffer." :prefix "flan-cnr-" :group flan custom-declare-variable flan-cnr-buffer funcall function #[0 "\300\207" ["*flan-conditions*"] 1 (#$ . 120)] (#$ . 86) :type string] 8)
(defvar flan-cnr-request-function 'flan--request (#$ . 127))#@49 Why a section of this buffer is empty, by name.
(defconst flan-cnr-unavailable '((layout . "the daemon could not resolve this condition's name to a struct [the `layout' op answers out of `Tast.structs' and needs a *qualified* name. A package qualifies what it declares, so two packages' `Missing' are two names and neither is `Missing'; the daemon refuses a bare one and lists what it could have meant rather than picking. A name it cannot place at all is a program built from source this daemon did not compile]") (value . "the break loop is handed the condition as an opaque pointer, and `break_loop' currently discards it; nothing at run time can render a value whose type it does not know [needs an agent verb: `condition', to stash and hand back the pointer, and a daemon-built render thunk aimed at it]") (site . "a restart frame carries its name and the hash matching uses, and no location [needs a location in the restart frame, which the compiler must emit]") (params . "restart arguments are checked at run time against a frame that does not record its arity [needs a field in the restart frame]") (stack . "the program is running.  A backtrace is the game thread's frame chain and it is changing while it runs, so the daemon refuses to take one [not a missing feature: ask again once it has stopped]") (locals . "this frame has no named locals the daemon can read.  A slot the compiler invented is refused by name rather than shown as `s4', and a slot whose binding had not run when the error happened has no address yet [both are refusals with reasons, not gaps — the frame's own line says how many slots it has]") (globals . "no frame on this stack references a global [not a gap: the section is the *union of what the frames reach*, not a listing of everything the program has, so an empty one means the state this stack is working on is all in its locals]")) (#$ . 738))#@12 

(fn KEY)
(defalias 'flan-cnr--why #[257 "\211\236A\206 \301\207" [flan-cnr-unavailable "not implemented"] 3 (#$ . 2631)])#@529 Turn NAMES — innermost first — into what the buffer draws.
Each entry is (INDEX NAME SHADOWED-BY), where SHADOWED-BY is the index of the
earlier entry that owns the name, or nil.

This is §4's walk, computed here because it can be: `restart NAME' resolves
through `flan_find_restart', which returns the first frame whose hash matches,
so a name's second appearance is unreachable through the only verb there is.
Nothing new has to be asked of the program to know that — the order of the
list already says it.

(fn NAMES)#@13 

(fn NAME)
(defalias 'flan-cnr-annotate-restarts #[257 "\300C\301C\302\303\304#\"\207" [nil -1 mapcar make-closure #[257 "\300\211\242T\240\210\302\301\242\"A\211\204 \301\300\242B\301\242B\240\210\300\242E\207" [V0 V1 assoc] 5 (#$ . 3296)]] 8 (#$ . 2763)])#@44 The plist this buffer was last drawn from.
(defvar flan-cnr--state nil (#$ . 3568))#@49 Indices of the frames whose locals are showing.
(make-variable-buffer-local 'flan-cnr--state)
(defvar flan-cnr--open nil (#$ . 3657))
(make-variable-buffer-local 'flan-cnr--open)
(defalias 'flan-cnr--unavailable #[257 "\300\301\302!\303Q\304\305#\207" [propertize "  not available — " flan-cnr--why "\n" face font-lock-comment-face] 5 (#$ . 2631)])#@14 

(fn TITLE)
(defalias 'flan-cnr--section #[257 "\300\301\302\"\303\304#c\207" [propertize format "--- %s\n" face font-lock-comment-face] 5 (#$ . 4014)])#@316 The condition `(pause)' signals.
`lib/prelude.ml' writes it as an ordinary struct under a `restart-case', so
nothing in the compiler knows a breakpoint from an error and this buffer is the
first place that can tell the difference.  Named here rather than spelled at
its use, because it is a fact about the prelude.
(defconst flan-cnr-breakpoint "Pause" (#$ . 4175))#@14 

(fn STATE)#@10 

(fn F)
(defalias 'flan-cnr--insert-condition #[257 "\301\302\"\206 \303\211\232\304\305\203 \306\202 \307#c\210\304\203# \310\202$ \311\305\312#c\266\313c\210\314\315!\210\301\316\"\211\204B \317\320!c\266\202\247 \321\322\323\324\325\"#\321\322\323\324\326\"#\211\203\245 \211@`@A@\206d \327\3308\331\332\333GZ\334\"\304\305\335#\333\fGZ\334\"%c\210\211\206\222 \304\336\337\340!P\305\341#\313\261\210\342`\343\344\345\346F#\266A\202T \266\313c\207" [flan-cnr-breakpoint plist-get :condition "a condition" propertize face warning error "  — a breakpoint; stopped where (pause) was called, nothing unwound\n" "  — unhandled; stopped on the frame that erred, nothing unwound\n" shadow "\n" flan-cnr--section "Condition fields:" :fields flan-cnr--unavailable layout apply max 4 mapcar #[257 "\211@G\207" [] 2 (#$ . 4564)] #[257 "\211A@\206 \300G\207" [""] 2 (#$ . 4564)] "?" 2 format "  :%s%s  %s%s  " make-string 32 font-lock-type-face "value not available — " flan-cnr--why value font-lock-comment-face add-text-properties flan-cnr-inspect nil mouse-face highlight] 18 (#$ . 4546)])#@10 

(fn R)
(defalias 'flan-cnr--insert-restarts #[257 "\300\301!\210\302\303\"\304!\211\204 \305\306\307\310#c\210\202\236 \311\312\313\314\315\"#\211\203\234 \211@\211@A@\3168`\317\320\203< \321\202= \322\305\307\203J \323\202K \324#\203U \321\202V \325%c\210\326GZ\327\"c\210\203t \305\317\330\"\307\310#c\210\202} \305\331\332!\307\323#c\210\333c\210\334`\335?\205\213 \336\337\340\341\257#\266A\202\" \266`\317\342G\305\343\307\344##c\210\305\345\307\323#c\210\334`\346\347\340\341F#\266\333c\207" [flan-cnr--section "Restarts (innermost first) — RET or a digit takes one:" plist-get :restarts flan-cnr-annotate-restarts propertize "  none are active. Nothing between the error and the top offered one; abort, or fix a body and reload\n" face font-lock-comment-face apply max 4 mapcar #[257 "\211A@G\207" [] 2 (#$ . 5693)] 2 format " %2d: %s%s%s  " " " "[" shadow font-lock-keyword-face "]" make-string 32 "shadowed by %d — `restart' resolves a name to the innermost frame offering it, so this one cannot be taken by name [needs an agent verb: `restart-at INDEX']" flan-cnr--why site "\n" add-text-properties flan-cnr-restart flan-cnr-shadowed flan-cnr-index mouse-face highlight " %2d: [%s]  " "abort" error "let the program die where it stopped; this ends `flan dev' too\n" flan-cnr-abort t] 21 (#$ . 4546)])
(defalias 'flan-cnr--insert-stack #[257 "\301\302!\210\303\304\"\211\204 \305\306!c\266\202\363 \307\211\203\361 \211@T\262`>\310\311\2031 \312\2022 \313\314\303\315\"\206< \316\317\320#\303\321\"\203V \314\310\322\303\321\"\"\317\323#\202W \324%c\210\325`\326\327\330F#\266>\203\354 \303\331\"\303\332\"\211\203\242 \211@\310\333@\211\324\230\262\203\212 \324\202\223 \314\310\334@\"\317\323#\314A@\317\323##c\266A\202t \210\211\204\267 \303\332\"\204\353 \305\335!c\266\202\355 \211\211\203\352 \211@`\310\336\314A@\317\337#@\3408$c\210\325`\341\342\3438@F\327\330F#\266A\202\270 \210\210\210A\202 \266\344c\207" [flan-cnr--open flan-cnr--section "Stack (innermost first) — TAB folds a frame's locals:" plist-get :stack flan-cnr--unavailable stack -1 format " %2d: %s %s%s\n" "v" ">" propertize :fn "?" face font-lock-function-name-face :loc "   %s" shadow "" add-text-properties flan-cnr-frame mouse-face highlight :locals :refused "        %s%s\n" "%s: " locals "        %s %s = %s\n" font-lock-type-face 2 flan-cnr-inspect :slot 3 "\n"] 18 (#$ . 4546)])#@830 Draw the globals the stopped stack reaches.

One section rather than a fold under each frame, and that is the design rather
than a layout choice.  A global is not part of a frame — it is program state
the frame happened to touch — so nesting it under one implies an ownership that
is not there, and repeats the name once per frame that reads it.

What recovers the useful half of per-frame nesting is the annotation: each
entry says which frames touch it, by the same index the stack section numbers
them with.  "the whole chain is reading this" and "only the innermost is"
are different facts and they read differently here.

The order is the daemon's, and it is by the innermost frame that touches each
one: a deep stack makes the union large, and proximity to the error is what
puts the likely culprit on top.

(fn STATE)#@10 

(fn G)
(defalias 'flan-cnr--insert-globals #[257 "\300\301!\210\302\303\"\302\304\"\302\305\"\204% \204% \211\204% \306\307!c\266\202\344 \310\311\312\313\314\"#\211\203\212 \211@`\3158\316\317@\320@GZ\321\"\322A@\323\324#\3258%c\210\322\204_ \326\202r \316\327A\203j \330\202k \331\332\333\334##\323\335#c\210\336`\337\340@D\341\342F#\266A\202/ \266\211\203\273 \211@\316\343@\211\344\230\262\203\243 \344\202\254 \322\316\345@\"\323\335#\322A@\323\335##c\266A\202\215 \210\211\203\342 \322\346\323\347#c\210\211\211\203\341 \211@\322\316\350@A@#\323\335#c\266A\202\310 \210\266\351c\207" [flan-cnr--section "Globals this stack reaches — innermost frame first:" plist-get :globals :globals-refused :globals-skipped flan-cnr--unavailable globals apply max 1 mapcar #[257 "\211@G\207" [] 2 (#$ . 8991)] 3 format "  %s%s  %s = %s" make-string 32 propertize face font-lock-type-face 2 "   (no frame recorded)\n" "   %s %s\n" "frames" "frame" mapconcat number-to-string ", " shadow add-text-properties flan-cnr-inspect :expr mouse-face highlight "  %s%s\n" "" "%s: " "  the union is incomplete; these frames could not be attributed:\n" font-lock-warning-face "    %s — %s\n" "\n"] 17 (#$ . 8157)])#@59 Draw STATE, a plist, into the current buffer.

(fn STATE)
(defalias 'flan-cnr--render #[257 "\302\303 \210\211\304!\210\305!\210\306!\210\307!\210\310\311\312\313#c\210eb)\207" [inhibit-read-only flan-cnr--state t erase-buffer flan-cnr--insert-condition flan-cnr--insert-restarts flan-cnr--insert-stack flan-cnr--insert-globals propertize "RET/0-9 take  a abort  TAB fold a frame  i inspect  g refresh  q quit\n" face shadow] 5 (#$ . 10234)])
(defalias 'flan-cnr--refuse-shadowed #[0 "\300\301\302`\303\"\302`\304\"#\207" [user-error "flan: restart %d is shadowed by %d; `restart' takes a name, and this name reaches the inner frame. Taking this one needs an index verb the daemon does not have" get-text-property flan-cnr-index flan-cnr-shadowed] 6])#@32 Take the restart on this line.
(defalias 'flan-cnr-take #[0 "\300`\301\"\203\n \301 \207\300`\302\"\203 \303 \207\300`\304\"\203\" \305\300`\304\"!\207\300`\306\"\203, \307 \207\310\311!\207" [get-text-property flan-cnr-abort flan-cnr-shadowed flan-cnr--refuse-shadowed flan-cnr-restart flan-cnr--invoke flan-cnr-frame flan-cnr-toggle-frame user-error "flan: nothing to take on this line"] 4 (#$ . 10997) nil])
(defalias 'flan-cnr--invoke #[257 "\301\302\303F!\304\305\"\306\232\203  \307\310\304\311\"\206 \312#\210\313 \207\314\315\304\316\"\206* \317\"\207" [flan-cnr-request-function :op "restart" :name plist-get :status "ok" message "flan: %s — %s" :note "accepted" quit-window user-error "flan: %s" :message "refused"] 8 (#$ . 3296)])#@57 Take restart number N, as SBCL's debugger does.

(fn N)
(defalias 'flan-cnr-take-number #[257 "\212eb\210\301\211\2040 m\2040 \302`\303\"\232\203& \302`\304\"\204$ \302`\305\"\203& \210\306\211\204 \307y\210\202 \211\203; \310 \262\202S \311\312\"GU\203M \313 \266\202\202S \314\315\"\266\202)\207" [flan-cnr--state nil get-text-property flan-cnr-index flan-cnr-restart flan-cnr-shadowed t 1 flan-cnr-take plist-get :restarts flan-cnr-abort user-error "flan: there is no restart %d"] 6 (#$ . 11754) (byte-code "\301ZC\207" [last-command-event 48] 2)])#@47 Let the stopped program die where it stopped.
(defalias 'flan-cnr-abort #[0 "\301!\302\303\"\304\232\203 \305\306\302\307\"\206 \310\"\210\311 \207\312\306\302\313\"\206% \314\"\207" [flan-cnr-request-function (:op "abort") plist-get :status "ok" message "flan: %s" :note "aborted" quit-window user-error :message "refused"] 6 (#$ . 12320) nil])#@35 Show or hide this frame's locals.
(defalias 'flan-cnr-toggle-frame #[0 "\303`\304\"\211\204\f \305\306!\210\211>\203 \307\"\202 \211B\211>\203X \310	!\203X \211\311\n\312\"8\211\203W \311\313\"\204W \314!\311\n\312\"\233\315\211\211\316@#\317A@#\313\320#\240\266\210\321 \322\n!\210eb\210\211Sy\207" [flan-cnr--open flan-cnr-request-function flan-cnr--state get-text-property flan-cnr-frame user-error "flan: point is not on a frame" delq functionp plist-get :stack :fetched flan-cnr-locals plist-put :locals :refused t line-number-at-pos flan-cnr--render] 10 (#$ . 12677) nil])#@590 Open the inspector on the thing at point.

A local and a global reach it by different roots, and that is the fix rather
than an inconsistency.  A global is reached by *name*: the loaded thunk binds
to the program's own storage through the dynamic linker, so its name is an
expression that means the same thing wherever it is evaluated.  A local is
not — it is storage in one frame, and its name evaluated anywhere else may
find a global, another binding of the same name, or nothing.  So a local goes
in by frame and slot index, which is what the listing above it is already
drawn from.
(defalias 'flan-cnr-inspect #[0 "\300`\301\"\211\204 \302\300`\303\"\203 \304\202 \305!\210\306\307!\210\211:\203 \211\242\211\310\267\202{ \243\211:\203\\ \211\242\243\211:\203X \211\242\243\211:\203T \211\242\243\211\204P \311#\207\302\312!\207\302\312!\207\302\312!\207\302\312!\207\243\211:\203w \211\242\243\211\204s \307!\207\302\312!\207\302\312!\207\302\312!\207\302\312!\207" [get-text-property flan-cnr-inspect user-error flan-cnr-frame "flan: this is the frame's own line; TAB opens it, then i on a local" "flan: point is not on a local or a global — TAB opens a frame, i inspects a local in it or a global below" require flan-inspect #s(hash-table test eq purecopy t data (:slot 40 :expr 96)) flan-inspect-slot "flan: this line carries no root the inspector knows"] 13 (#$ . 13278) nil])#@44 Ask the program again what it is offering.
(defalias 'flan-cnr-refresh #[0 "\300 \207" [flan-cnr-show] 1 (#$ . 14689) nil])#@44 Move to the next line that does something.
(defalias 'flan-cnr-next #[0 "`\300y\210m\204 \301`!\204 \300y\210\202 m\205 \211b\207" [1 flan-cnr--actionable-p] 3 (#$ . 14818) nil])#@48 Move to the previous line that does something.
(defalias 'flan-cnr-previous #[0 "`\300y\210o\204 \301`!\204 \300y\210\202 \301`!?\205 \211b\207" [-1 flan-cnr--actionable-p] 3 (#$ . 15006) nil])#@12 

(fn POS)
(defalias 'flan-cnr--actionable-p #[257 "\300\301\"\206  \300\302\"\206  \300\303\"\206  \300\304\"\206  \300\305\"\207" [get-text-property flan-cnr-restart flan-cnr-shadowed flan-cnr-abort flan-cnr-frame flan-cnr-inspect] 4 (#$ . 15209)])#@328 Fold this frame, or move to the next actionable line.

TAB does two things because the buffer has two kinds of line and the section
header already promised the first one: on a frame, it opens or closes that
frame's locals; anywhere else, it moves. `f' still folds unconditionally, for
anyone who would rather TAB always moved.
(defalias 'flan-cnr-tab #[0 "\300`\301\"\203\n \302 \207\303 \207" [get-text-property flan-cnr-frame flan-cnr-toggle-frame flan-cnr-next] 3 (#$ . 15471) nil])#@26 Keys in `flan-cnr-mode'.
(defvar flan-cnr-mode-map (byte-code "\300 \301\302\303#\210\301\304\303#\210\301\305\306#\210\301\307\310#\210\301\311\312#\210\301\313\310#\210\301\314\315#\210\301\316\317#\210\301\320\321#\210\301\322\323#\210\301\324\325#\210\326\211\327W\203Y \301\330\331!!\332#\210T\202E \210\207" [make-sparse-keymap define-key "" flan-cnr-take [mouse-1] "	" flan-cnr-tab [backtab] flan-cnr-previous "n" flan-cnr-next "p" "f" flan-cnr-toggle-frame "i" flan-cnr-inspect "a" flan-cnr-abort "g" flan-cnr-refresh "q" quit-window 0 10 kbd number-to-string flan-cnr-take-number] 7) (#$ . 15962))
(defvar flan-cnr-mode-hook nil)
(byte-code "\300\301N\204\f \302\300\301\303#\210\304\305!\204 \302\305\306\307#\210\300\207" [flan-cnr-mode-hook variable-documentation put "Hook run after entering `flan-cnr-mode'.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp flan-cnr-mode-map definition-name flan-cnr-mode] 4)
(defvar flan-cnr-mode-map (make-sparse-keymap))#@239 What a stopped Flan program is offering.

In addition to any hooks its parent mode `special-mode' might have
run, this mode runs the hook `flan-cnr-mode-hook', as the final or
penultimate step during initialization.

\{flan-cnr-mode-map}
(byte-code "\301\302N\204 \303\301\302\304\305!#\210\306\307!\204* \303\307\310\311#\210\312\307\306\307!\203& \313\202( \314 \"\210\307\302N\2048 \303\307\302\304\315!#\210\306\300!\204X \303\300\310\311#\210\312\300\306\300!\203P \313\202V \316\300\313\"\210\"\210\300\302N\204f \303\300\302\304\317!#\210\320\321!\203t \321\311\322\"\210\202z \303\311\323\322#\210\313\207" [flan-cnr-mode-abbrev-table flan-cnr-mode-map variable-documentation put purecopy "Keymap for `flan-cnr-mode'." boundp flan-cnr-mode-syntax-table definition-name flan-cnr-mode defvar-1 nil make-syntax-table "Syntax table for `flan-cnr-mode'." define-abbrev-table "Abbrev table for `flan-cnr-mode'." fboundp derived-mode-set-parent special-mode derived-mode-parent] 5)
(defalias 'flan-cnr-mode #[0 "\306\300!\210\307\310 \210\311\312\310\313N\203 \314\311\313\310\313N#\210\315!\204' \316\317 \"\210\320\f!\211\2035 \211\321 =\203; \322\f\323 \"\210\210\324\325\"\204R =\204R \326\325C#\210\327!\210\330\f!\210\307)\331\332!\207" [delay-mode-hooks major-mode mode-name flan-cnr-mode-map flan-cnr-mode-syntax-table flan-cnr-mode-abbrev-table make-local-variable t special-mode flan-cnr-mode "flan-break" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table run-mode-hooks flan-cnr-mode-hook local-abbrev-table buffer-read-only] 5 (#$ . 17040) nil])#@654 The buffer's state, out of a `break' REPLY.
FIELDS is the condition's layout, if it was asked for and answered — a list of
(NAME TYPE VALUE), where VALUE is nil because no running program was consulted
to get it.

GLOBALS is what `flan-cnr-globals' returned, or nil.

Everything this cannot fill in is left nil deliberately: the renderer draws a
section saying why rather than leaving one out, and a section that is absent
cannot be told from one that is empty.

Takes the layout rather than fetching it, so this stays a function from data to
data and the fixture-driven tests can drive it without a socket.

(fn REPLY &optional FIELDS STACK GLOBALS)
(defalias 'flan-cnr-state-from-reply #[1025 "\300\301\300\"\302\301\302\"\303\304\305\306\307@\310A@\311\3128\257\207" [:condition plist-get :restarts :fields :stack :locals nil :globals :globals-refused :globals-skipped 2] 21 (#$ . 18790)])#@751 The fields of TYPE, as the renderer wants them, or nil.
`layout' is answered out of the daemon's own `Tast.structs' — it owns the
build — so this costs no round trip to the program and works while it is
stopped, which is the only moment this buffer exists in.

TYPE is the string `break' reported as `:condition', and that string is the
qualified struct name the compiler put into the error: `Emit' takes it from
`Types.Named', the agent holds it in `condition_name', and the daemon looks it
up by the same name. So it resolves without anything here knowing what package
it came from.

A refusal is not an error here: nil means the layout section draws the reason
it is empty, which is the degradation the buffer is already built for.

(fn TYPE)
(defalias 'flan-cnr-layout #[257 "\211\205' \211\211\301\230\262?\205' \302\303\304F!\305\306\"\307\232\205% \310\311\305\312\"\"\262\207" [flan-cnr-request-function "" :op "layout" :type plist-get :status "ok" mapcar #[257 "\211@A@\300E\207" [nil] 4 (#$ . 4564)] :fields] 7 (#$ . 19705)])#@915 The stopped program's frames, innermost first, as the renderer wants them.

Unlike `flan-cnr-layout', this *does* reach the program: the frame chain is the
shadow stack the dev build pushes, and only the stopped thread can read it.  It
is taken from a snapshot made when the break was entered, for the same reason
the restart list is — a stack that is still moving cannot be numbered.

Frames are marked `program' or `eval'.  An `eval' frame belongs to an
expression evaluated *inside* the break loop, sitting on top of the frames that
were there when it stopped; it is shown rather than hidden, because "why is
there a frame I did not write" is a fair question and silence is the wrong
answer to it.

Locals are left nil here and fetched per frame when one is opened.  A stopped
program has as many sets of locals as it has frames, and rendering all of them
to draw one is the backtrace problem one level down.
(defalias 'flan-cnr-backtrace #[0 "\301!\302\303\"\304\232\205 \305\306\302\307\"\"\207" [flan-cnr-request-function (:op "backtrace") plist-get :status "ok" mapcar #[257 "\300@\301A@\302\3038\304\3058\306\307\310\307\257\f\207" [:fn :loc :kind 2 :nslots 3 :locals nil :fetched] 13 (#$ . 4564)] :frames] 6 (#$ . 20758)])#@589 What FRAME's named locals hold, as (NAME TYPE VALUE) rows.

Returns two values in one list: the rows, and the refusals — a slot the daemon
declined to show, with the reason.  The refusals are shown, not dropped: a
local that is missing because the compiler invented it and a local that is
missing because this is broken look identical if only one of them is drawn.

Nothing is copied out of the program.  The daemon compiles a thunk that renders
the types it already knows at the addresses the program hands back, which is
why this works at all while the thread is stopped.

(fn FRAME)
(defalias 'flan-cnr-locals #[257 "\301\302\303F!\304\305\"\306\232\203 \304\307\"\304\310\"D\207\311\312\304\313\"\206$ \314DCD\207" [flan-cnr-request-function :op "locals" :frame plist-get :status "ok" :locals :refused nil "" :message "refused"] 7 (#$ . 22008)])#@1025 The globals the stopped stack reaches: (ENTRIES REFUSED SKIPPED).

ENTRIES are (NAME TYPE VALUE FRAMES) rows, ordered by the innermost frame that
touches each one, with FRAMES the indices of every frame that does.

Unlike the locals, this is fetched once for the whole buffer rather than per
frame when one is opened, and that follows from what it is: a section scoped to
the stack has one answer, and asking per frame would be asking the same
question as many times as there are frames and then unioning the results here.

REFUSED is a global the structural printer had no arm for, by name and with the
reason.  SKIPPED is a *frame* the daemon could not attribute — an expression's
own frame, a lifted handler clause, or a body redefined since it was entered —
which matters because it means the union is smaller than the real one.  Both
are drawn rather than dropped, for the reason the whole buffer is built on: a
list that is missing something and a list that is complete look identical if
nothing says which it is.
(defalias 'flan-cnr-globals #[0 "\301!\302\303\"\304\232\205 \302\305\"\302\306\"\302\307\"E\207" [flan-cnr-request-function (:op "globals") plist-get :status "ok" :globals :refused :skipped] 6 (#$ . 22874)])#@162 Show what the stopped program is offering, in a buffer.
Refuses while the program is running, by name: there is no restart stack to
walk from a running program.
(defalias 'flan-cnr-show #[0 "\302!\303\304\"\305\232\204 \306\307\303\310\"\206 \311\"\210\303\312\"\204# \306\313!\210\314	!r\211q\210\315\316!\2043 \316 \210\317\320\321\303\322\"!\323 \324 $!)\210\325!\210\207" [flan-cnr-request-function flan-cnr-buffer (:op "break") plist-get :status "ok" user-error "flan: %s" :message "refused" :stopped "flan: the program is running; there is no restart stack to walk" get-buffer-create derived-mode-p flan-cnr-mode flan-cnr--render flan-cnr-state-from-reply flan-cnr-layout :condition flan-cnr-backtrace flan-cnr-globals pop-to-buffer] 9 (#$ . 24119) nil])
(provide 'flan-cnr)
