     (insert pad "}")))
 
 (defstruct (js2-finally-node
-            (:include js2-stmt-node)
+            (:include js2-node)
             (:constructor nil)
             (:constructor make-js2-finally-node (&key (type js2-FINALLY)
                                                       (pos js2-ts-cursor)
                                                       len
-                                                      block)))
+                                                      body)))
   "AST node for a finally clause."
-  block)
+  body)  ; a `js2-node', often but not always a block node
 
 (put 'cl-struct-js2-finally-node 'js2-visitor 'js2-visit-finally-node)
 (put 'cl-struct-js2-finally-node 'js2-printer 'js2-print-finally-node)
 
 (defun js2-visit-finally-node (n v)
-  (js2-visit-ast (js2-finally-node-block n) v))
+  (js2-visit-ast (js2-finally-node-body n) v))
 
 (defun js2-print-finally-node (n i)
   (let ((pad (js2-make-pad i)))
     (insert " finally {\n")
-    (js2-print-body (js2-finally-node-block n) (1+ i))
+    (js2-print-body (js2-finally-node-body n) (1+ i))
     (insert pad "}\n")))
 
 (defstruct (js2-switch-node
-            (:include js2-stmt-node)
+            (:include js2-node)
             (:constructor nil)
             (:constructor make-js2-switch-node (&key (type js2-SWITCH)
                                                      (pos js2-ts-cursor)

  (setq js2-mode-buffer-dirty-p t)
  (js2-mode-hide-overlay)
  (js2-mode-reset-timer))

(defun js2-reparse (&optional force)
  "Re-parse current buffer after user finishes some data entry.

                                                          (pos js2-ts-cursor)
                                                          len
                                                          name)))
  "AST node for an XML end-tag.  Not currently used."
  name)  ; a `js2-xml-name-node'

(put 'cl-struct-js2-xml-end-tag-node 'js2-visitor 'js2-visit-xml-end-tag)
