anchor.diff:  	     (:include leaf
   		       (source-name '.anonymous.)
   		       (where-from :defined)
  +		       ;; No, obey JS rule.
   		       (type (specifier-type 'function))))
     ;; the name of FUNCTIONAL for debugging purposes, or NIL if we
     ;; should just let the SOURCE-NAME fall through
  
positive.code: 
  (defstruct lvar
    ;; The node which receives this value. NIL only temporarily.
    (dest nil :type (or node null))
    ;; cached type of this lvar's value. Default will be UNDEFINED.
    (derived-type :undefined :type +js-type+)
    ;; the node (if unique) or a list of nodes where this lvar is used.
    (uses nil :type (or node list))
    ;; set to true when something about this lvar's value has changed.
    (reoptimize t :type boolean)
    ;; Cached type which is checked by DEST. If NIL, then this must be
    ;; recomputed: see LVAR-EXTERNALLY-CHECKABLE-TYPE.
    (externally-checkable-type :undefined :type +js-type+))
  
  ;;; NODE will be the generic interface of all different type of nodes,
  
negative.code:   ;;    marked for deletion.
    ;;    :ZOMBIE
    ;;    Effectless [MV-]LET; has no BIND node.
    ;; TODO: Some of them are not valid semantic in JS, remove them.
    (kind nil :type (member nil :optional :deleted :external :toplevel
                            :escape :cleanup :let :mv-let :assignment
                            :zombie :toplevel-xep))
    ;; KIND was :TOPLEVEL. Now it must be set explicitly, both for
    ;; :TOPLEVEL functions and for any other kind of functions that we
    ;; want to dump or return from #'CL:COMPILE or whatever.
  