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


#@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 (#$ . 83)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-generalizer-p compiler-macro cl--generic-generalizer-p--cmacro] 4)#@13 

(fn CL-X)
(defalias 'cl--generic-generalizer-p #[257 "\301!>\205	 \302\207" [cl-struct-cl--generic-generalizer-tags type-of t] 3 (#$ . 546)])
(byte-code "\300\301\302\303#\300\301\304\305#\306\307\310\301#\300\207" [function-put cl--generic-generalizer-p side-effect-free error-free pure t define-symbol-prop cl--generic-generalizer cl-deftype-satisfies] 6)#@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 (progn (or (cl--generic-generalizer-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-generalizer cl-x))) (aref cl-x 1))) nil] 9 (#$ . 913)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-generalizer-name compiler-macro cl--generic-generalizer-name--cmacro] 4)#@73 Access slot "name" of `cl--generic-generalizer' struct CL-X.

(fn CL-X)
(defalias 'cl--generic-generalizer-name #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 1] 5 (#$ . 1450)])
(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 (progn (or (cl--generic-generalizer-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-generalizer cl-x))) (aref cl-x 2))) nil] 9 (#$ . 1846)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-generalizer-priority compiler-macro cl--generic-generalizer-priority--cmacro] 4)#@77 Access slot "priority" of `cl--generic-generalizer' struct CL-X.

(fn CL-X)
(defalias 'cl--generic-generalizer-priority #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 2] 5 (#$ . 2404)])
(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 (progn (or (cl--generic-generalizer-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-generalizer cl-x))) (aref cl-x 3))) nil] 9 (#$ . 2812)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-generalizer-tagcode-function compiler-macro cl--generic-generalizer-tagcode-function--cmacro] 4)#@85 Access slot "tagcode-function" of `cl--generic-generalizer' struct
CL-X.

(fn CL-X)
(defalias 'cl--generic-generalizer-tagcode-function #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 3] 5 (#$ . 3410)])
(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 (progn (or (cl--generic-generalizer-p cl-x) (signal 'wrong-type-argument (list 'cl--generic-generalizer cl-x))) (aref cl-x 4))) nil] 9 (#$ . 3843)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-generalizer-specializers-function compiler-macro cl--generic-generalizer-specializers-function--cmacro] 4)#@90 Access slot "specializers-function" of `cl--generic-generalizer'
struct CL-X.

(fn CL-X)
(defalias 'cl--generic-generalizer-specializers-function #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 4] 5 (#$ . 4466)])
(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 (#$ . 4976)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl-generic-make-generalizer compiler-macro cl-generic-make-generalizer--cmacro] 4)#@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 (#$ . 5574)])
(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\302D\257E\207" [defconst cl-generic-make-generalizer quote] 11 (#$ . 6180)]))
(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 (#$ . 7394)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--struct-cl--generic-method-p compiler-macro cl--struct-cl--generic-method-p--cmacro] 4)#@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 (#$ . 7884)])
(byte-code "\300\301\302\303#\300\301\304\305#\306\307\310\301#\300\207" [function-put cl--struct-cl--generic-method-p side-effect-free error-free pure t define-symbol-prop cl--generic-method cl-deftype-satisfies] 6)#@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 (progn (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 (#$ . 8254)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-method-specializers compiler-macro cl--generic-method-specializers--cmacro] 4)#@76 Access slot "specializers" of `cl--generic-method' struct CL-X.

(fn CL-X)
(defalias 'cl--generic-method-specializers #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 1] 5 (#$ . 8808)])
(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 (progn (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 (#$ . 9349)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-method-qualifiers compiler-macro cl--generic-method-qualifiers--cmacro] 4)#@74 Access slot "qualifiers" of `cl--generic-method' struct CL-X.

(fn CL-X)
(defalias 'cl--generic-method-qualifiers #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 2] 5 (#$ . 9893)])
(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-call-con'.

(fn CL-WHOLE-ARG CL-X)
(defalias 'cl--generic-method-call-con--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block cl--generic-method-call-con (progn (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 (#$ . 10426)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-method-call-con compiler-macro cl--generic-method-call-con--cmacro] 4)#@72 Access slot "call-con" of `cl--generic-method' struct CL-X.

(fn CL-X)
(defalias 'cl--generic-method-call-con #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 3] 5 (#$ . 10961)])
(byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put cl--generic-method-call-con side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" cl--generic-method-call-con] 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 (progn (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 (#$ . 11487)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-method-function compiler-macro cl--generic-method-function--cmacro] 4)#@72 Access slot "function" of `cl--generic-method' struct CL-X.

(fn CL-X)
(defalias 'cl--generic-method-function #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 4] 5 (#$ . 12022)])
(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 CALL-CON FUNCTION)
(defalias 'cl--generic-make-method--cmacro #[1285 "\300\301\302\303\211\211				&	\207" [cl--defsubst-expand (specializers qualifiers call-con function) (cl-block cl--generic-make-method (record 'cl--generic-method specializers qualifiers call-con function)) nil] 15 (#$ . 12606)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-make-method compiler-macro cl--generic-make-method--cmacro] 4)#@103 Constructor for objects of type `cl--generic-method'.

(fn SPECIALIZERS QUALIFIERS CALL-CON FUNCTION)
(defalias 'cl--generic-make-method #[1028 "\300\301%\207" [record cl--generic-method] 10 (#$ . 13147)])
(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)) (call-con nil :read-only t :type symbol) (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 (#$ . 13796)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--struct-cl--generic-p compiler-macro cl--struct-cl--generic-p--cmacro] 4)#@13 

(fn CL-X)
(defalias 'cl--struct-cl--generic-p #[257 "\301!>\205	 \302\207" [cl-struct-cl--generic-tags type-of t] 3 (#$ . 14245)])
(byte-code "\300\301\302\303#\300\301\304\305#\306\307\310\301#\300\207" [function-put cl--struct-cl--generic-p side-effect-free error-free pure t define-symbol-prop cl--generic cl-deftype-satisfies] 6)#@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 (progn (or (cl--struct-cl--generic-p cl-x) (signal 'wrong-type-argument (list 'cl--generic cl-x))) (aref cl-x 1))) nil] 9 (#$ . 14588)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-name compiler-macro cl--generic-name--cmacro] 4)#@61 Access slot "name" of `cl--generic' struct CL-X.

(fn CL-X)
(defalias 'cl--generic-name #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 1] 5 (#$ . 15054)])
(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 (progn (or (cl--struct-cl--generic-p cl-x) (signal 'wrong-type-argument (list 'cl--generic cl-x))) (aref cl-x 2))) nil] 9 (#$ . 15522)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-dispatches compiler-macro cl--generic-dispatches--cmacro] 4)#@67 Access slot "dispatches" of `cl--generic' struct CL-X.

(fn CL-X)
(defalias 'cl--generic-dispatches #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 2] 5 (#$ . 16018)])
(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 (progn (or (cl--struct-cl--generic-p cl-x) (signal 'wrong-type-argument (list 'cl--generic cl-x))) (aref cl-x 3))) nil] 9 (#$ . 16373)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-method-table compiler-macro cl--generic-method-table--cmacro] 4)#@69 Access slot "method-table" of `cl--generic' struct CL-X.

(fn CL-X)
(defalias 'cl--generic-method-table #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 3] 5 (#$ . 16879)])
(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 (progn (or (cl--struct-cl--generic-p cl-x) (signal 'wrong-type-argument (list 'cl--generic cl-x))) (aref cl-x 4))) nil] 9 (#$ . 17240)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-options compiler-macro cl--generic-options--cmacro] 4)#@64 Access slot "options" of `cl--generic' struct CL-X.

(fn CL-X)
(defalias 'cl--generic-options #[257 "\301!>\204 \302\303\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 4] 5 (#$ . 17721)])
(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 (#$ . 18117)])
(byte-code "\300\301\302\303#\300\207" [define-symbol-prop cl--generic-make compiler-macro cl--generic-make--cmacro] 4)#@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 (#$ . 18508)])
(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\304D\"\210\211\305H\207" [cl-struct-cl--generic-tags type-of signal wrong-type-argument cl--generic 4] 5 (#$ . 19097)])#@13 

(fn NAME)
(defalias 'cl--generic '(macro . #[257 "\300\301BB\207" [get ('cl--generic)] 4 (#$ . 19358)]))#@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 (#$ . 19471)])#@31 

(fn NAME &optional NOERROR)
(defalias 'cl-generic-ensure-function #[513 "\301\302N\211\262\204\" \303!\203\" \204\" K9\203\" K\262\202 \303!\203F K\211\242\304=\262\204F \305!\203= \204F \204F \306\307\"\210\203h \310!>\204Z \311\312\302D\"\210\313H=\204x \314\315!\210\202x \316\302\317\302\301\211\211%\211\262#\210\207" [cl-struct-cl--generic-tags nil cl--generic fboundp autoload functionp error "%s is already defined as something else than a generic function" type-of signal wrong-type-argument 1 cl--assertion-failed (eq name (cl--generic-name generic)) put record] 13 (#$ . 19615)])
(defvar cl--generic-edebug-name nil)#@28 

(fn NAME PF &rest SPECS)
(defalias 'cl--generic-edebug-remember-name #[642 "@!)\207" [cl--generic-edebug-name] 5 (#$ . 20277)])#@47 

(fn IN:METHOD OLDNAME &rest QUALS-AND-ARGS)
(defalias 'cl--generic-edebug-make-name #[642 "\203 \202 \211A\262\242\301!@\302!\211\242\303\304\"\305\306\307\310\311!B\312##\207" [cl--generic-edebug-name last cl--generic-split-args mapcar #[257 "\211@\242\300=\203	 \207\211A\207" [&context] 3 "\n\n(fn SPEC-ARG)"] format "%s %s" mapconcat #[257 "\300\301\"\207" [format "%s"] 4 "\n\n(fn SEXP)"] butlast " "] 15 (#$ . 20416)])#@619 Create a generic function NAME.
DOC-STRING is the base documentation for this class.  A generic
function has no body, as its purpose is to decide which method body
is appropriate to use.  Specific methods are defined with `cl-defmethod'.
With this implementation the ARGS are currently ignored.
OPTIONS-AND-METHODS currently understands:
- (:documentation DOCSTRING)
- (declare DECLARATIONS)
- (:argument-precedence-order &rest ARGS)
- (:method [QUALIFIERS...] ARGS &rest BODY)
DEFAULT-BODY, if present, is used as the body of a default method.

(fn NAME ARGS [DOC-STRING] [OPTIONS-AND-METHODS...] &rest DEFAULT-BODY)
(defalias 'cl-defgeneric '(macro . #[642 "C\242;\205 \211A\262\242\300\211\211\301\300\302\303\n\"\"\211\205, \304\305\306\307\310\311#\"\300\211\211%C\262\300@\242\262\312!\204A \211\313=\203\224 \211\314\267\202\206 \203R \315\316\242\"\210\211A\262	\242A@\262\202/ \203k \315\317\242\"\210\211A\262	\242\262\202/ \211A\262	\242AB\262\202/ \211A\262	\242B\262\202/ \203\242 BB\262\242\242\320=\203\272 \321\322!\210\323\242A@!\240\210\324\325\326\327\330\f\242D\331\330\242D\330D\330\f\237DF\f:\203\345 \332\330DE\202\353 \332\"F\333	\205\334\335\242DC\302\336\337\"\237\"BBE\"B\302\336\340\f#A\"BB\207" [nil delq mapcar #[257 "\2119?\205 \211\207" [] 2 "\n\n(fn ARG)"] macroexp-warn-and-return format "Non-symbol arguments to cl-defgeneric: %s" mapconcat prin1-to-string "" keywordp declare #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:documentation 71 declare 96 :method 119)) error "Multiple doc strings for %S" "Multiple `declare' for %S" setf require gv gv-setter prog1 progn append defalias quote cl-generic-define help-add-fundoc-usage :autoload-end with-suppressed-warnings obsolete make-closure #[257 "\301\300\242BB\207" [V0 cl-defmethod] 4 "\n\n(fn METHOD)"] #[257 "\211@\n\236A\211\203 \303@\301\242\300A$\207\304\305@\301\242#\210\306\207" [V0 V1 defun-declarations-alist apply message "Warning: Unknown defun property `%S' in %S" nil] 7 "\n\n(fn DECLARATION)"]] 22 (#$ . 20864)]))
(byte-code "\300\301\302\303#\300\301\304\305#\306\301\307\310#\207" [function-put cl-defgeneric lisp-indent-function 2 doc-string-elt 3 put edebug-form-spec (&define &interpose [&name sexp] cl--generic-edebug-remember-name listp lambda-doc [&rest [&or ("declare" &rest sexp) (":argument-precedence-order" &rest sexp) (&define ":method" [&name [[&rest cl-generic--method-qualifier-p] listp] cl--generic-edebug-make-name in:method] lambda-doc def-body)]] def-body)] 6)#@26 

(fn NAME ARGS OPTIONS)
(defalias 'cl-generic-define #[771 "\301\302\"\303!\211\242\304\305\"\306\236\307!\204A \310!>\204' \311\312\313D\"\210\314\315I\210\310!>\204< \311\312\313D\"\210\316\315I\210\211\203\241 \211A\211\203\240 \211@\211>\211\204Y \317\320\"\210GGZ\310	!>\204o \311\312\313D\"\210\314H\236\206{ C\310!>\204\214 \311\312\313D\"\210\n\314\321\"BI\266A\266\202\202G \210\310!>\204\261 \311\312\313D\"\210\322I\210\323!\207" [cl-struct-cl--generic-tags cl-generic-ensure-function noerror cl--generic-split-args mapcar car :argument-precedence-order fboundp type-of signal wrong-type-argument cl--generic 2 nil 3 error "%S is not a mandatory argument" delq 4 cl--generic-make-function] 20 (#$ . 23477)])#@132 List of (VAR . TYPE) where TYPE is var's specializer.
This macro can only be used within the lexical scope of a cl-generic method.
(defalias 'cl-generic-current-method-specializers '(macro . #[0 "\300\301!\207" [error "cl-generic-current-method-specializers used outside of a method"] 2 (#$ . 24252)]))#@194 Define a special kind of context named NAME.
Whenever a context specializer of the form (NAME . ARGS) appears,
the specializer used will be the one returned by BODY.

(fn NAME ARGS &rest BODY)
(defalias 'cl-generic-define-context-rewriter '(macro . #[642 "\300\301\302D\303\304BBFD\207" [eval-and-compile put quote 'cl-generic--context-rewriter lambda] 10 (#$ . 24561)]))
(byte-code "\300\301\302\303#\210\304\301\305\306#\300\207" [put cl-generic-define-context-rewriter edebug-form-spec (&define name lambda-list def-body) function-put lisp-indent-function defun] 4)#@45 Return (SPEC-ARGS . PLAIN-ARGS).

(fn ARGS)
(defalias 'cl--generic-split-args #[257 "\300\211\301\211\203\222 \211@\211\302\267\202& \300\262\211\202\207 \204 \303\304!\210\305\262\300\202\207 \300\262\211\306\267\202e \202\205 :\204> \303\307\"\210@\2119\205H \211\310N\211\203S \311A\"\262\266\312@BA@BB\262\300\202\205 :\203} \242\243@BB\262\266\202\202\205 \301BB\262\262B\262A\266\202\202 \210\237\313\300\"\237B\207" [nil t #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (&key 16 &rest 16 &optional 16 &context 23)) error "&context not immediately after mandatory args" context #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (nil 48 context 52)) "Invalid &context arg: %S" cl-generic--context-rewriter apply &context delq] 12 (#$ . 25140)])#@77 Make the lambda expression for a method with ARGS and BODY.

(fn ARGS BODY)
(defalias 'cl--generic-lambda #[514 "\302!\211\242\243\303\304BBD\305\306\307\"BB\310\311!\210\312\236\203+ \313\314\312	\236\"\210\315\"\211:\203k\211\242\211\316=\203f\243\211:\203a\211\242\211:\203\\\211\242\211\304=\203V\243\211:\203P\211\242\243\243\211\204J\317!\320\321!\320\322!\320\323!\320\324!\325\326\327D\330DDABB\"\331CCD\"\332\333\"\204\244 \334\316\304\335\f@C\"BBE\207	\203\336\316\304	C\337\340\341D\342BBDC\304\343D\335@\211@;\203\316 \211\202\324 \334B\211\262\344@\334\"\211\204\346 \345@\"\240\210\266\203\337\304\346\347\350\351EEEDC\347\304\335\"E\335C\"BBEC\"BBEEE\207\352\316\304B\335\f@\353\354\n\236\2042\n\202A\337\f\304\334\341DEDC\fE\355\352$C\"BBE\207\356\357\n\"\207\356\357\"\207\356\357\"\207\356\357\"\207\356\357\"\207\356\357\"\207\356\357\"\207" [macroexpand-all-environment lexical-binding cl--generic-split-args cl-function lambda cl-generic-current-method-specializers make-closure #[0 "\300\207" [V0] 1] require cl-lib interactive message "Interactive forms not supported in generic functions: %S" macroexpand function macroexp-parse-body make-symbol "cl--nm" "cl--args" "cl--cnm" "cl--nmp" macroexpand-all cl-flet cl-call-next-method cl-next-method-p macroexp--fgrep mapcar car nil append curried let if cl--generic-isnot-nnm-p (#'always #'ignore) &rest help-split-fundoc help-add-fundoc-usage (&rest args) apply or args t macroexp-warn-and-return "cl-defmethod used without lexical-binding" lexical error "Unexpected macroexpansion result: %S"] 44 (#$ . 26007)])
(put 'cl-defmethod 'function-documentation '(cl--generic-make-defmethod-docstring))
(defalias 'cl--generic-make-defmethod-docstring #[0 "\301\302K\303\"\304\302\"\305\306!\210\307\310\311\"r\211q\210\312\313\"\216A\206  c\210\314c\210\315\316\317N\320!>\2048 \321\322\317D\"\210\211\323H\262!\211\203\\ \211@\324!\3258\203T \3258\326\261\210\210A\266\202\202> \210\327 \203k \330@\"\202l \211*\207" [cl-struct-cl--generic-tags documentation cl-defmethod raw help-split-fundoc require help-fns generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] "\n\n	Currently supported forms for TYPE:\n\n" reverse cl-generic-generalizers cl--generic type-of signal wrong-type-argument 3 cl--generic-method-info 2 "\n\n" buffer-string help-add-fundoc-usage] 9])#@10 

(fn X)
(defalias 'cl-generic--method-qualifier-p #[257 "\211<?\207" [] 2 (#$ . 28519)])#@116 Return the index of the docstring for a `cl-defmethod'.
Presumes point is at the end of the `cl-defmethod' symbol.
(defalias 'cl--defmethod-doc-pos #[0 "\212\300\3011 \302\303!\210\3040\202 \210\202% \203% `Sf\305=\204% \211T\262\202 )\207" [2 (error) forward-sexp 1 t 41] 3 (#$ . 28615)])#@1845 Define a new method for generic function NAME.
This defines an implementation of NAME to use for invocations
of specific types of arguments.

ARGS is a list of dispatch arguments (see `cl-defun'), but where
each variable element is either just a single variable name VAR,
or a list on the form (VAR TYPE).

For instance:

  (cl-defmethod foo (bar (format-string string) &optional zot)
    (format format-string bar))

The dispatch arguments have to be among the mandatory arguments, and
all methods of NAME have to use the same set of arguments for dispatch.
Each dispatch argument and TYPE are specified in ARGS where the corresponding
formal argument appears as (VAR TYPE) rather than just VAR.

The optional EXTRA element, on the form `:extra STRING', allows
you to add more methods for the same specializers and qualifiers.
These are distinguished by STRING.

The optional argument QUALIFIER is a specifier that modifies how
the method is combined with other methods, including:
   :before  - Method will be called before the primary
   :after   - Method will be called after the primary
   :around  - Method will be called around everything else
The absence of QUALIFIER means this is a "primary" method.
The set of acceptable qualifiers and their meaning is defined
(and can be extended) by the methods of `cl-generic-combine-methods'.

ARGS can also include so-called context specializers, introduced by
`&context' (which should appear right after the mandatory arguments,
before any &optional or &rest).  They have the form (EXPR TYPE) where
EXPR is an Elisp expression whose value should match TYPE for the
method to be applicable.

The set of acceptable TYPEs (also called "specializers") is defined
(and can be extended) by the various methods of `cl-generic-generalizers'.

(fn NAME [EXTRA] [QUALIFIER] ARGS &rest [DOCSTRING] BODY)
(defalias 'cl-defmethod '(macro . #[642 "\300\301!\203 B\262\211A\262\242\262\202 \242\302=\203) \303\304!\210\305A@!\262\306\"\211\242\243\307\310\311BB\312\313\nD\314\237D\314D\314D\257E\207" [nil cl-generic--method-qualifier-p setf require gv gv-setter cl--generic-lambda progn declare-function ("") cl-generic-define-method function quote] 15 (#$ . 28916)]))
(byte-code "\300\301\302\303#\300\301\304\305#\306\301\307\310#\207" [function-put cl-defmethod doc-string-elt cl--defmethod-doc-pos lisp-indent-function defun put edebug-form-spec (&define [&name [sexp [&rest cl-generic--method-qualifier-p] listp] cl--generic-edebug-make-name nil] lambda-doc def-body)] 6)#@40 

(fn SPECIALIZERS QUALIFIERS METHODS)
(defalias 'cl--generic-member-method #[771 "\211\203> \211@\301!>\204 \302\303\304D\"\210\211\305H\232\2051 \301!>\204, \302\303\304D\"\210\211\306H\232?\262\203> \211A\262\202  \207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 1 2] 8 (#$ . 31463)])#@37 

(fn NAME QUALIFIERS SPECIALIZERS)
(defalias 'cl--generic-load-hist-format #[771 "BB\207" [] 6 (#$ . 31813)])#@47 

(fn NAME QUALIFIERS ARGS CALL-CON FUNCTION)
(defalias 'cl-generic-define-method #[1285 "\303!\304!\211\242\305\306\"\307\310\n		%\311!>\204& \312\313\314D\"\210\315H\316#\311!>\204@ \312\313\314	D\"\210\317H\320\211\203\271 \211@\211@\242\321=\203Z \211@\202[ \322A!\323\"\211\204\214 \322\324!B\262\311!>\204\200 \312\313\314D\"\210\317	B\211\262\nI\210\211\203\253 \211@\211A\235\204\244 \325AB\326\"\241\210A\266\202\202\215 \210T\262\266A\266\202\202G \210\311	!>\204\313 \312\313\314D\"\210\315\204\332 B\202\345 \305\327\330\n#\"I\210\311	!>\204\370 \312\313\314D\"\210\331H\332\n!K\204\n\333\334\"\210\335\336\311!>\204\312\313\314D\"\210\f\331H#B\211	\235\2031	\2024\211	B\262\337K!\340\211\211<\203J\341\340#\210\333\"*\207" [cl-struct-cl--generic-tags current-load-list purify-flag cl-generic-ensure-function cl--generic-split-args mapcar #[257 "\211@\242\300=\203	 \207\211A\207" [&context] 3 "\n\n(fn SPEC-ARG)"] record cl--generic-method type-of signal wrong-type-argument cl--generic 3 cl--generic-member-method 2 0 &context cl-generic-generalizers assoc t sort #[514 "\301!>\204 \302\303\304D\"\210\305H\301!>\204! \302\303\304D\"\210\305HV\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 2] 7 "\n\n(fn X Y)"] make-closure #[257 "\211\300@=\203	 \301\207\207" [V0 V1] 3 "\n\n(fn X)"] 1 cl--generic-make-function defalias dummy cl-defmethod cl--generic-load-hist-format get-advertised-calling-convention nil set-advertised-calling-convention] 25 (#$ . 31932)])
(defvar cl--generic-dispatchers (make-hash-table :test 'equal))
(defvar cl--generic-compiler (byte-code "\300:\203 \301\207\302\207" [#[257 "\211T\207" [] 2 "\n\n(fn X)"] #[257 "\300\301\"\207" [eval t] 4 "\n\n(fn EXP)"] byte-compile] 1))#@17 

(fn DISPATCH)
(defalias 'cl--generic-get-dispatcher #[257 "\304!\305\"\206\306 	\203( \n\306=\203( \307\310\311\312\"\313\314\315\311\316\n\"\"B#\210@A\317\311\320\"\311\321\"\322\323\324!@!\203F \325!\202G B\326\315\242\327=\203a \330ADC\262\315\262\331\262\331\211W\203| \332\333\334ZS\"!B\262\211T\262\202b \210\n\335\336\337\340\335\341	\342\"\337\343\344\305\345BB\346\347\350D\351\352A\203\250 \341B\202\253 @\257E\341\353\"BBEEEE!)\266\210\354#\210\211\262\207" [cl--generic-dispatchers purify-flag cl--generic-compiler lexical-binding copy-sequence gethash byte-compile error "Missing cl-generic dispatcher in the prefilled cache!\nMissing for: %S\nYou might need to add: %S" mapcar #[257 "\301!>\203 \301!>\204 \302\303\304D\"\210\211\305H\207\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 1] 5 "\n\n(fn X)"] cl--generic-prefill-dispatchers delq nil cl--generic-prefill-generalizer-sample t #[257 "\301!>\204 \302\303\304D\"\210\211\305H\306!\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 3 arg] 5 "\n\n(fn GENERALIZER)"] #[257 "\301\302\303!>\204 \304\305\306D\"\210\307HD\303!>\204$ \304\305\306D\"\210\310H\311!E\207" [cl-struct-cl--generic-generalizer-tags funcall quote type-of signal wrong-type-argument cl--generic-generalizer 4 3 arg] 7 "\n\n(fn GENERALIZER)"] or macroexp-const-p last butlast (arg) &context arg 0 make-symbol format "arg%d" lambda (generic dispatches-left methods) let ((method-cache (make-hash-table :test #'eql))) append (&rest args) apply with-memoization (method-cache) cl--generic-cache-miss generic quote dispatches-left methods (args) puthash] 30 (#$ . 33820)])#@16 

(fn GENERIC)
(defalias 'cl--generic-make-function #[257 "\301\302!>\204 \303\304\305D\"\210\306H\302!>\204$ \303\304\305D\"\210\307H#\207" [cl-struct-cl--generic-tags cl--generic-make-next-function type-of signal wrong-type-argument cl--generic 2 3] 8 (#$ . 35616)])#@35 

(fn GENERIC DISPATCHES METHODS)
(defalias 'cl--generic-make-next-function #[771 "\203 @A@\211?\206 \211\232\262\203 A\262\202  \211A\262\242\211\203* \204/ \301\"\207\302!\211#\207" [cl--generic-t-generalizer cl--generic-build-combined-method cl--generic-get-dispatcher] 9 (#$ . 35901)])#@251 Table storing previously built combined-methods.
This is particularly useful when many different tags select the same set
of methods, since this table then allows us to share a single combined-method
for all those different tags in the method-cache.
(defvar cl--generic-combined-method-memoization (make-hash-table :test 'equal :weakness 'value) (#$ . 36215))
(define-error 'cl--generic-cyclic-definition "Cyclic definition")#@24 

(fn GENERIC METHODS)
(defalias 'cl--generic-build-combined-method #[514 "\211\204	 \302\"\207B\303\"\2066 \304B\305#\210\3061( \307\"0\202- \210\302\"\304#\210\211\262\266\202\211\305=\203V \310\311\312!	>\204P \310\313\314D\"\210\315HC\"\207\207" [cl--generic-combined-method-memoization cl-struct-cl--generic-tags cl--generic-standard-method-combination gethash puthash :cl--generic--under-construction (cl--generic-cyclic-definition) cl-generic-combine-methods signal cl--generic-cyclic-definition type-of wrong-type-argument cl--generic 1] 9 (#$ . 36646)])
(byte-code "\300\301\302\303\211$\207" [oclosure--define cl--generic-nnm "Special type for `call-next-method's that just call `no-next-method'." nil] 5)#@153 Return a function that calls METHOD.
FUN is the function that should be called when METHOD calls
`call-next-method'.

(fn GENERIC METHOD &optional FUN)
(defalias 'cl-generic-call-method #[770 "\301!>\204 \302\303\304D\"\210\305H\301!>\204! \302\303\304D\"\210\306H\211\307\267\202: \207\2068 \310\311#!\207\310\312	%\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 4 3 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (nil 42 curried 44)) make-closure #[128 "\302\303\301\300$\207" [V0 V1 apply cl-no-next-method] 6 cl--generic-nnm] #[128 "\304\300\301\203 \305\306\301#\202 \305\307\302\303$#\207" [V0 V1 V2 V3 apply make-closure #[128 "\302\301\206 \300\"\207" [V0 V1 apply] 4 "\n\n(fn &rest CNM-ARGS)"] #[128 "\303\304\302\301\206	 \300$\207" [V0 V1 V2 apply cl-no-next-method] 6 cl--generic-nnm]] 8 "\n\n(fn &rest ARGS)"]] 11 (#$ . 37390)])
(defalias 'cl-method-qualifiers 'cl--generic-method-qualifiers)#@24 

(fn GENERIC METHODS)
(defalias 'cl--generic-standard-method-combination #[514 "\302\211\203o \211@\303!>\204 \304\305\306D\"\210\211\307H\211@\310=\203& \211AA\262\211\311\235\204F \312\313\303!	>\204? \304\305\314\nD\"\210\315H#\210\211@\211\236AB\203[ \241\266\202h B\211\262B\262\266A\266\202\202 \210\211\204y \316\317\"\207\320\302\"\204\205 \316\321\"\207\302\316\322\"\323\324\325\236A!\"\323\326\236A\"\302\236A\211\203\266 \211@\327	#\262A\266\202\202\240 \210\211\204\277 \203\312 \316\330$\262\210\331\236A\211\203\344 \211@\327	#\262A\266\202\202\316 \210\207" [cl-struct-cl--generic-method-tags cl-struct-cl--generic-tags nil type-of signal wrong-type-argument cl--generic-method 2 :extra (nil (:after) (:before) (:around)) error "Unsupported qualifiers in function %S: %S" cl--generic 1 make-closure #[128 "\301\302\300#\207" [V0 apply cl-no-applicable-method] 5 "\n\n(fn &rest ARGS)"] alist-get #[128 "\301\302\300#\207" [V0 apply cl-no-primary-method] 5 "\n\n(fn &rest ARGS)"] #[257 "\301\300\"\207" [V0 cl-generic-call-method] 4 "\n\n(fn M)"] mapcar reverse :before :after cl-generic-call-method #[128 "\302\211\203 \211@\303\"\210A\266\202\202 \210\303\300\"\301\211\203+ \211@\303\"\210A\266\202\202 \210\207" [V0 V1 V2 apply] 7 "\n\n(fn &rest ARGS)"] :around] 13 (#$ . 38416)])#@87 Like `apply' but takes a cl-generic object rather than a function.

(fn GENERIC ARGS)
(defalias 'cl-generic-apply #[514 "\301\302!>\204 \303\304\305D\"\210\306H\"\207" [cl-struct-cl--generic-tags apply type-of signal wrong-type-argument cl--generic 1] 7 (#$ . 39794)])#@28 

(fn METHOD DISPATCH-ARG)
(defalias 'cl--generic-arg-specializer #[514 "\211\250\203 \211\301!>\204 \302\303\304D\"\210\305H8\2023 \306\301!>\204. \302\303\304D\"\210\305H\"A\2067 \307\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 1 assoc t] 8 (#$ . 40074)])#@64 

(fn GENERIC DISPATCH-ARG DISPATCHES-LEFT METHODS-LEFT TYPES)
(defalias 'cl--generic-cache-miss #[1285 "\300\211\203% \211@\301\"\211\235\211\203 \211GBB\262\266A\266\202\202 \210\302\303\304\305\"\"\237\262\306#\207" [nil cl--generic-arg-specializer mapcar cdr sort car-less-than-car cl--generic-make-next-function] 12 (#$ . 40399)])
(byte-code "\300\301\302\301\303\304#\305#\210\300\306\302\306\307\304#\310#\210\3111 \301\312!0\202! \210\304\204, \301\313M\210\306\314M\210\315\301\304\316\304\317%\207" [defalias cl-generic-generalizers cl-generic-define (specializer) nil "Return a list of generalizers for a given SPECIALIZER.\nTo each kind of `specializer', corresponds a `generalizer' which describes\nhow to extract a \"tag\" from an object which will then let us check if this\nobject matches the specializer.  A typical example of a \"tag\" would be the\ntype of an object.  It's called a `generalizer' because it\ntakes a specific object and returns a more general approximation,\ndenoting a set of objects to which it belongs.\nA generalizer gives us the chunk of code which the\ndispatch function needs to use to extract the \"tag\" of an object, as well\nas a function which turns this tag into an ordered list of\n`specializers' that this object matches.\nThe code which extracts the tag should be as fast as possible.\nThe tags should be chosen according to the following rules:\n- The tags should not be too specific: similar objects which match the\n  same list of specializers should ideally use the same (`eql') tag.\n  This insures that the cached computation of the applicable\n  methods for one object can be reused for other objects.\n- Corollary: objects which don't match any of the relevant specializers\n  should ideally all use the same tag (typically nil).\n  This insures that this cache does not grow unnecessarily large.\n- Two different generalizers G1 and G2 should not use the same tag\n  unless they use it for the same set of objects.  IOW, if G1.tag(X1) =\n  G2.tag(X2) then G1.tag(X1) = G2.tag(X1) = G1.tag(X2) = G2.tag(X2).\n- If G1.priority > G2.priority and G1.tag(X1) = G1.tag(X2) and this tag is\n  non-nil, then you have to make sure that the G2.tag(X1) = G2.tag(X2).\n  This is because the method-cache is only indexed with the first non-nil\n  tag (by order of decreasing priority).\n\n(fn SPECIALIZER)" cl-generic-combine-methods (generic methods) "Build the effective method made of METHODS.\nIt should return a function that expects the same arguments as the methods, and\n calls those methods in some appropriate order.\nGENERIC is the generic function (mostly used for its name).\nMETHODS is the list of the selected methods.\nThe METHODS list is sorted from most specific first to most generic last.\nThe function can use `cl-generic-call-method' to create functions that call\nthose methods.\n\n(fn GENERIC METHODS)" (error) t #[257 "\211\301=\205 C\207" [cl--generic-t-generalizer t] 3 "\n\n(fn SPECIALIZER)"] cl--generic-standard-method-combination cl-generic-define-method (specializer) #[257 "\211\301=\203	 C\207\302\303\"\207" [cl--generic-t-generalizer t error "Unknown specializer %S"] 4 "Support for the catch-all t specializer which always matches.\n\n(fn SPECIALIZER)"]] 6)#@40 Return an example specializer.

(fn X)
(defalias 'cl--generic-prefill-generalizer-sample #[257 "\301!>\204	 \207\301!>\204 \302\303\304D\"\210\211\305H\211\306\267\202/ \307\207\310\207\311\207\312\207\313\207\314\207\315\207\207" [cl-struct-cl--generic-generalizer-tags type-of signal wrong-type-argument cl--generic-generalizer 1 #s(hash-table size 7 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (cl--generic-t-generalizer 33 cl--generic-head-generalizer 35 cl--generic-eql-generalizer 37 cl--generic-struct-generalizer 39 cl--generic-typeof-generalizer 41 cl--generic-derived-generalizer 43 cl--generic-oclosure-generalizer 45)) nil (head 'x) (eql 'x) cl--generic integer (derived-mode c-mode) oclosure] 5 (#$ . 43670)])
(cl-generic-define-method 'cl-generic-combine-methods nil '(generic methods) nil #[514 "\300\"\207" [cl--generic-standard-method-combination] 5 "Standard support for :after, :before, :around, and `:extra NAME' qualifiers.\n\n(fn GENERIC METHODS)"])#@81 Return non-nil if CNM is the function that calls `cl-no-next-method'.

(fn CNM)
(defalias 'cl--generic-isnot-nnm-p #[257 "\300!\301=?\207" [oclosure-type cl--generic-nnm] 3 (#$ . 44676)])
(byte-code "\300\301\302\"\210\300\303\304\301#\210\300\305\306\301#\210\300\307\310\301#\210\311\303\312\303\313\314#\315#\210\316\303\314\313\314\317%\210\311\307\312\307\320\314#\321#\210\316\307\314\320\314\322%\210\311\305\312\305\323\314#\324#\210\316\305\314\323\314\325%\207" [define-error cl-no-method "No method" cl-no-next-method "No next method" cl-no-primary-method "No primary method" cl-no-applicable-method "No applicable method" defalias cl-generic-define (generic method &rest args) nil "Function called when `cl-call-next-method' finds no next method.\n\n(fn GENERIC METHOD &rest ARGS)" cl-generic-define-method #[642 "\301\302\303!>\204 \301\304\305D\"\210\306HBB\"\207" [cl-struct-cl--generic-tags signal cl-no-next-method type-of wrong-type-argument cl--generic 1] 9 "\n\n(fn GENERIC METHOD &rest ARGS)"] (generic &rest args) "Function called when a method call finds no applicable method.\n\n(fn GENERIC &rest ARGS)" #[385 "\301\302\303!>\204 \301\304\305D\"\210\306HB\"\207" [cl-struct-cl--generic-tags signal cl-no-applicable-method type-of wrong-type-argument cl--generic 1] 8 "\n\n(fn GENERIC &rest ARGS)"] (generic &rest args) "Function called when a method call finds no primary method.\n\n(fn GENERIC &rest ARGS)" #[385 "\301\302\303!>\204 \301\304\305D\"\210\306HB\"\207" [cl-struct-cl--generic-tags signal cl-no-primary-method type-of wrong-type-argument cl--generic 1] 8 "\n\n(fn GENERIC &rest ARGS)"]] 6)#@140 Function to call the next applicable method.
Can only be used from within the lexical body of a primary or around method.

(fn &rest ARGS)
(defalias 'cl-call-next-method #[128 "\300\301!\207" [error "cl-call-next-method only allowed inside primary and around methods"] 3 (#$ . 46332)])#@120 Return non-nil if there is a next method.
Can only be used from within the lexical body of a primary or around method.
(defalias 'cl-next-method-p #[0 "\300\301!\207" [error "cl-next-method-p only allowed inside primary and around methods"] 2 (#$ . 46624)])
(make-obsolete 'cl-next-method-p "make sure there's always a next method, or catch `cl-no-next-method' instead" "25.1")#@40 

(fn GENERIC QUALIFIERS SPECIALIZERS)
(defalias 'cl-find-method #[771 "\301\302N\303!>\204 \304\305\302D\"\210\211\306H\262#@\207" [cl-struct-cl--generic-tags cl--generic-member-method cl--generic type-of signal wrong-type-argument 3] 11 (#$ . 47007)])#@139 For `find-function-regexp-alist'.  Search for a `cl-defmethod'.
MET-NAME is as returned by `cl--generic-load-hist-format'.

(fn MET-NAME)
(defalias 'cl--generic-search-method #[257 "\300\301\302\303@\"!\304Q\305\306\307\310A@\311#\307\312\313\314	AA\"\315#R\316\314#\206, \305\316\314#\207" ["(\\(?:cl-\\)?defmethod[ 	]+" regexp-quote format "%s" "\\_>" re-search-forward "[^&\"\n]*" mapconcat #[257 "\300\301\302\"!\207" [regexp-quote format "%S"] 5 "\n\n(fn QUALIFIER)"] "[ 	\n]*" #[257 "\300\301\302:\203 A@\202 \"!\207" [regexp-quote format "%S"] 5 "\n\n(fn SPECIALIZER)"] remq t "[ 	\n]*)[^&\"\n]*" nil] 11 (#$ . 47275)])
(defvar cl--generic-find-defgeneric-regexp "(\\(?:cl-\\)?defgeneric[ 	]+%s\\>")
(eval-after-load 'find-func #[0 "\301\302B\211\235\203 \266\202 \211B\210\303\235\203 \207\303B\211\207" [find-function-regexp-alist cl-defmethod cl--generic-search-method (cl-defgeneric . cl--generic-find-defgeneric-regexp)] 3])#@15 

(fn METHOD)
(defalias 'cl--generic-method-info #[257 "\301!>\204 \302\303\304D\"\210\211\305H\301!>\204! \302\303\304D\"\210\306H\301!>\2043 \302\303\304D\"\210\307H\301!>\204F \302\303\304D\"\210\310H\311\312=\204T \202W \313!\314\"\315!\204d \316\202x :\204m \317\320!\210\321!\211\305\322O\323P\262\205\214 \324\325\"\211\203\211 \211A\202\212 \262\325\326=\203\230 A\262\211\203\322 \211@@\327=\203\262 \330\331\332G\"!\202\271 \211A\262\242\326=\203\303 \211\202\306 \211DB\262\210A\266\202\202\232 \210\333\237\"\262E\207" [cl-struct-cl--generic-method-tags type-of signal wrong-type-argument cl--generic-method 1 2 3 4 help-function-arglist curried ignore names documentation "" cl--assertion-failed (consp qualifiers) prin1-to-string -1 " " help-split-fundoc nil t &rest intern format "arg%d" append] 16 (#$ . 48241)])#@13 

(fn ARGS)
(defalias 'cl--generic-upcase-formal-args #[257 "\300\301\"\207" [mapcar #[257 "\2119\203 \300!\211\301H\302=\203 \207\303\226!\207\211:\203' \303\300@!\226!AB\207\207" [symbol-name 0 38 intern] 4 "\n\n(fn ARG)"]] 4 (#$ . 49128)])
(add-hook 'help-fns-describe-function-functions 'cl--generic-describe)#@17 

(fn FUNCTION)
(defalias 'cl--generic-describe #[257 "\2119\205 \211\303N\211\205\330 \304\305!\210\212\306\307`\310Z\"\204 \311c\210\312c\210\313\314\315\316#c\210\317!>\2046 \320\321\303D\"\210\211\322H\211\205\325 \211@\323!\211\242\243\211\242\243\211\242\243\324\325\326\"\203e \326\327\330\n\"O\311P\202f \331\332\333\334\n!B#c)\266\335\317\n!\n>\204\213 \320\321\336\fD\"\210	\310H\317!\n>\204\240 \320\321\336D\"\210\n\337H#\340\341\"\211\203\301 \342\343!c\210\344\345!\346\341%\210\342\347!c\210\266\311\206\311 \350\307\261\266A\266\202\2029 )\262\207" [cl-struct-cl--generic-tags print-quoted cl-struct-cl--generic-method-tags cl--generic require help-mode looking-back "\n\n" 2 "\n" "This is a generic function.\n\n" propertize "Implementations:\n\n" face bold type-of signal wrong-type-argument 3 cl--generic-method-info nil length> 0 string-match " *\\'" "" format "%s%S" cl--generic-upcase-formal-args cl--generic-load-hist-format cl--generic-method 1 find-lisp-object-file-name cl-defmethod substitute-command-keys " in `" help-insert-xref-button help-fns-short-filename help-function-def "'.\n" "Undocumented"] 19 (#$ . 49455)])#@87 Return non-nil if a method with SPECIALIZERS applies to TYPE.

(fn SPECIALIZERS TYPE)
(defalias 'cl--generic-specializers-apply-to-type-p #[514 "\300\211\203G \211@\211\242\301>\203 \211A@\262\211\302>\204@ \232\204= \2119\203@ \211\303N\303N\2058 \211\2058 \304!\235\266\202\203@ \305\262A\266\202\202 \210\207" [nil (subclass eieio--static) (t eieio-default-superclass) cl--class cl--class-allparents t] 10 (#$ . 50649)])#@145 Return a list of all generic functions.
Optional TYPE argument returns only those functions that contain
methods for TYPE.

(fn &optional TYPE)
(defalias 'cl-generic-all-functions #[256 "\300C\301\302\303#!\210\211\242\207" [nil mapatoms make-closure #[257 "\304!\205	 \211\305N\211\205b \3062Y \301\204 \307\306\310\"\210\311!\n>\204) \312\313\305D\"\210\211\314H\211\205V \211@\315\311!>\204B \312\313\316D\"\210\317H\301\"\203O \307\306\310\"\210A\266\202\202, \2620\205b \300\300\242B\240\207" [V0 V1 cl-struct-cl--generic-tags cl-struct-cl--generic-method-tags fboundp cl--generic found throw t type-of signal wrong-type-argument 3 cl--generic-specializers-apply-to-type-p cl--generic-method 1] 9 "\n\n(fn SYMBOL)"]] 7 (#$ . 51091)])#@168 Return info for all methods of FUNCTION (a symbol) applicable to TYPE.
The value returned is a list of elements of the form
(QUALIFIERS ARGS DOC).

(fn FUNCTION TYPE)
(defalias 'cl--generic-method-documentation #[514 "\302N\303\203H \304!>\204 \305\306\302D\"\210\307H\211\203G \211@\310\304!	>\2040 \305\306\311D\"\210\312H\"\203@ \313!B\262A\266\202\202 \210\207" [cl-struct-cl--generic-tags cl-struct-cl--generic-method-tags cl--generic nil type-of signal wrong-type-argument 3 cl--generic-specializers-apply-to-type-p cl--generic-method 1 cl--generic-method-info] 11 (#$ . 51849)])#@306 Return a list of files where METHOD is defined by `cl-defmethod'.
The list will have entries of the form (FILE . (METHOD ...))
where (METHOD ...) contains the qualifiers and specializers of
the method and is a suitable argument for
`find-function-search-for-symbol'.  Filenames are absolute.

(fn METHOD)
(defalias 'cl--generic-method-files #[257 "\301\211\203< \211@\211\242\243\211\211\2033 \211@\211\242\302=\203, \211A@=\203, ABB\262A\266\202\202 \266A\266\202\202 \210\207" [load-history nil cl-defmethod] 10 (#$ . 52458)])
(defvar cl--generic-head-used (make-hash-table :test 'eql))
(defconst cl--generic-head-generalizer (byte-code "\300\301\302\303\304\305%\207" [#[385 "\300\301D\302BB\207" [gethash car-safe (cl--generic-head-used)] 5 "\n\n(fn NAME &rest _)"] #[385 "\242\300=\205	 C\207" [head] 4 "\n\n(fn TAG &rest _)"] record cl--generic-generalizer cl--generic-head-generalizer 80] 8))
(byte-code "\302\303\304\305\306\307%\210\310\311\312\311\313\303\314\"\"C\"B\315\316	#\210\207" [cl--generic-t-generalizer cl--generic-dispatchers cl-generic-define-method cl-generic-generalizers (:extra "head") (specializer) curried #[257 "\300!\210\301\302\303\"\207" [cl--generic-isnot-nnm-p nil make-closure #[128 "\301\302\300#\303\304#\207" [V0 make-closure #[128 "\302\301\206 \300\"\207" [V0 V1 apply] 4 "\n\n(fn &rest ARGS)"] apply #[514 "\211\242\302=\204\n  \207\211A@\303\"\204 \304#\210\266	C\207" [cl--generic-head-used cl--generic-head-generalizer head gethash puthash] 8 "\n\n(fn CL--CNM SPECIALIZER)"]] 6 "Support for (head VAL) specializers.\nThese match if the argument is a cons cell whose car is `eql' to VAL.\n\n(fn SPECIALIZER)"]] 5 "\n\n(fn CL--NM)"] 0 append apply mapcar ((head eql)) puthash #[771 "\300\301\302\"\303\304%\207" [make-hash-table :test eql make-closure #[385 "\305\306\242\f\"\306\300\"\206) \307\303\310\302\301\311\312\306\242\f\"!\313\314!\"%\315\300#\210\211\262\262#\207" [V0 V1 V2 V3 cl--generic-head-used apply gethash cl--generic-cache-miss 0 append (closure (cl-struct-cl--generic-tags cl-struct-cl--generic-method-tags . #1=(cl-struct-cl--generic-generalizer-tags t)) (tag &rest _) (if (eq (car-safe tag) 'head) (list tag))) (closure #1# (_tag &rest _) '(t)) nil puthash] 14 "\n\n(fn ARG &rest ARGS)"]] 10 "\n\n(fn GENERIC DISPATCHES-LEFT METHODS)"]] 7)
(defvar cl--generic-eql-used (make-hash-table :test 'eql))
(defconst cl--generic-eql-generalizer (byte-code "\300\301\302\303\304\305%\207" [#[385 "\300\301BB\207" [gethash (cl--generic-eql-used)] 5 "\n\n(fn NAME &rest _)"] #[385 "\242\300=\205	 A\207" [eql] 4 "\n\n(fn TAG &rest _)"] record cl--generic-generalizer cl--generic-eql-generalizer 100] 8))
(byte-code "\302\303\304\305\304\306%\210\307\310\311\310\312\303\313\"\"C\"B\314\315	#\266\316\310\311\310\312\303\317\"\"C\"B\314\320	#\266\321\310\311\310\312\303\322\"\"C\"B\314\323	#\266\324\310\311\310\312\303\325\"\"C\"B\314\326	#\210\207" [cl--generic-t-generalizer cl--generic-dispatchers cl-generic-define-method cl-generic-generalizers nil ((specializer (head eql))) #[257 "\211A@\2119\203 \302!\203 \303\304\"\202 \211\305\"A\235\203% \211\202( B\262\306\307B#\266	C\207" [cl--generic-eql-used cl--generic-eql-generalizer macroexp-const-p eval t gethash puthash eql] 8 "Support for (eql VAL) specializers.\nThese match if the argument is `eql' to VAL.\n\n(fn SPECIALIZER)"] 0 append apply mapcar ((eql nil)) puthash #[771 "\300\301\302\"\303\304%\207" [make-hash-table :test eql make-closure #[385 "\305\306\f\"\306\300\"\206' \307\303\310\302\301\311\312\306\f\"!\313\314!\"%\315\300#\210\211\262\262#\207" [V0 V1 V2 V3 cl--generic-eql-used apply gethash cl--generic-cache-miss 0 append #3=(closure (cl-struct-cl--generic-tags cl-struct-cl--generic-method-tags . #1=(cl-struct-cl--generic-generalizer-tags t)) (tag &rest _) (if (eq (car-safe tag) 'eql) (cdr tag))) #4=(closure #1# (_tag &rest _) '(t)) nil puthash] 14 "\n\n(fn ARG &rest ARGS)"]] 10 "\n\n(fn GENERIC DISPATCHES-LEFT METHODS)"] #2=(&context . window-system) ((eql nil)) #[771 "\300\301\302\"\303\304%\207" [make-hash-table :test eql make-closure #[128 "\f\306\307\"\307\300\"\206( \310\303\311\302\301\312\313\307\n\"!\314\315!\"%\316\300#\210\211\262\262\"\207" [V0 V1 V2 V3 window-system cl--generic-eql-used apply gethash cl--generic-cache-miss #2# append #3# #4# nil puthash] 14 "\n\n(fn &rest ARGS)"]] 10 "\n\n(fn GENERIC DISPATCHES-LEFT METHODS)"] #5=(&context terminal-parameter nil 'xterm--get-selection) ((eql nil)) #[771 "\300\301\302\"\303\304%\207" [make-hash-table :test eql make-closure #[128 "\305\306\307\"\310\311\f\"\311\300\"\206+ \312\303\313\302\301\314\315\311\n\f\"!\316\306!\"%\317\300#\210\211\262\262\"\207" [V0 V1 V2 V3 cl--generic-eql-used terminal-parameter nil xterm--get-selection apply gethash cl--generic-cache-miss #5# append #3# #4# puthash] 14 "\n\n(fn &rest ARGS)"]] 10 "\n\n(fn GENERIC DISPATCHES-LEFT METHODS)"] #6=(&context terminal-parameter nil 'xterm--set-selection) ((eql nil)) #[771 "\300\301\302\"\303\304%\207" [make-hash-table :test eql make-closure #[128 "\305\306\307\"\310\311\f\"\311\300\"\206+ \312\303\313\302\301\314\315\311\n\f\"!\316\306!\"%\317\300#\210\211\262\262\"\207" [V0 V1 V2 V3 cl--generic-eql-used terminal-parameter nil xterm--set-selection apply gethash cl--generic-cache-miss #6# append #3# #4# puthash] 14 "\n\n(fn &rest ARGS)"]] 10 "\n\n(fn GENERIC DISPATCHES-LEFT METHODS)"]] 7)#@21 

(fn NAME &rest _)
(defalias 'cl--generic-struct-tag #[385 "\300\301D\302BBB\207" [if type-of ('null)] 6 (#$ . 57997)])#@20 

(fn TAG &rest _)
(defalias 'cl--generic-struct-specializers #[385 "9\205 \301N\302!>\205 \303!\262\207" [cl-struct-cl-structure-class-tags cl--class type-of cl--class-allparents] 5 (#$ . 58125)])
(defconst cl--generic-struct-generalizer (record 'cl--generic-generalizer 'cl--generic-struct-generalizer 50 'cl--generic-struct-tag 'cl--generic-struct-specializers))
(byte-code "\302\303\304\305\306\307%\210\310\311\312\311\313\303\314\"\"C\"B\315\316	#\210\207" [cl--generic-t-generalizer cl--generic-dispatchers cl-generic-define-method cl-generic-generalizers (:extra "cl-struct") (type) curried #[257 "\300!\210\301\302\303\"\207" [cl--generic-isnot-nnm-p nil make-closure #[128 "\301\302\300#\303\304#\207" [V0 make-closure #[128 "\302\301\206 \300\"\207" [V0 V1 apply] 4 "\n\n(fn &rest ARGS)"] apply #[514 "\2119\203_ \211\302N\303!>\205Z \303!>\204 \304\305\306D\"\210\211\307H\203? \310\311\303!>\2048 \304\305\306D\"\210\307H#\205Z \303!>\204N \304\305\306D\"\210\211\312H\203X \313\314!\210	C\262\206a  \207" [cl-struct-cl-structure-class-tags cl--generic-struct-generalizer cl--class type-of signal wrong-type-argument cl-structure-class 7 error "Can't dispatch on cl-struct %S: type is %S" 8 cl--assertion-failed (null (cl--struct-class-named class))] 10 "\n\n(fn CL--CNM TYPE)"]] 6 "Support for dispatch on types defined by `cl-defstruct'.\n\n(fn TYPE)"]] 5 "\n\n(fn CL--NM)"] 0 append apply mapcar (cl--generic-generalizer) puthash #[771 "\300\301\302\"\303\304%\207" [make-hash-table :test eql make-closure #[385 "\304\203 \305!\202\f \306\307\300\"\2066 \310\303\311\302\301\312\313\n\203& \305!\202' \306!\314\315!\"%\316\300#\210\211\262\262#\207" [V0 V1 V2 V3 apply type-of null gethash cl--generic-cache-miss 0 append cl--generic-struct-specializers (closure (cl-struct-cl--generic-generalizer-tags t) (_tag &rest _) '(t)) nil puthash] 13 "\n\n(fn ARG &rest ARGS)"]] 10 "\n\n(fn GENERIC DISPATCHES-LEFT METHODS)"]] 7)
(defconst cl--generic-typeof-generalizer (byte-code "\300\301\302\303\304\305%\207" [#[385 "\300\301D\302BBB\207" [if type-of ('null)] 6 "\n\n(fn NAME &rest _)"] #[385 "9\205 \236\207" [cl--typeof-types] 4 "\n\n(fn TAG &rest _)"] record cl--generic-generalizer cl--generic-typeof-generalizer 10] 8))
(byte-code "\302\303\304\305\306\307%\210\310\311\312\311\313\303\314\"\"C\"B\315\316	#\266\317\311\312\311\313\303\320\"\"C\"B\315\321	#\266\310\311\312\311\313\303\322\"\"C\"B\315\323	#\210\207" [cl--generic-t-generalizer cl--generic-dispatchers cl-generic-define-method cl-generic-generalizers (:extra "typeof") (type) curried #[257 "\300!\210\301\302\303\"\207" [cl--generic-isnot-nnm-p nil make-closure #[128 "\301\302\300#\303\304#\207" [V0 make-closure #[128 "\302\301\206 \300\"\207" [V0 V1 apply] 4 "\n\n(fn &rest ARGS)"] apply #[514 "\211>\203 	C\206  \207" [cl--all-builtin-types cl--generic-typeof-generalizer] 4 "\n\n(fn CL--CNM TYPE)"]] 6 "Support for dispatch on builtin types.\nSee the full list and their hierarchy in `cl--typeof-types'.\n\n(fn TYPE)"]] 5 "\n\n(fn CL--NM)"] 0 append apply mapcar (integer) puthash #[771 "\300\301\302\"\303\304%\207" [make-hash-table :test eql make-closure #[385 "\304\203 \305!\202\f \306\307\300\"\2066 \310\303\311\302\301\312\313\n\203& \305!\202' \306!\314\315!\"%\316\300#\210\211\262\262#\207" [V0 V1 V2 V3 apply type-of null gethash cl--generic-cache-miss 0 append #2=(closure (cl-struct-cl--generic-tags cl-struct-cl--generic-method-tags . #1=(cl-struct-cl--generic-generalizer-tags t)) (tag &rest _) (and (symbolp tag) (assq tag cl--typeof-types))) #3=(closure #1# (_tag &rest _) '(t)) nil puthash] 13 "\n\n(fn ARG &rest ARGS)"]] 10 "\n\n(fn GENERIC DISPATCHES-LEFT METHODS)"] 1 (integer) #[771 "\300\301\302\"\303\304%\207" [make-hash-table :test eql make-closure #[642 "\304\203 \305!\202\f \306\307\300\"\2066 \310\303\311\302\301\312\313\n\203& \305!\202' \306!\314\315!\"%\316\300#\210\211\262\262$\207" [V0 V1 V2 V3 apply type-of null gethash cl--generic-cache-miss 1 append #2# #3# nil puthash] 14 "\n\n(fn ARG0 ARG &rest ARGS)"]] 10 "\n\n(fn GENERIC DISPATCHES-LEFT METHODS)"] (cl--generic-generalizer integer) #[771 "\300\301\302\"\303\304%\207" [make-hash-table :test eql make-closure #[385 "\304\203 \305!\202\f \306\206 \203 \305!\202 \306\307\300\"\206S \310\303\311\302\301\312\313\n\2034 \305!\2025 \306!\314\203C \305\f!\202D \306!\315\316!#%\317\300#\210\211\262\262#\207" [V0 V1 V2 V3 apply type-of null gethash cl--generic-cache-miss 0 append cl--generic-struct-specializers #2# #3# nil puthash] 14 "\n\n(fn ARG &rest ARGS)"]] 10 "\n\n(fn GENERIC DISPATCHES-LEFT METHODS)"]] 7)#@21 

(fn MODE &rest _)
(defalias 'cl--generic-derived-specializers #[385 "\300\203 \301DB\262\302N\262\202 \211\237\207" [nil derived-mode derived-mode-parent] 5 (#$ . 62872)])
(defconst cl--generic-derived-generalizer (byte-code "\300\301\302\303\304\305%\207" [#[257 "\300\301D\302DF\207" [and symbolp functionp] 5 "\n\n(fn NAME)"] record cl--generic-generalizer cl--generic-derived-generalizer 90 cl--generic-derived-specializers] 7))
(byte-code "\300\301\302\303\302\304%\210\305\306\307\310#\207" [cl-generic-define-method cl-generic-generalizers nil ((_specializer (head derived-mode))) #[257 "C\207" [cl--generic-derived-generalizer] 2 "Support for (derived-mode MODE) specializers.\nUsed internally for the (major-mode MODE) context specializers.\n\n(fn SPECIALIZER)"] put major-mode cl-generic--context-rewriter #[385 "\300:\203 \203 \301\302!\210\202 \303BBD\207" [major-mode cl--assertion-failed (null modes) derived-mode] 6 "\n\n(fn MODE &rest MODES)"]] 6)#@21 

(fn NAME &rest _)
(defalias 'cl--generic-oclosure-tag #[385 "\300D\207" [oclosure-type] 4 (#$ . 63864)])#@20 

(fn TAG &rest _)
(defalias 'cl-generic--oclosure-specializers #[385 "9\205$ \301N\302!>\205\" \302!>\204 \303\304\305D\"\210\211\306H\262\207" [cl-struct-oclosure--class-tags cl--class type-of signal wrong-type-argument oclosure--class 6] 7 (#$ . 63977)])
(defconst cl--generic-oclosure-generalizer (record 'cl--generic-generalizer 'cl--generic-oclosure-generalizer 51 'cl--generic-oclosure-tag 'cl-generic--oclosure-specializers))
(byte-code "\302\303\304\305\306\307%\210\310\311\312\311\313\303\314\"\"C\"B\315\316	#\266\302\317\320\321\320\322%\210\323\324!\207" [cl--generic-t-generalizer cl--generic-dispatchers cl-generic-define-method cl-generic-generalizers (:extra "oclosure-struct") (type) curried #[257 "\300!\210\301\302\303\"\207" [cl--generic-isnot-nnm-p nil make-closure #[128 "\301\302\300#\303\304#\207" [V0 make-closure #[128 "\302\301\206 \300\"\207" [V0 V1 apply] 4 "\n\n(fn &rest ARGS)"] apply #[514 "\2119\203 \211\302N\303!>\205 	C\262\206  \207" [cl-struct-oclosure--class-tags cl--generic-oclosure-generalizer cl--class type-of] 5 "\n\n(fn CL--CNM TYPE)"]] 6 "Support for dispatch on types defined by `oclosure-define'.\n\n(fn TYPE)"]] 5 "\n\n(fn CL--NM)"] 0 append apply mapcar (oclosure) puthash #[771 "\300\301\302\"\303\304%\207" [make-hash-table :test eql make-closure #[385 "\304\305!\306\300\"\206% \307\303\310\302\301\311\312\305!!\313\314!\"%\315\300#\210\211\262\262#\207" [V0 V1 V2 V3 apply oclosure-type gethash cl--generic-cache-miss 0 append cl-generic--oclosure-specializers (closure (cl-struct-cl--generic-generalizer-tags t) (_tag &rest _) '(t)) nil puthash] 13 "\n\n(fn ARG &rest ARGS)"]] 10 "\n\n(fn GENERIC DISPATCHES-LEFT METHODS)"] loadhist-unload-element nil ((x (head cl-defmethod))) #[257 "\211A\211\242\243\211\242\243\301\302\"\211\205F \303!>\204! \304\305\306D\"\210\211\307H\310#\211\205D \303!>\204< \304\305\306D\"\210\307\311@\"I\266\202\207" [cl-struct-cl--generic-tags cl-generic-ensure-function noerror type-of signal wrong-type-argument cl--generic 3 cl--generic-member-method delq] 14 "\n\n(fn X)"] provide cl-generic] 7)
