anchor.diff:  ;;; cond
   (defprinter js-cond (clauses)
     (loop for (test body-block) in clauses
  -        for start = "if (" then "else if ("
  +        for start = "if (" then " else if ("
           do (progn (if (string= test "true")
  -                      (progn (write-string "else {")
  -                             (fresh-line))
  +                      (write-string " else ")
                         (progn (ps-print test)
  -                             (write-string ") {")
  -                             (fresh-line)))
  -                  (ps-print body-block)
  -                  (write-char #\}))))
  -
  -(defprinter js-statement-if (test then else)
  +                             (write-string ") ")))
  +                  (ps-print body-block))))
  +
  +(defprinter js-statement-if (test then-block else-block)
     (write-string "if (")
     (ps-print test)
  -  (write-string ") {")
  -  (fresh-line)
  -  (ps-print then)
  -  (fresh-line)
  -  (when else
  -      (write-string "} else {")
  -      (fresh-line)
  -      (ps-print else))
  -  (write-char #\}))
  +  (write-string ") ")
  +  (ps-print then-block)
  +  (when else-block
  +      (write-string " else ")
  +      (ps-print else-block)))
   
   (defprinter js-expression-if (test then else)
     (ps-print test)
  
positive.code:   (write-string " }"))
  
  (defprinter js-slot-value (obj slot)
    (if (and (listp obj) (member (car obj) '(js-block js-expression-if)))
        (parenthesize-print obj)
        (ps-print obj))
    (if (and (listp slot) (eql 'script-quote (car slot)))
  
negative.code:   ;; TODO: this may not be the best way to add ()'s around lambdas
    ;; probably there is or should be a more general solution working
    ;; in other situations involving lambda's
    (if (or (numberp object) (and (consp object) (member (car object) '(js-lambda js-object operator js-expression-if))))
        (parenthesize-print object)
        (ps-print object))
    (write-string (js-translate-symbol method))
  