;ELC
;;; Compiled
;;; in Emacs version 26.1
;;; with all optimizations.
;;; This file uses dynamic docstrings, first added in Emacs 19.29.
;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(byte-code "\301\302!B\301\207" [package--builtin-versions purecopy (cl-generic 1 0)] 2)
#@82 compiler-macro for inlining `cl--generic-generalizer-p'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-generalizer-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-generalizer-p (and (memq (type-of cl-x) cl-struct-cl--generic-generalizer-tags) t)) nil] 9 (#$ . 499)])
(put 'cl--generic-generalizer-p 'compiler-macro 'cl--generic-generalizer-p--cmacro)
#@13
(fn CL-X)
(defalias 'cl--generic-generalizer-p #[257 "\301!>\205 \302\207" [cl-struct-cl--generic-generalizer-tags type-of t] 3 (#$ . 910)])
(byte-code "\300\301\302\303#\304\305\306\301#\207" [function-put cl--generic-generalizer-p side-effect-free error-free put cl--generic-generalizer cl-deftype-satisfies] 5)
#@85 compiler-macro for inlining `cl--generic-generalizer-name'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-generalizer-name--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-generalizer-name (or (cl--generic-generalizer-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-generalizer cl-x))) (aref cl-x 1)) nil] 9 (#$ . 1235)])
(put 'cl--generic-generalizer-name 'compiler-macro 'cl--generic-generalizer-name--cmacro)
#@192 Access slot "name" of `(cl--generic-generalizer (:constructor nil) (:constructor cl-generic-make-generalizer (name priority tagcode-function specializers-function)))' struct CL-X.
(fn CL-X)
(defalias 'cl--generic-generalizer-name #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 1] 5 (#$ . 1713)])
(byte-code "\300\301\302\303#\300\207" [function-put cl--generic-generalizer-name side-effect-free t] 4)
#@89 compiler-macro for inlining `cl--generic-generalizer-priority'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-generalizer-priority--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-generalizer-priority (or (cl--generic-generalizer-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-generalizer cl-x))) (aref cl-x 2)) nil] 9 (#$ . 2229)])
(put 'cl--generic-generalizer-priority 'compiler-macro 'cl--generic-generalizer-priority--cmacro)
#@196 Access slot "priority" of `(cl--generic-generalizer (:constructor nil) (:constructor cl-generic-make-generalizer (name priority tagcode-function specializers-function)))' struct CL-X.
(fn CL-X)
(defalias 'cl--generic-generalizer-priority #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 2] 5 (#$ . 2727)])
(byte-code "\300\301\302\303#\300\207" [function-put cl--generic-generalizer-priority side-effect-free t] 4)
#@97 compiler-macro for inlining `cl--generic-generalizer-tagcode-function'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-generalizer-tagcode-function--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-generalizer-tagcode-function (or (cl--generic-generalizer-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-generalizer cl-x))) (aref cl-x 3)) nil] 9 (#$ . 3255)])
(put 'cl--generic-generalizer-tagcode-function 'compiler-macro 'cl--generic-generalizer-tagcode-function--cmacro)
#@204 Access slot "tagcode-function" of `(cl--generic-generalizer (:constructor nil) (:constructor cl-generic-make-generalizer (name priority tagcode-function specializers-function)))' struct CL-X.
(fn CL-X)
(defalias 'cl--generic-generalizer-tagcode-function #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 3] 5 (#$ . 3793)])
(byte-code "\300\301\302\303#\300\207" [function-put cl--generic-generalizer-tagcode-function side-effect-free t] 4)
#@102 compiler-macro for inlining `cl--generic-generalizer-specializers-function'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-generalizer-specializers-function--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-generalizer-specializers-function (or (cl--generic-generalizer-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-generalizer cl-x))) (aref cl-x 4)) nil] 9 (#$ . 4346)])
(put 'cl--generic-generalizer-specializers-function 'compiler-macro 'cl--generic-generalizer-specializers-function--cmacro)
#@209 Access slot "specializers-function" of `(cl--generic-generalizer (:constructor nil) (:constructor cl-generic-make-generalizer (name priority tagcode-function specializers-function)))' struct CL-X.
(fn CL-X)
(defalias 'cl--generic-generalizer-specializers-function #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 4] 5 (#$ . 4909)])
(byte-code "\300\301\302\303#\304\305\306\"\207" [function-put cl--generic-generalizer-specializers-function side-effect-free t defalias copy-cl--generic-generalizer copy-sequence] 4)
#@132 compiler-macro for inlining `cl-generic-make-generalizer'.
(fn CL-WHOLE-ARG NAME PRIORITY TAGCODE-FUNCTION SPECIALIZERS-FUNCTION)
(defalias 'cl-generic-make-generalizer--cmacro #[1285 "\300\301\302\303\211\211 & \207" [cl--defsubst-expand (name priority tagcode-function specializers-function) (cl-block cl-generic-make-generalizer (record 'cl--generic-generalizer name priority tagcode-function specializers-function)) nil] 15 (#$ . 5539)])
(put 'cl-generic-make-generalizer 'compiler-macro 'cl-generic-make-generalizer--cmacro)
#@119 Constructor for objects of type `cl--generic-generalizer'.
(fn NAME PRIORITY TAGCODE-FUNCTION SPECIALIZERS-FUNCTION)
(defalias 'cl-generic-make-generalizer #[1028 "\300\301%\207" [record cl--generic-generalizer] 10 (#$ . 6084)])
(byte-code "\300\301\302\303#\304\305\306\307\310\306\311\312\305\303& \207" [function-put cl-generic-make-generalizer side-effect-free t cl-struct-define cl--generic-generalizer nil cl-structure-object record ((cl-tag-slot) (name nil :type string) (priority nil :type integer) (tagcode-function) (specializers-function)) cl-struct-cl--generic-generalizer-tags] 11)
#@650 Define a new kind of generalizer.
NAME is the name of the variable that will hold it.
PRIORITY defines which generalizer takes precedence.
The catch-all generalizer has priority 0.
Then `eql' generalizer has priority 100.
TAGCODE-FUNCTION takes as first argument a varname and should return
a chunk of code that computes the tag of the value held in that variable.
Further arguments are reserved for future use.
SPECIALIZERS-FUNCTION takes as first argument a tag value TAG
and should return a list of specializers that match TAG.
Further arguments are reserved for future use.
(fn NAME PRIORITY TAGCODE-FUNCTION SPECIALIZERS-FUNCTION)
(defalias 'cl-generic-define-generalizer '(macro . #[1028 "\300\301\302D\257E\207" [defconst cl-generic-make-generalizer quote] 11 (#$ . 6691)]))
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put cl-generic-define-generalizer lisp-indent-function 1 put edebug-form-spec (symbolp body)] 5)
(defconst cl--generic-t-generalizer (byte-code "\300\301\302\303\304\305%\207" [#[385 "\300\207" [nil] 3 "\n\n(fn NAME &rest _)"] #[385 "\300\207" [(t)] 3 "\n\n(fn TAG &rest _)"] record cl--generic-generalizer cl--generic-t-generalizer 0] 8))
#@88 compiler-macro for inlining `cl--struct-cl--generic-method-p'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--struct-cl--generic-method-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--struct-cl--generic-method-p (and (memq (type-of cl-x) cl-struct-cl--generic-method-tags) t)) nil] 9 (#$ . 7906)])
(put 'cl--struct-cl--generic-method-p 'compiler-macro 'cl--struct-cl--generic-method-p--cmacro)
#@13
(fn CL-X)
(defalias 'cl--struct-cl--generic-method-p #[257 "\301!>\205 \302\207" [cl-struct-cl--generic-method-tags type-of t] 3 (#$ . 8343)])
(byte-code "\300\301\302\303#\304\305\306\301#\207" [function-put cl--struct-cl--generic-method-p side-effect-free error-free put cl--generic-method cl-deftype-satisfies] 5)
#@88 compiler-macro for inlining `cl--generic-method-specializers'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-method-specializers--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-method-specializers (or (cl--struct-cl--generic-method-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-method cl-x))) (aref cl-x 1)) nil] 9 (#$ . 8671)])
(put 'cl--generic-method-specializers 'compiler-macro 'cl--generic-method-specializers--cmacro)
#@197 Access slot "specializers" of `(cl--generic-method (:constructor nil) (:constructor cl--generic-make-method (specializers qualifiers uses-cnm function)) (:predicate nil))' struct CL-X.
(fn CL-X)
(defalias 'cl--generic-method-specializers #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 1] 5 (#$ . 9165)])
(byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put cl--generic-method-specializers side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" cl--generic-method-specializers] 5 "\n\n(fn CL-DO CL-X)"]] 5)
#@86 compiler-macro for inlining `cl--generic-method-qualifiers'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-method-qualifiers--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-method-qualifiers (or (cl--struct-cl--generic-method-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-method cl-x))) (aref cl-x 2)) nil] 9 (#$ . 9828)])
(put 'cl--generic-method-qualifiers 'compiler-macro 'cl--generic-method-qualifiers--cmacro)
#@195 Access slot "qualifiers" of `(cl--generic-method (:constructor nil) (:constructor cl--generic-make-method (specializers qualifiers uses-cnm function)) (:predicate nil))' struct CL-X.
(fn CL-X)
(defalias 'cl--generic-method-qualifiers #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 2] 5 (#$ . 10312)])
(byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put cl--generic-method-qualifiers side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" cl--generic-method-qualifiers] 5 "\n\n(fn CL-DO CL-X)"]] 5)
#@84 compiler-macro for inlining `cl--generic-method-uses-cnm'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-method-uses-cnm--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-method-uses-cnm (or (cl--struct-cl--generic-method-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-method cl-x))) (aref cl-x 3)) nil] 9 (#$ . 10968)])
(put 'cl--generic-method-uses-cnm 'compiler-macro 'cl--generic-method-uses-cnm--cmacro)
#@193 Access slot "uses-cnm" of `(cl--generic-method (:constructor nil) (:constructor cl--generic-make-method (specializers qualifiers uses-cnm function)) (:predicate nil))' struct CL-X.
(fn CL-X)
(defalias 'cl--generic-method-uses-cnm #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 3] 5 (#$ . 11443)])
(byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put cl--generic-method-uses-cnm side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" cl--generic-method-uses-cnm] 5 "\n\n(fn CL-DO CL-X)"]] 5)
#@84 compiler-macro for inlining `cl--generic-method-function'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-method-function--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-method-function (or (cl--struct-cl--generic-method-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-method cl-x))) (aref cl-x 4)) nil] 9 (#$ . 12091)])
(put 'cl--generic-method-function 'compiler-macro 'cl--generic-method-function--cmacro)
#@193 Access slot "function" of `(cl--generic-method (:constructor nil) (:constructor cl--generic-make-method (specializers qualifiers uses-cnm function)) (:predicate nil))' struct CL-X.
(fn CL-X)
(defalias 'cl--generic-method-function #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 4] 5 (#$ . 12566)])
(byte-code "\300\301\302\303#\300\301\304\305#\306\307\310\"\207" [function-put cl--generic-method-function side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" cl--generic-method-function] 5 "\n\n(fn CL-DO CL-X)"] defalias copy-cl--generic-method copy-sequence] 5)
#@117 compiler-macro for inlining `cl--generic-make-method'.
(fn CL-WHOLE-ARG SPECIALIZERS QUALIFIERS USES-CNM FUNCTION)
(defalias 'cl--generic-make-method--cmacro #[1285 "\300\301\302\303\211\211 & \207" [cl--defsubst-expand (specializers qualifiers uses-cnm function) (cl-block cl--generic-make-method (record 'cl--generic-method specializers qualifiers uses-cnm function)) nil] 15 (#$ . 13272)])
(put 'cl--generic-make-method 'compiler-macro 'cl--generic-make-method--cmacro)
#@103 Constructor for objects of type `cl--generic-method'.
(fn SPECIALIZERS QUALIFIERS USES-CNM FUNCTION)
(defalias 'cl--generic-make-method #[1028 "\300\301%\207" [record cl--generic-method] 10 (#$ . 13760)])
(byte-code "\300\301\302\303#\304\305\306\307\310\306\311\312\305\303& \207" [function-put cl--generic-make-method side-effect-free t cl-struct-define cl--generic-method nil cl-structure-object record ((cl-tag-slot) (specializers nil :read-only t :type list) (qualifiers nil :read-only t :type (list-of atom)) (uses-cnm nil :read-only t :type boolean) (function nil :read-only t :type function)) cl-struct-cl--generic-method-tags] 11)
#@81 compiler-macro for inlining `cl--struct-cl--generic-p'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--struct-cl--generic-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--struct-cl--generic-p (and (memq (type-of cl-x) cl-struct-cl--generic-tags) t)) nil] 9 (#$ . 14411)])
(put 'cl--struct-cl--generic-p 'compiler-macro 'cl--struct-cl--generic-p--cmacro)
#@13
(fn CL-X)
(defalias 'cl--struct-cl--generic-p #[257 "\301!>\205 \302\207" [cl-struct-cl--generic-tags type-of t] 3 (#$ . 14807)])
(byte-code "\300\301\302\303#\304\305\306\301#\207" [function-put cl--struct-cl--generic-p side-effect-free error-free put cl--generic cl-deftype-satisfies] 5)
#@73 compiler-macro for inlining `cl--generic-name'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-name--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-name (or (cl--struct-cl--generic-p cl-x) (signal 'wrong-type-argument (list 'cl--generic cl-x))) (aref cl-x 1)) nil] 9 (#$ . 15108)])
(put 'cl--generic-name 'compiler-macro 'cl--generic-name--cmacro)
#@138 Access slot "name" of `(cl--generic (:constructor nil) (:constructor cl--generic-make (name)) (:predicate nil))' struct CL-X.
(fn CL-X)
(defalias 'cl--generic-name #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 1] 5 (#$ . 15514)])
(byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put cl--generic-name side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" cl--generic-name] 5 "\n\n(fn CL-DO CL-X)"]] 5)
#@79 compiler-macro for inlining `cl--generic-dispatches'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-dispatches--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-dispatches (or (cl--struct-cl--generic-p cl-x) (signal 'wrong-type-argument (list 'cl--generic cl-x))) (aref cl-x 2)) nil] 9 (#$ . 16060)])
(put 'cl--generic-dispatches 'compiler-macro 'cl--generic-dispatches--cmacro)
#@144 Access slot "dispatches" of `(cl--generic (:constructor nil) (:constructor cl--generic-make (name)) (:predicate nil))' struct CL-X.
(fn CL-X)
(defalias 'cl--generic-dispatches #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 2] 5 (#$ . 16496)])
(byte-code "\300\301\302\303#\300\207" [function-put cl--generic-dispatches side-effect-free t] 4)
#@81 compiler-macro for inlining `cl--generic-method-table'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-method-table--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-method-table (or (cl--struct-cl--generic-p cl-x) (signal 'wrong-type-argument (list 'cl--generic cl-x))) (aref cl-x 3)) nil] 9 (#$ . 16929)])
(put 'cl--generic-method-table 'compiler-macro 'cl--generic-method-table--cmacro)
#@146 Access slot "method-table" of `(cl--generic (:constructor nil) (:constructor cl--generic-make (name)) (:predicate nil))' struct CL-X.
(fn CL-X)
(defalias 'cl--generic-method-table #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 3] 5 (#$ . 17375)])
(byte-code "\300\301\302\303#\300\207" [function-put cl--generic-method-table side-effect-free t] 4)
#@76 compiler-macro for inlining `cl--generic-options'.
(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-options--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-options (or (cl--struct-cl--generic-p cl-x) (signal 'wrong-type-argument (list 'cl--generic cl-x))) (aref cl-x 4)) nil] 9 (#$ . 17814)])
(put 'cl--generic-options 'compiler-macro 'cl--generic-options--cmacro)
#@141 Access slot "options" of `(cl--generic (:constructor nil) (:constructor cl--generic-make (name)) (:predicate nil))' struct CL-X.
(fn CL-X)
(defalias 'cl--generic-options #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 4] 5 (#$ . 18235)])
(byte-code "\300\301\302\303#\304\305\306\"\207" [function-put cl--generic-options side-effect-free t defalias copy-cl--generic copy-sequence] 4)
#@73 compiler-macro for inlining `cl--generic-make'.
(fn CL-WHOLE-ARG NAME)
(defalias 'cl--generic-make--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (name) (cl-block cl--generic-make (record 'cl--generic name nil nil nil)) nil] 9 (#$ . 18709)])
(put 'cl--generic-make 'compiler-macro 'cl--generic-make--cmacro)
#@59 Constructor for objects of type `cl--generic'.
(fn NAME)
(defalias 'cl--generic-make #[257 "\300\301\302\211\211%\207" [record cl--generic nil] 7 (#$ . 19047)])
(byte-code "\300\301\302\303#\304\305\306\307\310\306\311\312\305\303& \207" [function-put cl--generic-make side-effect-free t cl-struct-define cl--generic nil cl-structure-object record ((cl-tag-slot) (name nil :type symbol :read-only t) (dispatches nil :type (list-of (cons natnum (list-of generalizers)))) (method-table nil :type (list-of cl--generic-method)) (options nil :type list)) cl-struct-cl--generic-tags] 11)
#@67 Return the options of the generic function GENERIC.
(fn GENERIC)
(defalias 'cl-generic-function-options #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 4] 5 (#$ . 19637)])
#@13
(fn NAME)
(defalias 'cl--generic '(macro . #[257 "\300\301BB\207" [get ('cl--generic)] 4 (#$ . 19899)]))
#@52 Return non-nil if F is a generic function.
(fn F)
(defalias 'cl-generic-p #[257 "\2119\205 \211\300N\207" [cl--generic] 3 (#$ . 20013)])
#@31
(fn NAME &optional NOERROR)
(defalias 'cl-generic-ensure-function #[513 "\301\302N\211\262\204\" |