anchor.diff:                        (collect (list (find-symbol (symbol-name var) *package*)
                                        `(getf $data$ ,var))))))
       `(defun ,(intern (lispify-string (caar args))) (,@(unless binds '(&optional)) $data$)       
  -       (declare (optimize (debug 0) (speed 3)))
  +       (declare ,@(if (or (not *template-variables*)
  +                         (has-data-used-p body))
  +                     '((ignore $data$)))
  +                (optimize (debug 0) (speed 3)))
          (let ((*loops-vars* nil)
                ,@binds)
            (macrolet ((random-int (arg) `(random ,arg))
  
positive.code: (in-package #:closure-template)
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; Helper
  ;; string tree
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  (defmacro with-template-output (&body body)
  
negative.code:                             'function
                              symbol))))
      (translate-item backend
                    (cdr args))))
  
  (defun has-data-used-p (body)
    (cond
      ((and (consp body)
            (eql (car body) 'has-data)) t)
      ((consp body) (iter (for item in (cdr body))
                          (finding t such-that  (has-data-used-p item))))
      (t nil)))
  
  (defmethod translate-named-item ((backend common-lisp-backend) (item (eql 'closure-template.parser:template)) args)
    (let* ((*template-variables* nil)
  