anchor.diff:                        :arguments () :priority :LAST
                         :docstring "Catchall command handler for when no command matched.")
   
  +
  +(defclass group-handler (command-handler)
  +  ((%subcommands :initarg :subcommands :initform () :accessor subcommands))
  +  (:documentation ""))
  +
  +(defmethod apropos-command-handler ((handler group-handler))
  +  (format NIL "[Command Group] ~s matching ~s~%~
  +               ~:[No docstring available.~;Docstring: ~:*~a~]~%~
  +               Commands in this group: ~{~a~^, ~}"
  +          (identifier handler) (pattern handler) (docstring handler) (subcommands handler)))
  +
   (defun escape-regex-symbols (string)
     (cl-ppcre:regex-replace-all "([\\\\\\^\\$\\.\\|\\?\\*\\+\\(\\)\\[\\]\\{\\}])" string '("\\" 0)))
   
   (defmacro define-group (name &key documentation pattern)
     (unless pattern
       (setf pattern (format NIL "^~a(.*)" (escape-regex-symbols name))))
  -  )
  +  `(set-command-function ',name ,pattern #'(lambda (event &rest args)
  +                                             (if args
  +                                                 (respond event (apropos-command-handler (message event)))
  +                                                 (respond event (apropos-command-handler (command-handler ',name)))))
  +                         :docstring ,documentation :priority :AFTER))
   
   (defmacro define-command (name (&rest args) (&key authorization documentation (eventvar 'event) module-name (modulevar 'module) pattern priority) &body body)
     )
  
positive.code: 
  (defvar *cmd-map* (make-hash-table))
  (defvar *cmd-priority-array* (make-array 0))
  (defvar *cmd-groups-map* (make-hash-table))
  
  (defclass command-handler ()
    ((%identifier :initarg :identifier :initform (error "Identifier required.") :accessor identifier)
  
negative.code:   "Remove the COMMAND-HANDLER associated with the given IDENTIFIER."
    (assert (symbolp identifier) () "IDENTIFIER has to be a symbol.")
    (remhash identifier *cmd-map*)
    (generate-command-priority-cache)
    identifier)
  
  (defun set-command-function (identifier cmd-pattern handler-function &key (arguments () a-p) (priority (length cmd-pattern)) docstring)
    "Set a new handler function for a command pattern.
  
  IDENTIFIER       --- A symbol identifying your handler.
  