emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master b8e3ab9 2/2: In ada-mode, wisi: release Ada mode 6.2.0, w


From: Stephen Leake
Subject: [elpa] master b8e3ab9 2/2: In ada-mode, wisi: release Ada mode 6.2.0, wisi 1.2.0.
Date: Tue, 13 Aug 2019 19:15:46 -0400 (EDT)

branch: master
commit b8e3ab9d672f6407828dda032441ad96e102d83c
Author: Stephen Leake <address@hidden>
Commit: Stephen Leake <address@hidden>

    In ada-mode, wisi: release Ada mode 6.2.0, wisi 1.2.0.
---
 packages/ada-mode/NEWS                             |   28 +-
 packages/ada-mode/README                           |    2 +-
 packages/ada-mode/ada-build.el                     |    6 +-
 packages/ada-mode/ada-fix-error.el                 |    3 +-
 packages/ada-mode/ada-gnat-compile.el              |   76 +-
 packages/ada-mode/ada-lalr-elisp.el                | 4373 ---------
 packages/ada-mode/ada-mode.el                      | 5977 ++++++------
 packages/ada-mode/ada-mode.info                    |  259 +-
 packages/ada-mode/ada-mode.texi                    |  141 +-
 packages/ada-mode/ada-process.el                   |  227 +-
 packages/ada-mode/ada-skel.el                      |   34 +-
 packages/ada-mode/ada-wisi-elisp-parse.el          |  337 -
 packages/ada-mode/ada-wisi-opentoken.el            |   99 -
 packages/ada-mode/ada-wisi.el                      | 1762 ++--
 packages/ada-mode/ada.wy                           |  304 +-
 packages/ada-mode/ada_lr1_parse_table.txt.gz       |  Bin 2955113 -> 3170831 
bytes
 packages/ada-mode/ada_process_actions.adb          |  417 +-
 packages/ada-mode/ada_process_actions.ads          |   40 +-
 packages/ada-mode/ada_process_lalr_main.adb        | 9791 +++++++++++---------
 packages/ada-mode/ada_process_lr1_main.adb         |   18 +-
 packages/ada-mode/ada_re2c.c                       |    4 +-
 packages/ada-mode/build.sh                         |    2 +-
 packages/ada-mode/dir                              |    6 +
 packages/ada-mode/gnat-core.el                     |    1 +
 packages/ada-mode/gpr-lalr-elisp.el                |  542 --
 packages/ada-mode/gpr-mode.info                    |   38 +-
 packages/ada-mode/gpr-mode.texi                    |    9 +-
 packages/ada-mode/gpr-process.el                   |   86 +-
 packages/ada-mode/gpr-wisi.el                      |  283 +-
 packages/ada-mode/gpr.wy                           |  742 +-
 packages/ada-mode/gpr_mode_wisi_parse.ads          |    4 +-
 packages/ada-mode/gpr_process_actions.adb          |   12 +-
 ...r_process_lr1_main.adb => gpr_process_main.adb} |  586 +-
 ...r_process_lr1_main.ads => gpr_process_main.ads} |    4 +-
 packages/ada-mode/run_ada_lalr_parse.ads           |   32 -
 packages/ada-mode/run_ada_libadalang_parse.ads     |   25 -
 packages/ada-mode/run_ada_lr1_parse.ads            |   33 -
 packages/ada-mode/run_gpr_parse.ads                |   31 -
 packages/ada-mode/run_wisi_common_parse.adb        |  293 -
 packages/ada-mode/wisi-ada.adb                     |  394 +-
 packages/ada-mode/wisi-ada.ads                     |   12 +-
 packages/ada-mode/wisi-gpr.adb                     |    5 +-
 packages/ada-mode/wisi-gpr.ads                     |    3 +-
 .../wisitoken-parse-lr-mckenzie_recover-ada.adb    |   39 +-
 packages/wisi/NEWS                                 |   45 +-
 packages/wisi/README                               |    2 +-
 .../{ada-mode => wisi}/emacs_wisi_common_parse.adb |  126 +-
 .../{ada-mode => wisi}/emacs_wisi_common_parse.ads |  275 +-
 .../{ada-mode => wisi}/gen_emacs_wisi_lr_parse.adb |    2 +-
 .../{ada-mode => wisi}/gen_emacs_wisi_lr_parse.ads |    0
 .../gen_emacs_wisi_lr_text_rep_parse.adb           |    2 +-
 .../gen_emacs_wisi_lr_text_rep_parse.ads           |    0
 .../gen_emacs_wisi_packrat_parse.adb               |    0
 .../gen_emacs_wisi_packrat_parse.ads               |    0
 .../gen_run_wisi_libadalang_parse.adb              |    0
 .../gen_run_wisi_libadalang_parse.ads              |    0
 .../{ada-mode => wisi}/gen_run_wisi_lr_parse.adb   |    0
 .../{ada-mode => wisi}/gen_run_wisi_lr_parse.ads   |    0
 .../gen_run_wisi_lr_text_rep_parse.adb             |    0
 .../gen_run_wisi_lr_text_rep_parse.ads             |    0
 .../gen_run_wisi_packrat_parse.adb                 |    0
 .../gen_run_wisi_packrat_parse.ads                 |    0
 packages/wisi/run_wisi_common_parse.adb            |  343 +
 .../{ada-mode => wisi}/run_wisi_common_parse.ads   |  128 +-
 packages/wisi/sal-gen_bounded_definite_queues.adb  |  119 +-
 packages/wisi/sal-gen_bounded_definite_queues.ads  |  106 +-
 ...-gen_bounded_definite_stacks-gen_image_aux.adb} |   27 +-
 ...l-gen_bounded_definite_stacks-gen_image_aux.ads |   27 +
 packages/wisi/sal-gen_bounded_definite_stacks.adb  |   82 +
 packages/wisi/sal-gen_bounded_definite_stacks.ads  |  103 +
 .../sal-gen_bounded_definite_vectors-gen_image.adb |   79 +-
 .../sal-gen_bounded_definite_vectors-gen_refs.adb  |   35 +
 .../sal-gen_bounded_definite_vectors-gen_refs.ads  |   54 +
 ...sal-gen_bounded_definite_vectors-gen_sorted.ads |   52 -
 packages/wisi/sal-gen_bounded_definite_vectors.adb |  344 +-
 packages/wisi/sal-gen_bounded_definite_vectors.ads |  299 +-
 ...nded_definite_vectors_sorted-gen_image_aux.adb} |   20 +-
 ...unded_definite_vectors_sorted-gen_image_aux.ads |   23 +
 ...en_bounded_definite_vectors_sorted-gen_refs.adb |   29 +
 ...en_bounded_definite_vectors_sorted-gen_refs.ads |   39 +
 ...=> sal-gen_bounded_definite_vectors_sorted.adb} |  172 +-
 .../sal-gen_bounded_definite_vectors_sorted.ads    |   85 +
 .../wisi/sal-gen_definite_doubly_linked_lists.adb  |   55 +-
 .../wisi/sal-gen_definite_doubly_linked_lists.ads  |   43 +-
 ...sal-gen_definite_doubly_linked_lists_sorted.adb | 1084 +--
 ...sal-gen_definite_doubly_linked_lists_sorted.ads |  372 +-
 packages/wisi/sal-gen_graphs.adb                   |   21 +-
 .../sal-gen_indefinite_doubly_linked_lists.adb     |  412 +-
 .../sal-gen_indefinite_doubly_linked_lists.ads     |   40 +-
 ...-gen_unbounded_definite_min_heaps_fibonacci.adb |   45 +-
 ...-gen_unbounded_definite_min_heaps_fibonacci.ads |   27 +-
 .../wisi/sal-gen_unbounded_definite_queues.adb     |    4 +-
 .../wisi/sal-gen_unbounded_definite_queues.ads     |    6 +-
 .../sal-gen_unbounded_definite_red_black_trees.adb |   34 +-
 .../sal-gen_unbounded_definite_red_black_trees.ads |   57 +-
 .../wisi/sal-gen_unbounded_definite_stacks.adb     |   12 +-
 .../wisi/sal-gen_unbounded_definite_stacks.ads     |   28 +-
 .../wisi/sal-gen_unbounded_definite_vectors.adb    |   59 +-
 .../wisi/sal-gen_unbounded_definite_vectors.ads    |  471 +-
 .../sal-gen_unbounded_definite_vectors_sorted.adb  |  368 +
 .../sal-gen_unbounded_definite_vectors_sorted.ads  |  170 +
 packages/wisi/sal.adb                              |    2 +-
 packages/wisi/wisi-compile.el                      |  225 -
 packages/wisi/wisi-elisp-lexer.el                  |  393 -
 packages/wisi/wisi-elisp-parse.el                  | 1721 ----
 packages/wisi/wisi-parse-common.el                 |  778 +-
 packages/wisi/wisi-process-parse.el                | 1617 ++--
 packages/wisi/wisi-run-indent-test.el              |  631 +-
 packages/wisi/wisi-tests.el                        |   30 +-
 packages/wisi/wisi.adb                             |  582 +-
 packages/wisi/wisi.ads                             |  115 +-
 packages/wisi/wisi.el                              |  151 +-
 packages/wisi/{wisitoken.gpr => wisi.gpr}          |   47 +-
 packages/wisi/wisitoken-bnf-generate.adb           |   21 +-
 packages/wisi/wisitoken-bnf-generate_grammar.adb   |   14 +-
 packages/wisi/wisitoken-bnf-generate_utils.adb     |  196 +-
 packages/wisi/wisitoken-bnf-generate_utils.ads     |   22 +-
 packages/wisi/wisitoken-bnf-output_ada_common.adb  |   74 +-
 packages/wisi/wisitoken-bnf-output_ada_emacs.adb   |  129 +-
 packages/wisi/wisitoken-bnf-output_elisp.adb       |  293 -
 .../wisi/wisitoken-bnf-output_elisp_common.adb     |   58 +-
 .../wisi/wisitoken-bnf-output_elisp_common.ads     |    7 +-
 packages/wisi/wisitoken-bnf.adb                    |   15 +-
 packages/wisi/wisitoken-bnf.ads                    |   26 +-
 .../wisi/wisitoken-generate-lr-lalr_generate.adb   |    9 +-
 .../wisi/wisitoken-generate-lr-lr1_generate.adb    |    2 +-
 packages/wisi/wisitoken-generate-lr.adb            |  228 +-
 packages/wisi/wisitoken-generate-lr.ads            |    4 +-
 packages/wisi/wisitoken-generate-lr1_items.adb     |    4 +-
 packages/wisi/wisitoken-generate.adb               |    3 +-
 .../wisitoken-parse-lr-mckenzie_recover-base.adb   |   31 +-
 .../wisitoken-parse-lr-mckenzie_recover-base.ads   |    3 +-
 ...wisitoken-parse-lr-mckenzie_recover-explore.adb |  613 +-
 .../wisitoken-parse-lr-mckenzie_recover-parse.adb  |   75 +-
 .../wisitoken-parse-lr-mckenzie_recover-parse.ads  |   19 +-
 .../wisi/wisitoken-parse-lr-mckenzie_recover.adb   |  521 +-
 .../wisi/wisitoken-parse-lr-mckenzie_recover.ads   |   59 +-
 packages/wisi/wisitoken-parse-lr-parser.adb        |   60 +-
 packages/wisi/wisitoken-parse-lr-parser.ads        |   12 +-
 packages/wisi/wisitoken-parse-lr-parser_lists.adb  |   36 +-
 packages/wisi/wisitoken-parse-lr-parser_lists.ads  |    1 +
 .../wisi/wisitoken-parse-lr-parser_no_recover.adb  |   13 +-
 packages/wisi/wisitoken-parse-lr.adb               |  408 +-
 packages/wisi/wisitoken-parse-lr.ads               |  136 +-
 .../wisi/wisitoken-parse-packrat-generated.adb     |    6 +-
 .../wisi/wisitoken-parse-packrat-procedural.adb    |    5 +-
 packages/wisi/wisitoken-parse.adb                  |    4 +-
 packages/wisi/wisitoken-syntax_trees-lr_utils.adb  |  220 +
 packages/wisi/wisitoken-syntax_trees-lr_utils.ads  |   88 +
 packages/wisi/wisitoken-syntax_trees.adb           |   56 +-
 packages/wisi/wisitoken-syntax_trees.ads           |   19 +-
 packages/wisi/wisitoken-wisi_ada.adb               |   22 +-
 packages/wisi/wisitoken.ads                        |   13 +-
 packages/wisi/wisitoken_grammar_main.adb           |  177 +-
 packages/wisi/wisitoken_grammar_main.ads           |    1 +
 packages/wisi/wisitoken_grammar_runtime.adb        |  152 +-
 156 files changed, 18683 insertions(+), 24470 deletions(-)

diff --git a/packages/ada-mode/NEWS b/packages/ada-mode/NEWS
index 6a7e722..5cbd336 100644
--- a/packages/ada-mode/NEWS
+++ b/packages/ada-mode/NEWS
@@ -1,13 +1,35 @@
 GNU Emacs Ada mode NEWS -- history of user-visible changes.
 
-Copyright (C) 2018 Free Software Foundation, Inc.
-See the end of the file for license conditions.
+Copyright (C) 2019 Free Software Foundation, Inc.
 
 Please send ada-mode bug reports to address@hidden, with
 'ada-mode' in the subject. If possible, use M-x report-emacs-bug.
 
 
-* Ada Mode
+* Ada Mode 6.2.1
+
+** parser Ada language protocol version 2
+
+** The elisp parser is deleted; only the Ada process parser is
+   supported.
+
+** New Ada menu entry "Refactor" supports converting between
+   Object.Method (...) and Method (Object, ...), and between Object
+   (Index) and Element (Object, Index). The same commands are on a
+   menu shown by `ada-refactor-menu-popup', which may be bound to a
+   keystroke or mouseclick.
+
+** Ada mode now provides a project.el backend, in ada-project.el.
+   `project-find-file' does file name completion on files in the
+   current project, using the `uniquify-files' completion style. To
+   use this backend with an existing Ada mode project file:
+
+   (setq ada-project-current (make-ada-project :ada-prj-file 
<exising-file.prj>))
+   (add-to-list 'project-find-functions #'ada-project-current)
+
+   You may want to define other functions for project-find-functions.
+
+* Ada Mode 6.1.1
 11 Jul 2019
 
 ** parser Ada language protocol version 1
diff --git a/packages/ada-mode/README b/packages/ada-mode/README
index b252be0..f8bd5f2 100644
--- a/packages/ada-mode/README
+++ b/packages/ada-mode/README
@@ -1,4 +1,4 @@
-Emacs Ada mode version 6.1.1
+Emacs Ada mode version 6.2.0
 
 Ada mode provides auto-casing, fontification, navigation, and
 indentation for Ada source code files.
diff --git a/packages/ada-mode/ada-build.el b/packages/ada-mode/ada-build.el
index 7f2c1b2..b978040 100644
--- a/packages/ada-mode/ada-build.el
+++ b/packages/ada-mode/ada-build.el
@@ -1,7 +1,7 @@
 ;; ada-build.el --- Extensions to ada-mode for compiling and running  -*- 
lexical-binding:t -*-
 ;; Ada projects without 'make' or similar tool
 ;;
-;; Copyright (C) 1994, 1995, 1997 - 2017  Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1995, 1997 - 2017, 2019  Free Software Foundation, Inc.
 ;;
 ;; Author: Stephen Leake <address@hidden>
 ;; Maintainer: Stephen Leake <address@hidden>
@@ -256,6 +256,7 @@ user confirmation of the command, using PROMPT."
 
     (compile (ada-build-replace-vars cmd))))
 
+;;;###autoload
 (defun ada-build-check (&optional confirm)
   "Run the check_cmd project variable.
 By default, this checks the current file for syntax errors.
@@ -263,6 +264,7 @@ If CONFIRM is non-nil, prompt for user confirmation of the 
command."
   (interactive "P")
   (ada-build-run-cmd 'check_cmd confirm "check command"))
 
+;;;###autoload
 (defun ada-build-make (&optional confirm)
   "Run the make_cmd project variable.
 By default, this compiles and links the main program.
@@ -270,6 +272,7 @@ If CONFIRM is non-nil, prompt for user confirmation of the 
command."
   (interactive "P")
   (ada-build-run-cmd 'make_cmd confirm "make command"))
 
+;;;###autoload
 (defun ada-build-set-make (&optional confirm)
   "Set the main project variable to the current file, then run the make_cmd 
project variable.
 By default, this compiles and links the new main program.
@@ -278,6 +281,7 @@ If CONFIRM is non-nil, prompt for user confirmation of the 
command."
   (ada-prj-put 'main (file-name-nondirectory (file-name-sans-extension 
(buffer-file-name))))
   (ada-build-run-cmd 'make_cmd confirm "make command"))
 
+;;;###autoload
 (defun ada-build-run (&optional confirm)
   "Run the run_cmd project variable.
 By default, this runs the main program.
diff --git a/packages/ada-mode/ada-fix-error.el 
b/packages/ada-mode/ada-fix-error.el
index a3037c7..cf90a59 100644
--- a/packages/ada-mode/ada-fix-error.el
+++ b/packages/ada-mode/ada-fix-error.el
@@ -1,7 +1,7 @@
 ;;; ada-fix-error.el --- utilities for automatically fixing  -*- 
lexical-binding:t -*-
 ;; errors reported by the compiler.
 
-;; Copyright (C) 1999-2009, 2012-2015, 2017, 2018 Free Software Foundation, 
Inc.
+;; Copyright (C) 1999-2009, 2012-2015, 2017-2019 Free Software Foundation, Inc.
 
 ;; Author     : Stephen Leake      <address@hidden>
 ;; Maintainer : Stephen Leake      <address@hidden>
@@ -202,6 +202,7 @@ point and return nil.")
   "Get compilation message at line beginning."
   (get-text-property (line-beginning-position) 'compilation-message))
 
+;;;###autoload
 (defun ada-fix-compiler-error ()
   "Attempt to fix the current compiler error. Leave point at fixed code."
   (interactive)
diff --git a/packages/ada-mode/ada-gnat-compile.el 
b/packages/ada-mode/ada-gnat-compile.el
index a0118ac..eb895c3 100644
--- a/packages/ada-mode/ada-gnat-compile.el
+++ b/packages/ada-mode/ada-gnat-compile.el
@@ -149,31 +149,40 @@ Prompt user if more than one."
   ;; wisi-output.adb:115:42: possible misspelling of "Production"
   ;;
   ;; column number can vary, so only check the line number
+  (save-excursion
+    (let ((line (progn (beginning-of-line) (nth 1 (compilation--message->loc 
(ada-get-compilation-message)))))
+         done choices)
+      (while (not done)
+       (forward-line 1)
+       (setq done (or (not (ada-get-compilation-message))
+                      (not (equal line (nth 1 (compilation--message->loc 
(ada-get-compilation-message)))))))
+       (when (and (not done)
+                  (progn
+                    (skip-syntax-forward "^-")
+                    (forward-char 1)
+                    (looking-at (concat "possible misspelling of " 
ada-gnat-quoted-name-regexp))))
+         (push (match-string 1) choices)))
 
-  (let ((line (progn (beginning-of-line) (nth 1 (compilation--message->loc 
(ada-get-compilation-message)))))
-       done choices)
-    (while (not done)
-      (forward-line 1)
-      (setq done (or (not (ada-get-compilation-message))
-                    (not (equal line (nth 1 (compilation--message->loc 
(ada-get-compilation-message)))))))
-      (when (and (not done)
-                (progn
-                  (skip-syntax-forward "^-")
-                  (forward-char 1)
-                  (looking-at (concat "possible misspelling of " 
ada-gnat-quoted-name-regexp))))
-       (push (match-string 1) choices)))
-
-    ;; return correct spelling
-    (cond
-     ((= 0 (length choices))
-      nil)
+      ;; return correct spelling
+      (cond
+       ((= 0 (length choices))
+       nil)
+
+       ((= 1 (length choices))
+       (car choices))
 
-     ((= 1 (length choices))
-      (car choices))
+       (t ;; multiple choices
+       (completing-read "correct spelling: " choices))
+       ))))
 
-     (t ;; multiple choices
-      (completing-read "correct spelling: " choices))
-     )))
+(defun ada-gnat-qualified ()
+  "Return qualified name from current compiler error, if there is one offered."
+  (save-excursion
+    (forward-line 1)
+    (skip-syntax-forward "^ ")
+    (looking-at " use fully qualified name starting with \\([a-zA-Z0-9_]+\\) 
to make")
+    (match-string 1)
+    ))
 
 (defun ada-gnat-fix-error (_msg source-buffer _source-window)
   "For `ada-gnat-fix-error-hook'."
@@ -301,18 +310,25 @@ Prompt user if more than one."
          ((looking-at (concat ada-gnat-quoted-name-regexp " not declared in " 
ada-gnat-quoted-name-regexp))
           (save-excursion
             (let ((child-name (match-string 1))
-                  (correct-spelling (ada-gnat-misspelling)))
-              (if correct-spelling
-                  (progn
-                    (setq correct-spelling (match-string 1))
-                    (pop-to-buffer source-buffer)
-                    (search-forward child-name)
-                    (replace-match correct-spelling))
+                  (correct-spelling (ada-gnat-misspelling))
+                  (qualified (ada-gnat-qualified)))
+              (cond
+               (correct-spelling
+                (pop-to-buffer source-buffer)
+                (search-forward child-name)
+                (replace-match correct-spelling))
 
+               (qualified
+                (pop-to-buffer source-buffer)
+                (search-forward child-name)
+                (skip-syntax-backward "w_.")
+                (insert qualified "."))
+
+               (t
                 ;; else guess that "child" is a child package, and extend the 
with_clause
                 (pop-to-buffer source-buffer)
                 (ada-fix-extend-with-clause child-name))))
-          t)
+          t))
 
          ((looking-at (concat ada-gnat-quoted-punctuation-regexp
                               " should be "
diff --git a/packages/ada-mode/ada-lalr-elisp.el 
b/packages/ada-mode/ada-lalr-elisp.el
deleted file mode 100644
index 95dce2d..0000000
--- a/packages/ada-mode/ada-lalr-elisp.el
+++ /dev/null
@@ -1,4373 +0,0 @@
-;;; ada-lalr-elisp.el --- Generated parser support file  -*- lexical-binding:t 
-*-
-;;  command line: wisitoken-bnf-generate.exe  --generate LALR elisp elisp 
ada.wy
-
-;;  Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
-
-;;  This program is free software; you can redistribute it and/or
-;;  modify it under the terms of the GNU General Public License as
-;;  published by the Free Software Foundation; either version 3, or (at
-;;  your option) any later version.
-;;
-;;  This software is distributed in the hope that it will be useful,
-;;  but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;;  General Public License for more details.
-;;
-;;  You should have received a copy of the GNU General Public License
-;;  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-(require 'wisi)
-(require 'wisi-compile)
-(require 'wisi-elisp-parse)
-
-(defconst ada-lalr-elisp-keyword-table-raw
-  '(
-   ("abs" . ABS)
-   ("accept" . ACCEPT)
-   ("abort" . ABORT)
-   ("abstract" . ABSTRACT)
-   ("access" . ACCESS)
-   ("aliased" . ALIASED)
-   ("all" . ALL)
-   ("and" . AND)
-   ("array" . ARRAY)
-   ("at" . AT)
-   ("begin" . BEGIN)
-   ("body" . BODY)
-   ("case" . CASE)
-   ("constant" . CONSTANT)
-   ("declare" . DECLARE)
-   ("delay" . DELAY)
-   ("delta" . DELTA)
-   ("digits" . DIGITS)
-   ("do" . DO)
-   ("else" . ELSE)
-   ("elsif" . ELSIF)
-   ("end" . END)
-   ("entry" . ENTRY)
-   ("exception" . EXCEPTION)
-   ("exit" . EXIT)
-   ("for" . FOR)
-   ("function" . FUNCTION)
-   ("generic" . GENERIC)
-   ("goto" . GOTO)
-   ("if" . IF)
-   ("in" . IN)
-   ("interface" . INTERFACE)
-   ("is" . IS)
-   ("limited" . LIMITED)
-   ("loop" . LOOP)
-   ("mod" . MOD)
-   ("new" . NEW)
-   ("not" . NOT)
-   ("null" . NULL)
-   ("of" . OF)
-   ("or" . OR)
-   ("others" . OTHERS)
-   ("out" . OUT)
-   ("overriding" . OVERRIDING)
-   ("package" . PACKAGE)
-   ("pragma" . PRAGMA)
-   ("private" . PRIVATE)
-   ("procedure" . PROCEDURE)
-   ("protected" . PROTECTED)
-   ("raise" . RAISE)
-   ("range" . RANGE)
-   ("record" . RECORD)
-   ("rem" . REM)
-   ("renames" . RENAMES)
-   ("requeue" . REQUEUE)
-   ("return" . RETURN)
-   ("reverse" . REVERSE)
-   ("separate" . SEPARATE)
-   ("select" . SELECT)
-   ("some" . SOME)
-   ("subtype" . SUBTYPE)
-   ("synchronized" . SYNCHRONIZED)
-   ("tagged" . TAGGED)
-   ("task" . TASK)
-   ("terminate" . TERMINATE)
-   ("then" . THEN)
-   ("type" . TYPE)
-   ("until" . UNTIL)
-   ("use" . USE)
-   ("when" . WHEN)
-   ("while" . WHILE)
-   ("with" . WITH)
-   ("xor" . XOR)
-   ))
-
-(defconst ada-lalr-elisp-token-table-raw
-  '(
-   ("left-paren"
-    (LEFT_PAREN . "(")
-    )
-   ("right-paren"
-    (RIGHT_PAREN . ")")
-    )
-   ("punctuation"
-    (AMPERSAND . "&")
-    (BAR . "|")
-    (BOX . "<>")
-    (COLON . ":")
-    (COLON_EQUAL . ":=")
-    (COMMA . ",")
-    (DOT . ".")
-    (DOT_DOT . "..")
-    (EQUAL . "=")
-    (EQUAL_GREATER . "=>")
-    (GREATER . ">")
-    (GREATER_EQUAL . ">=")
-    (GREATER_GREATER . ">>")
-    (LESS . "<")
-    (LESS_EQUAL . "<=")
-    (LESS_LESS . "<<")
-    (MINUS . "-")
-    (PLUS . "+")
-    (SEMICOLON . ";")
-    (SLASH . "/")
-    (SLASH_EQUAL . "/=")
-    (STAR . "*")
-    (STAR_STAR . "**")
-    (TICK_1 . "'")
-    )
-   ("number"
-    (NUMERIC_LITERAL ada-wisi-number-p)
-    )
-   ("symbol"
-    (IDENTIFIER . "")
-    )
-   ("string-double"
-    (STRING_LITERAL . "")
-    )
-   ("string-single"
-    (CHARACTER_LITERAL . "")
-    )
-   ))
-
-(defconst ada-lalr-elisp-parse-table
-   (wisi-compile-grammar
-   '(((abstract_limited_synchronized_opt
-       ((ABSTRACT LIMITED ))
-       ((ABSTRACT SYNCHRONIZED ))
-       ((ABSTRACT ))
-       ((LIMITED ))
-       ((SYNCHRONIZED ))
-       (()))
-      (abstract_limited_opt
-       ((ABSTRACT LIMITED ))
-       ((LIMITED ))
-       ((ABSTRACT ))
-       (()))
-      (abstract_tagged_limited_opt
-       ((ABSTRACT TAGGED LIMITED ))
-       ((ABSTRACT TAGGED ))
-       ((TAGGED LIMITED ))
-       ((TAGGED ))
-       ((LIMITED ))
-       (()))
-      (abstract_subprogram_declaration
-       ((overriding_indicator_opt subprogram_specification IS ABSTRACT 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 statement-override 6 
statement-end])
-      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken nil 
nil]))))
-      (accept_statement
-       ((ACCEPT IDENTIFIER actual_parameter_part_opt parameter_profile_opt DO 
handled_sequence_of_statements END identifier_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 5 motion 9 statement-end])
-      (wisi-containing-action 1 4) ;; for goto-declaration-start
-      (wisi-containing-action 1 6) ;; ""
-      (wisi-motion-action [1 5 [6 EXCEPTION WHEN] 9])
-      (wisi-face-apply-action [2 nil font-lock-function-name-face 8 nil 
font-lock-function-name-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken [nil ada-indent] [ada-indent ada-indent] nil nil nil])))
-       ((ACCEPT IDENTIFIER actual_parameter_part_opt parameter_profile_opt 
SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-containing-action 1 4) ;; for goto-declaration-start
-      (wisi-face-apply-action [2 nil font-lock-function-name-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil]))))
-      (access_definition
-       ((null_exclusion_opt ACCESS protected_opt PROCEDURE 
parameter_profile_opt )
-        (wisi-indent-action [nil nil nil nil (wisi-anchored% 4 
ada-indent-broken)]))
-       ((null_exclusion_opt ACCESS protected_opt FUNCTION 
parameter_and_result_profile )
-        (wisi-indent-action [nil nil nil nil (wisi-anchored%- 4 
ada-indent-broken)]))
-       ((null_exclusion_opt ACCESS general_access_modifier_opt name )
-        (wisi-face-apply-action [4 font-lock-function-name-face 
font-lock-type-face])))
-      (actual_parameter_part
-       ((LEFT_PAREN association_list RIGHT_PAREN )
-        (wisi-indent-action [nil [(wisi-anchored 1 1) (wisi-anchored 1 1)] 
(wisi-anchored 1 0)]))
-       ((LEFT_PAREN conditional_quantified_expression RIGHT_PAREN )
-        (wisi-indent-action [nil [(wisi-anchored 1 1) (wisi-anchored 1 1)] 
(wisi-anchored 1 0)])))
-      (actual_parameter_part_opt
-       ((actual_parameter_part ))
-       (()))
-      (aggregate
-       ((LEFT_PAREN expression_opt WITH NULL RECORD RIGHT_PAREN )
-        (wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 1) nil 
nil (wisi-anchored 1 0)]))
-       ((LEFT_PAREN expression_opt WITH association_list RIGHT_PAREN )
-        (wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 1) 
[(wisi-anchored 1 1) (wisi-anchored 1 1)]
-                         (wisi-anchored 1 0)]))
-       ((LEFT_PAREN NULL RECORD RIGHT_PAREN ))
-       ((LEFT_PAREN conditional_quantified_expression RIGHT_PAREN )
-        (wisi-indent-action [nil [(wisi-anchored 1 1) (wisi-anchored 1 1)] 
(wisi-anchored 1 0)]))
-       ((LEFT_PAREN association_list RIGHT_PAREN )
-        (wisi-indent-action [nil [(wisi-anchored 1 1) (wisi-anchored 1 1)] 
(wisi-anchored 1 0)])))
-      (aliased_opt
-       ((ALIASED ))
-       (()))
-      (and_interface_list_opt
-       ((AND interface_list ))
-       (()))
-      (array_type_definition
-       ((ARRAY LEFT_PAREN index_subtype_definition_list RIGHT_PAREN OF 
component_definition )
-        (wisi-indent-action [nil nil (wisi-anchored 2 1) (wisi-anchored 2 0) 
nil nil]))
-       ((ARRAY LEFT_PAREN discrete_subtype_definition_list RIGHT_PAREN OF 
component_definition )
-        (wisi-indent-action [nil nil (wisi-anchored 2 1) (wisi-anchored 2 0) 
nil nil])))
-      (aspect_clause
-       ((FOR attribute_reference USE expression_opt SEMICOLON )
-        (wisi-statement-action [1 statement-start 5 statement-end]))
-       ((enumeration_representation_clause ))
-       ((record_representation_clause ))
-       ((at_clause )))
-      (aspect_specification_opt
-       ((WITH association_list )
-        (wisi-indent-action [nil ada-indent-broken]))
-       (()))
-      (assignment_statement
-       ((name COLON_EQUAL expression_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 4 statement-end])
-      (wisi-containing-action 1 3)
-      (wisi-indent-action [nil
-                           ada-indent-broken
-                           (wisi-hanging
-                            (wisi-anchored% 2 ada-indent-broken)
-                            (wisi-anchored% 3 ada-indent-broken))
-                           nil]))))
-      (association_opt
-       ((CHARACTER_LITERAL EQUAL_GREATER expression_opt )
-        (wisi-indent-action [nil ada-indent-broken
-                         [(wisi-anchored% 2 ada-indent-broken) (wisi-anchored% 
2 ada-indent-broken)]]))
-       ((CHARACTER_LITERAL EQUAL_GREATER BOX ))
-       ((discrete_choice_list EQUAL_GREATER expression_opt )
-        (wisi-indent-action [(wisi-hanging nil ada-indent-broken)
-                           ada-indent-broken
-                           [(wisi-hanging%- (wisi-anchored% 2 
ada-indent-broken)
-                                            (wisi-anchored% 2 (* 2 
ada-indent-broken)))
-                            (wisi-hanging%- (wisi-anchored% 2 
ada-indent-broken)
-                                            (wisi-anchored% 2 (* 2 
ada-indent-broken)))]]))
-       ((discrete_choice_list EQUAL_GREATER BOX )
-        (wisi-indent-action [(wisi-hanging nil ada-indent-broken) 
ada-indent-broken nil]))
-       ((expression )
-        (wisi-indent-action [[(wisi-hanging nil ada-indent-broken) 
(wisi-hanging nil ada-indent-broken)]]))
-       (()))
-      (association_list
-       ((association_list COMMA association_opt ))
-       ((association_opt )))
-      (asynchronous_select
-       ((SELECT triggering_alternative THEN ABORT sequence_of_statements_opt 
END SELECT SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion 8 statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 5)
-      (wisi-indent-action [nil [ada-indent ada-indent] [nil ada-indent-broken] 
ada-indent-broken
-                           [ada-indent ada-indent] nil nil nil]))))
-      (at_clause
-       ((FOR direct_name USE AT expression_opt SEMICOLON )
-        (wisi-statement-action [1 statement-start 6 statement-end])))
-      (attribute_reference
-       ((name tick attribute_designator )))
-      (attribute_designator
-       ((name ))
-       ((ACCESS ))
-       ((DELTA ))
-       ((DIGITS ))
-       ((MOD )))
-      (binary_adding_operator
-       ((PLUS ))
-       ((MINUS ))
-       ((AMPERSAND )))
-      (block_label
-       ((IDENTIFIER COLON )
-        (wisi-indent-action [ada-indent-label nil])))
-      (block_label_opt
-       ((block_label ))
-       (()))
-      (block_statement
-       ((block_label_opt DECLARE declarative_part_opt BEGIN 
handled_sequence_of_statements END identifier_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 misc 4 motion 8 
statement-end])
-      (wisi-containing-action 2 3)
-      (wisi-containing-action 2 5)
-      (wisi-motion-action [2 4 [5 EXCEPTION WHEN] 8])
-      (wisi-indent-action [nil nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil nil nil])))
-       ((block_label_opt BEGIN handled_sequence_of_statements END 
identifier_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 misc 6 statement-end])
-      (wisi-containing-action 2 3)
-      (wisi-motion-action [2 [3 EXCEPTION WHEN] 6])
-      (wisi-indent-action [nil nil [ada-indent ada-indent] nil nil nil]))))
-      (body_g
-       ((proper_body ))
-       ((body_stub )))
-      (body_stub
-       ((subprogram_body_stub ))
-       ((package_body_stub ))
-       ((task_body_stub ))
-       ((protected_body_stub )))
-      (case_expression
-       ((CASE expression_opt IS case_expression_alternative_list )
-        (wisi-indent-action [nil ada-indent-broken nil ada-indent-when])))
-      (case_expression_alternative
-       ((WHEN discrete_choice_list EQUAL_GREATER expression_opt )
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken
-                           (wisi-hanging (wisi-anchored% 1 ada-indent)
-                                         (wisi-anchored% 1 (+ ada-indent 
ada-indent-broken)))])))
-      (case_expression_alternative_list
-       ((case_expression_alternative_list COMMA case_expression_alternative )
-        (wisi-indent-action [nil [nil ada-indent-when] nil]))
-       ((case_expression_alternative )))
-      (case_statement
-       ((CASE expression_opt IS case_statement_alternative_list END CASE 
SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion 7 statement-end])
-      (wisi-containing-action 1 4)
-      (wisi-motion-action [1 [4 WHEN] 7])
-      (wisi-indent-action [nil ada-indent-broken nil [ada-indent-when 
ada-indent-when] nil nil nil]))))
-      (case_statement_alternative
-       ((WHEN discrete_choice_list EQUAL_GREATER sequence_of_statements_opt )
-        (progn
-      (wisi-statement-action [1 motion])
-      ;; ada-indent-when added in case_statement
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken [ada-indent 
ada-indent]]))))
-      (case_statement_alternative_list
-       ((case_statement_alternative_list case_statement_alternative ))
-       ((case_statement_alternative )))
-      (compilation_unit
-       ((with_clause ))
-       ((subunit ))
-       ((PRIVATE declaration )
-        (wisi-indent-action [0 0]))
-       ((declaration ))
-       ((statement )))
-      (compilation_unit_list
-       ((compilation_unit_list compilation_unit )
-        (wisi-indent-action [0 [0 0]]))
-       ((compilation_unit )
-        (wisi-indent-action [[0 0]])))
-      (component_clause
-       ((IDENTIFIER AT simple_expression RANGE simple_expression DOT_DOT 
simple_expression SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 8 statement-end])
-      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken nil]))))
-      (component_clause_list
-       ((component_clause_list component_clause ))
-       ((component_clause )))
-      (component_declaration
-       ((identifier_list COLON component_definition COLON_EQUAL expression_opt 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 3) ;; for goto-declaration-start
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken
-                               (wisi-anchored% 4 ada-indent-broken)
-                               ada-indent-broken nil])))
-       ((identifier_list COLON component_definition aspect_specification_opt 
SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-containing-action 1 3) ;; for goto-declaration-start
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil]))))
-      (component_definition
-       ((ALIASED subtype_indication ))
-       ((subtype_indication ))
-       ((ALIASED access_definition ))
-       ((access_definition )))
-      (component_item
-       ((component_declaration ))
-       ((aspect_clause )))
-      (component_list
-       ((component_list component_item ))
-       ((component_list variant_part ))
-       ((component_item ))
-       ((variant_part ))
-       ((NULL SEMICOLON )
-        (wisi-statement-action [1 statement-start 2 statement-end])))
-      (component_list_opt
-       ((component_list ))
-       (()))
-      (compound_statement
-       ((if_statement ))
-       ((case_statement ))
-       ((loop_statement ))
-       ((block_statement ))
-       ((extended_return_statement ))
-       ((accept_statement ))
-       ((select_statement )))
-      (conditional_entry_call
-       ((SELECT entry_call_alternative ELSE sequence_of_statements_opt END 
SELECT SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion 7 statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
-      (wisi-indent-action [nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil nil nil]))))
-      (conditional_quantified_expression
-       ((if_expression ))
-       ((case_expression ))
-       ((quantified_expression )))
-      (constant_opt
-       ((CONSTANT ))
-       (()))
-      (constraint
-       ((RANGE range_g ))
-       ((index_constraint )))
-      (constraint_opt
-       ((constraint ))
-       (()))
-      (declaration
-       ((abstract_subprogram_declaration ))
-       ((aspect_clause ))
-       ((body_g ))
-       ((entry_declaration ))
-       ((exception_declaration ))
-       ((expression_function_declaration ))
-       ((generic_declaration ))
-       ((generic_instantiation ))
-       ((null_procedure_declaration ))
-       ((identifier_list COLON CONSTANT COLON_EQUAL expression_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 6 statement-end])
-      (wisi-containing-action 1 5)
-      (wisi-indent-action [(wisi-hanging nil ada-indent-broken) 
ada-indent-broken ada-indent-broken ada-indent-broken
-                           (wisi-anchored% 4 ada-indent-broken) nil])))
-       ((object_declaration ))
-       ((package_declaration ))
-       ((renaming_declaration ))
-       ((subprogram_declaration ))
-       ((subtype_declaration ))
-       ((type_declaration ))
-       ((use_clause )))
-      (declarations
-       ((declarations declaration ))
-       ((declarations pragma_g ))
-       ((declaration ))
-       ((pragma_g )))
-      (declarative_part_opt
-       ((declarations ))
-       (()))
-      (delay_alternative
-       ((delay_statement sequence_of_statements_opt )))
-      (delay_statement
-       ((DELAY UNTIL expression_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 4 statement-end])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken nil])))
-       ((DELAY expression_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-indent-action [nil ada-indent-broken nil]))))
-      (derived_type_definition
-       ((abstract_limited_opt NEW name and_interface_list_opt WITH 
record_definition )
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face]))
-       ((abstract_limited_opt NEW name constraint_opt )
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face])))
-      (direct_name
-       ((IDENTIFIER ))
-       ((STRING_LITERAL )))
-      (direct_name_opt
-       ((direct_name ))
-       (()))
-      (discrete_choice
-       ((expression ))
-       ((NOT NULL name ))
-       ((range_g ))
-       ((OTHERS )))
-      (discrete_choice_list
-       ((discrete_choice_list BAR discrete_choice ))
-       ((discrete_choice ))
-       (()))
-      (discrete_subtype_definition
-       ((subtype_indication ))
-       ((range_g )))
-      (discrete_subtype_definition_list
-       ((discrete_subtype_definition_list COMMA discrete_subtype_definition ))
-       ((discrete_subtype_definition )))
-      (discriminant_part_opt
-       ((LEFT_PAREN BOX RIGHT_PAREN ))
-       ((LEFT_PAREN discriminant_specification_list RIGHT_PAREN )
-        (wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 0)]))
-       (()))
-      (discriminant_specification_opt
-       ((identifier_list COLON null_exclusion_opt_name_type COLON_EQUAL 
expression_opt ))
-       ((identifier_list COLON access_definition COLON_EQUAL expression_opt ))
-       ((identifier_list COLON null_exclusion_opt_name_type ))
-       ((identifier_list COLON access_definition ))
-       (()))
-      (discriminant_specification_list
-       ((discriminant_specification_list SEMICOLON 
discriminant_specification_opt ))
-       ((discriminant_specification_opt )))
-      (elsif_expression_item
-       ((ELSIF expression_opt THEN expression_opt )
-        (progn
-      (wisi-statement-action [1 motion 3 motion])
-      (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent]))))
-      (elsif_expression_list
-       ((elsif_expression_list elsif_expression_item ))
-       ((elsif_expression_item )))
-      (elsif_statement_item
-       ((ELSIF expression_opt THEN sequence_of_statements_opt )
-        (progn
-      (wisi-statement-action [1 motion 3 motion])
-      (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
[ada-indent ada-indent]]))))
-      (elsif_statement_list
-       ((elsif_statement_list elsif_statement_item ))
-       ((elsif_statement_item )))
-      (entry_body
-       ((ENTRY IDENTIFIER entry_body_formal_part WHEN expression_opt IS 
declarative_part_opt BEGIN handled_sequence_of_statements END identifier_opt 
SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 4 motion 6 motion 8 motion 
12 statement-end])
-        (wisi-name-action 2)
-        (wisi-containing-action 1 3) ;; for goto-declaration-start
-        (wisi-containing-action 1 7)
-        (wisi-containing-action 1 9)
-        (wisi-motion-action [1 4 6 8 12])
-        (wisi-face-apply-action [2 nil font-lock-function-name-face 11 nil 
font-lock-function-name-face])
-
-        ;; test/ada_mode-nominal.adb
-        ;; entry E2
-        ;;   (X : Integer)
-        ;;   when Local_1 = 0 and not
-        ;;     (Local_2 = 1)
-        ;;
-        ;; entry E3
-        ;;   (X : Integer) when Local_1 = 0 and not
-        ;;     (Local_2 = 1)
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken
-                                 (wisi-anchored% 4 ada-indent-broken)
-                                 nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil nil nil]))))
-      (entry_body_formal_part
-       ((LEFT_PAREN FOR IDENTIFIER IN discrete_subtype_definition RIGHT_PAREN 
parameter_profile_opt )
-        (wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 1) 
(wisi-anchored 1 1) (wisi-anchored 1 1)
-                           (wisi-anchored 1 0) ada-indent-broken]))
-       ((parameter_profile_opt )))
-      (entry_call_alternative
-       ((procedure_call_statement sequence_of_statements_opt ))
-       ((name sequence_of_statements_opt )))
-      (entry_declaration
-       ((overriding_indicator_opt ENTRY IDENTIFIER LEFT_PAREN 
discrete_subtype_definition RIGHT_PAREN parameter_profile_opt 
aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 2 motion 8 statement-end])
-        (wisi-name-action 3)
-        (wisi-containing-action 2 7) ;; for goto-declaration-start
-        (wisi-face-apply-action [3 nil font-lock-function-name-face])
-        (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
(wisi-anchored 4 1) (wisi-anchored 4 0)
-                               ada-indent-broken nil nil])))
-       ((overriding_indicator_opt ENTRY IDENTIFIER parameter_profile_opt 
aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 2 motion 6 statement-end])
-        (wisi-name-action 3)
-        (wisi-containing-action 2 4) ;; for goto-declaration-start
-        (wisi-face-apply-action [3 nil font-lock-function-name-face])
-        (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil]))))
-      (enumeration_literal
-       ((IDENTIFIER ))
-       ((CHARACTER_LITERAL )))
-      (enumeration_literal_list
-       ((enumeration_literal_list COMMA enumeration_literal ))
-       ((enumeration_literal )))
-      (enumeration_representation_clause
-       ((FOR name USE aggregate SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-type-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil]))))
-      (enumeration_type_definition
-       ((LEFT_PAREN enumeration_literal_list RIGHT_PAREN )
-        (wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 0)])))
-      (exception_choice
-       ((name ))
-       ((OTHERS )))
-      (exception_choice_list
-       ((exception_choice_list BAR exception_choice ))
-       ((exception_choice )))
-      (exception_declaration
-       ((identifier_list COLON EXCEPTION SEMICOLON )
-        (wisi-statement-action [1 statement-start 4 statement-end])))
-      (exception_handler
-       ((WHEN IDENTIFIER COLON exception_choice_list EQUAL_GREATER 
sequence_of_statements_opt )
-        (progn
-      (wisi-statement-action [1 motion])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                             [ada-indent ada-indent]])))
-       ((WHEN exception_choice_list EQUAL_GREATER sequence_of_statements_opt )
-        (progn
-      (wisi-statement-action [1 motion])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken [ada-indent 
ada-indent]]))))
-      (exception_handler_list
-       ((exception_handler_list exception_handler ))
-       ((exception_handler ))
-       ((pragma_g )))
-      (exception_handler_list_opt
-       ((exception_handler_list ))
-       (()))
-      (exit_statement
-       ((EXIT identifier_opt WHEN expression_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-indent-action [nil nil nil ada-indent-broken nil])))
-       ((EXIT identifier_opt SEMICOLON )
-        (wisi-statement-action [1 statement-start 3 statement-end])))
-      (expression
-       ((relation ))
-       ((relation_and_list ))
-       ((relation_and_then_list ))
-       ((relation_or_list ))
-       ((relation_or_else_list ))
-       ((relation_xor_list )))
-      (expression_opt
-       ((expression ))
-       (()))
-      (expression_function_declaration
-       ((overriding_indicator_opt function_specification IS paren_expression 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 statement-override 6 
statement-end])
-      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken nil 
nil]))))
-      (extended_return_object_declaration
-       ((IDENTIFIER COLON aliased_opt constant_opt return_subtype_indication 
COLON_EQUAL expression_opt )
-        (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                           (wisi-anchored% 6 ada-indent-broken)]))
-       ((IDENTIFIER COLON aliased_opt constant_opt return_subtype_indication )
-        (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken])))
-      (extended_return_object_declaration_opt
-       ((extended_return_object_declaration ))
-       (()))
-      (extended_return_statement
-       ((RETURN extended_return_object_declaration_opt DO 
handled_sequence_of_statements END RETURN SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion 7 statement-end])
-      (wisi-containing-action 1 4)
-      (wisi-motion-action [1 3 7])
-      (wisi-indent-action [[nil ada-indent] ada-indent-broken nil [ada-indent 
ada-indent] nil nil nil])))
-       ((RETURN extended_return_object_declaration SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 statement-end]))))
-      (factor
-       ((primary STAR_STAR primary ))
-       ((primary ))
-       ((ABS primary ))
-       ((NOT primary )))
-      (formal_object_declaration
-       ((identifier_list COLON mode_opt null_exclusion_opt name COLON_EQUAL 
expression_opt aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 9 statement-end])
-      (wisi-face-apply-action [5 font-lock-function-name-face 
font-lock-type-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken
-                             (wisi-anchored% 6 ada-indent-broken) 
ada-indent-broken nil])))
-       ((identifier_list COLON mode_opt access_definition COLON_EQUAL 
expression_opt aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 8 statement-end])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                             (wisi-anchored% 5 ada-indent-broken) 
ada-indent-broken nil])))
-       ((identifier_list COLON mode_opt null_exclusion_opt name 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-face-apply-action [5 font-lock-function-name-face 
font-lock-type-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                               ada-indent-broken nil])))
-       ((identifier_list COLON mode_opt access_definition 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 6 statement-end])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken nil]))))
-      (formal_part
-       ((LEFT_PAREN parameter_specification_list RIGHT_PAREN )
-        (progn
-      (wisi-statement-action [1 misc]) ;; for ada-wisi-in-paramlist-p
-      (wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 0)]))))
-      (formal_subprogram_declaration
-       ((WITH subprogram_specification IS ABSTRACT subprogram_default 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken nil])))
-       ((WITH subprogram_specification IS subprogram_default 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 6 statement-end])
-      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil])))
-       ((WITH subprogram_specification IS ABSTRACT aspect_specification_opt 
SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 6 statement-end])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken nil])))
-       ((WITH subprogram_specification aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 4 statement-end])
-      (wisi-indent-action [nil nil ada-indent-broken nil]))))
-      (formal_type_declaration
-       ((TYPE IDENTIFIER discriminant_part_opt IS formal_type_definition 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 5) ;; for goto-declaration-start
-      (wisi-face-apply-action [2 nil font-lock-type-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken
-                             ada-indent-broken ada-indent-broken nil])))
-       ((TYPE IDENTIFIER discriminant_part_opt IS TAGGED 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-type-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                               ada-indent-broken nil])))
-       ((TYPE IDENTIFIER discriminant_part_opt aspect_specification_opt 
SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-type-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil]))))
-      (formal_type_definition
-       ((abstract_tagged_limited_opt PRIVATE ))
-       ((formal_derived_type_definition ))
-       ((LEFT_PAREN BOX RIGHT_PAREN ))
-       ((RANGE BOX ))
-       ((MOD BOX ))
-       ((DIGITS BOX ))
-       ((DELTA BOX DIGITS BOX ))
-       ((DELTA BOX ))
-       ((array_type_definition ))
-       ((access_definition ))
-       ((interface_type_definition )))
-      (formal_derived_type_definition
-       ((abstract_limited_synchronized_opt NEW name and_interface_list_opt 
WITH PRIVATE )
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face]))
-       ((abstract_limited_synchronized_opt NEW name and_interface_list_opt )
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face])))
-      (formal_package_declaration
-       ((WITH PACKAGE name IS NEW name formal_package_actual_part 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 9 statement-end])
-      (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-function-name-face
-                                 6 font-lock-function-name-face 
font-lock-function-name-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken ada-indent-broken 
ada-indent-broken nil]))))
-      (formal_package_actual_part
-       ((LEFT_PAREN BOX RIGHT_PAREN ))
-       (()))
-      (full_type_declaration
-       ((TYPE IDENTIFIER discriminant_part_opt IS type_definition 
aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 7 statement-end])
-        (wisi-name-action 2)
-        (wisi-containing-action 1 5) ;; for goto-declaration-start
-        (wisi-face-apply-action [2 nil font-lock-type-face])
-
-        ;; FIXME: indentation of comment after 'is' (and 'with' in
-        ;; derived_type_definition) should be ada-indent-record-rel-type
-        ;; if type_definition is a record. Worse if
-        ;; ada-indent-comment-gnat is t. Need 'anchor to next line'.
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken nil nil])))
-       ((task_type_declaration ))
-       ((protected_type_declaration )))
-      (function_specification
-       ((FUNCTION name parameter_and_result_profile )
-        (progn
-        (wisi-statement-action [1 statement-start])
-        (wisi-name-action 2)
-        (wisi-containing-action 1 3) ;; for goto-declaration-start
-        (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken]))))
-      (general_access_modifier_opt
-       ((ALL ))
-       ((CONSTANT ))
-       (()))
-      (generic_declaration
-       ((generic_subprogram_declaration ))
-       ((generic_package_declaration )))
-      (generic_formal_part
-       ((GENERIC generic_formal_parameter_declarations )
-        (progn
-      (wisi-statement-action [1 statement-start])
-      (wisi-indent-action [nil ada-indent])))
-       ((GENERIC )
-        (wisi-statement-action [1 statement-start])))
-      (generic_formal_parameter_declarations
-       ((generic_formal_parameter_declarations 
generic_formal_parameter_declaration ))
-       ((generic_formal_parameter_declaration )))
-      (generic_formal_parameter_declaration
-       ((formal_object_declaration ))
-       ((formal_type_declaration ))
-       ((formal_subprogram_declaration ))
-       ((formal_package_declaration ))
-       ((pragma_g ))
-       ((use_clause )))
-      (generic_instantiation
-       ((PACKAGE name IS NEW name aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 7 statement-end])
-        (wisi-name-action 2)
-        (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-function-name-face
-                                   5 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil ada-indent-broken nil ada-indent-broken 
ada-indent-broken ada-indent-broken nil])))
-       ((overriding_indicator_opt PROCEDURE name IS NEW name 
aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 2 motion 8 statement-end])
-        (wisi-name-action 3)
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-function-name-face
-                                   6 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken nil])))
-       ((overriding_indicator_opt FUNCTION name IS NEW name 
aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 2 motion 8 statement-end])
-        (wisi-name-action 3)
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-function-name-face
-                                   6 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil nil ada-indent-broken nil ada-indent-broken 
ada-indent-broken ada-indent-broken
-                                 nil]))))
-      (generic_package_declaration
-       ((generic_formal_part package_specification SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 motion 3 statement-end])
-      (wisi-motion-action [1 2 3])
-      (wisi-indent-action [[nil ada-indent] nil nil]))))
-      (generic_renaming_declaration
-       ((GENERIC PACKAGE name RENAMES name aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 7 statement-end])
-        (wisi-name-action 3)
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-function-name-face
-                                   5 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken nil])))
-       ((GENERIC PROCEDURE name RENAMES name aspect_specification_opt 
SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 7 statement-end])
-        (wisi-name-action 3)
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-function-name-face
-                                   5 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil nil ada-indent-broken (ada-indent-renames 3) 
ada-indent-broken ada-indent-broken
-                                 nil])))
-       ((GENERIC FUNCTION name RENAMES name aspect_specification_opt SEMICOLON 
)
-        (progn
-        (wisi-statement-action [1 statement-start 7 statement-end])
-        (wisi-name-action 3)
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-function-name-face
-                                   5 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil nil ada-indent-broken (ada-indent-renames 3) 
ada-indent-broken ada-indent-broken
-                                 nil]))))
-      (generic_subprogram_declaration
-       ((generic_formal_part subprogram_specification aspect_specification_opt 
SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 motion 4 statement-end])
-      (wisi-motion-action [1 2 4]))))
-      (goto_label
-       ((LESS_LESS IDENTIFIER GREATER_GREATER )
-        (progn
-      (wisi-face-apply-action [2 nil font-lock-constant-face])
-      (wisi-indent-action [ada-indent-label nil nil]))))
-      (handled_sequence_of_statements
-       ((sequence_of_statements_opt EXCEPTION exception_handler_list_opt )
-        (progn
-      (wisi-statement-action [2 motion])
-      (wisi-indent-action [[nil nil]
-                           (- ada-indent)
-                           [(- ada-indent-when ada-indent) (- ada-indent-when 
ada-indent)]])))
-       ((sequence_of_statements_opt )))
-      (identifier_list
-       ((identifier_list COMMA IDENTIFIER )
-        (progn
-        (wisi-name-action 3)
-        (wisi-indent-action [nil nil ada-indent-broken])))
-       ((IDENTIFIER )
-        (wisi-name-action 1)))
-      (identifier_opt
-       ((IDENTIFIER ))
-       (()))
-      (if_expression
-       ((IF expression_opt THEN expression_opt elsif_expression_list ELSE 
expression_opt )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion 6 motion])
-      (wisi-containing-action 1 2)
-      (wisi-motion-action [1 3 [5 ELSIF THEN] 6])
-      (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent nil nil ada-indent])))
-       ((IF expression_opt THEN expression_opt ELSE expression_opt )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion 5 motion])
-      (wisi-containing-action 1 2)
-      (wisi-motion-action [1 3 5])
-      (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent nil ada-indent])))
-       ((IF expression_opt THEN expression_opt elsif_expression_list )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion])
-      (wisi-containing-action 1 2)
-      (wisi-motion-action [1 3 [5 ELSIF THEN]])
-      (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent nil])))
-       ((IF expression_opt THEN expression_opt )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion])
-      (wisi-containing-action 1 2)
-      (wisi-motion-action [1 3])
-      (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent]))))
-      (if_statement
-       ((IF expression_opt THEN sequence_of_statements_opt 
elsif_statement_list ELSE sequence_of_statements_opt END IF SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion 6 motion 10 
statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
-      (wisi-containing-action 1 5)
-      (wisi-containing-action 1 7)
-      (wisi-motion-action [1 3 [5 ELSIF THEN] 6 10])
-      (wisi-indent-action [nil [(wisi-hanging% ada-indent-broken (* 2 
ada-indent-broken))
-                              ada-indent-broken]
-                             nil
-                             [ada-indent ada-indent] nil nil
-                             [ada-indent ada-indent] nil nil nil])))
-       ((IF expression_opt THEN sequence_of_statements_opt ELSE 
sequence_of_statements_opt END IF SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion 5 motion 9 
statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
-      (wisi-containing-action 1 6)
-      (wisi-motion-action [1 3 5 9])
-      (wisi-indent-action [nil [(wisi-hanging% ada-indent-broken (* 2 
ada-indent-broken))
-                              ada-indent-broken]
-                             nil
-                             [ada-indent ada-indent] nil
-                             [ada-indent ada-indent] nil nil nil])))
-       ((IF expression_opt THEN sequence_of_statements_opt 
elsif_statement_list END IF SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion 8 statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
-      (wisi-containing-action 1 5)
-      (wisi-motion-action [1 3 [5 ELSIF THEN] 8])
-      (wisi-indent-action [nil [(wisi-hanging% ada-indent-broken (* 2 
ada-indent-broken))
-                              ada-indent-broken]
-                             nil
-                             [ada-indent ada-indent] nil nil nil nil])))
-       ((IF expression_opt THEN sequence_of_statements_opt END IF SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion 7 statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
-      (wisi-motion-action [1 3 7])
-      (wisi-indent-action [nil [(wisi-hanging% ada-indent-broken (* 2 
ada-indent-broken))
-                              ada-indent-broken]
-                             nil
-                             [ada-indent ada-indent] nil nil nil]))))
-      (incomplete_type_declaration
-       ((TYPE IDENTIFIER discriminant_part_opt IS TAGGED SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 6 statement-end])
-        (wisi-name-action 2)
-        (wisi-face-apply-action [2 nil font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken nil])))
-       ((TYPE IDENTIFIER discriminant_part_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 3 statement-end])
-        (wisi-name-action 2)
-        (wisi-face-apply-action [2 nil font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken nil]))))
-      (index_constraint
-       ((LEFT_PAREN discrete_subtype_definition_list RIGHT_PAREN )
-        (wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 0)])))
-      (index_subtype_definition
-       ((name RANGE BOX )))
-      (index_subtype_definition_list
-       ((index_subtype_definition_list COMMA index_subtype_definition ))
-       ((index_subtype_definition )))
-      (interface_list
-       ((interface_list AND name )
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face]))
-       ((name )
-        (wisi-face-apply-action [1 font-lock-function-name-face 
font-lock-type-face])))
-      (interface_type_definition
-       ((LIMITED INTERFACE AND interface_list ))
-       ((TASK INTERFACE AND interface_list ))
-       ((PROTECTED INTERFACE AND interface_list ))
-       ((SYNCHRONIZED INTERFACE AND interface_list ))
-       ((LIMITED INTERFACE ))
-       ((TASK INTERFACE ))
-       ((PROTECTED INTERFACE ))
-       ((SYNCHRONIZED INTERFACE ))
-       ((INTERFACE )))
-      (iteration_scheme
-       ((WHILE expression_opt )
-        (wisi-indent-action [nil [ada-indent-broken ada-indent-broken]]))
-       ((FOR iterator_specification_opt )
-        (wisi-indent-action [nil [ada-indent-broken ada-indent-broken]])))
-      (iterator_specification
-       ((IDENTIFIER COLON subtype_indication OF REVERSE name ))
-       ((IDENTIFIER COLON subtype_indication OF name ))
-       ((IDENTIFIER IN REVERSE discrete_subtype_definition )
-        (wisi-face-remove-action [4]))
-       ((IDENTIFIER OF REVERSE name ))
-       ((IDENTIFIER OF name ))
-       ((IDENTIFIER IN discrete_subtype_definition )
-        (wisi-face-remove-action [3])))
-      (iterator_specification_opt
-       ((iterator_specification ))
-       (()))
-      (loop_statement
-       ((block_label_opt iteration_scheme LOOP sequence_of_statements_opt END 
LOOP identifier_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 misc 3 motion 8 
statement-end])
-      (wisi-containing-action 2 4)
-      (wisi-motion-action [2 3 8])
-      (wisi-indent-action [nil nil nil [ada-indent ada-indent] nil nil nil 
nil])))
-       ((block_label_opt LOOP sequence_of_statements_opt END LOOP 
identifier_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 misc 7 statement-end])
-      (wisi-containing-action 2 3)
-      (wisi-indent-action [nil nil [ada-indent ada-indent] nil nil nil nil]))))
-      (membership_choice_list
-       ((membership_choice_list BAR membership_choice ))
-       ((membership_choice )))
-      (membership_choice
-       ((simple_expression ))
-       ((range_g )))
-      (mod_clause_opt
-       ((AT MOD expression_opt SEMICOLON ))
-       (()))
-      (mode_opt
-       ((IN ))
-       ((IN OUT ))
-       ((OUT ))
-       (()))
-      (multiplying_operator
-       ((STAR ))
-       ((SLASH ))
-       ((MOD ))
-       ((REM )))
-      (name_list
-       ((name_list COMMA name ))
-       ((name )))
-      (name
-       ((name LEFT_PAREN range_list RIGHT_PAREN )
-        (wisi-indent-action [nil
-                         (wisi-anchored% 1 ada-indent-broken)
-                         (wisi-hanging (wisi-anchored 2 1)
-                                       (wisi-anchored 2 (+ 1 
ada-indent-broken)))
-                         (wisi-anchored 2 0)]))
-       ((name actual_parameter_part )
-        (progn
-      (wisi-statement-action [1 misc])
-      (wisi-containing-action 1 2)
-      (wisi-indent-action [nil (if ada-indent-hanging-rel-exp
-                                 (wisi-anchored 1 ada-indent-broken)
-                               (wisi-anchored% 1 ada-indent-broken))])))
-       ((selected_component ))
-       ((attribute_reference ))
-       ((qualified_expression ))
-       ((IDENTIFIER )
-        (wisi-face-mark-action [1 suffix]))
-       ((CHARACTER_LITERAL ))
-       ((STRING_LITERAL )))
-      (name_opt
-       ((name ))
-       (()))
-      (null_exclusion_opt
-       ((NOT NULL ))
-       (()))
-      (null_exclusion_opt_name_type
-       ((IDENTIFIER )
-        (wisi-face-apply-action [1 nil font-lock-type-face]))
-       ((selected_component )
-        (wisi-face-apply-action [1 font-lock-function-name-face 
font-lock-type-face]))
-       ((NOT NULL IDENTIFIER )
-        (wisi-face-apply-action [3 nil font-lock-type-face]))
-       ((NOT NULL selected_component )
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face])))
-      (null_procedure_declaration
-       ((overriding_indicator_opt procedure_specification IS NULL 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 statement-override 6 
statement-end])
-      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil]))))
-      (object_declaration
-       ((identifier_list COLON aliased_opt constant_opt subtype_indication 
COLON_EQUAL expression_opt aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 9 statement-end])
-      (wisi-containing-action 1 7)
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken
-                             (wisi-anchored%- 6 ada-indent-broken) 
ada-indent-broken nil])))
-       ((identifier_list COLON aliased_opt constant_opt access_definition 
COLON_EQUAL expression_opt aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 9 statement-end])
-      (wisi-containing-action 1 5) ;; for goto-declaration-start
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken
-                             (wisi-anchored% 6 ada-indent-broken) 
ada-indent-broken nil])))
-       ((identifier_list COLON aliased_opt constant_opt array_type_definition 
COLON_EQUAL expression_opt aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 9 statement-end])
-      (wisi-containing-action 1 5) ;; for goto-declaration-start
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken
-                             (wisi-anchored% 6 ada-indent-broken) 
ada-indent-broken nil])))
-       ((identifier_list COLON aliased_opt constant_opt subtype_indication 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                               ada-indent-broken nil])))
-       ((identifier_list COLON aliased_opt constant_opt access_definition 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 5) ;; for goto-declaration-start
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                               ada-indent-broken nil])))
-       ((identifier_list COLON aliased_opt constant_opt array_type_definition 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 5) ;; for goto-declaration-start
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                               ada-indent-broken nil])))
-       ((single_task_declaration ))
-       ((single_protected_declaration )))
-      (object_renaming_declaration
-       ((IDENTIFIER COLON null_exclusion_opt name RENAMES name 
aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 8 statement-end])
-        (wisi-name-action 1)
-        (wisi-face-apply-action [4 font-lock-function-name-face 
font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                                 ada-indent-broken ada-indent-broken nil])))
-       ((IDENTIFIER COLON access_definition RENAMES name 
aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 7 statement-end])
-        (wisi-name-action 1)
-        (wisi-containing-action 1 3) ;; for goto-declaration-start
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                                 ada-indent-broken nil])))
-       ((IDENTIFIER COLON EXCEPTION RENAMES name aspect_specification_opt 
SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 7 statement-end])
-        (wisi-name-action 1)
-        (wisi-face-apply-action [5 font-lock-function-name-face nil])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                                 ada-indent-broken nil]))))
-      (overriding_indicator_opt
-       ((NOT OVERRIDING )
-        (wisi-statement-action [1 statement-start 2 statement-override]))
-       ((OVERRIDING )
-        (wisi-statement-action [1 statement-start]))
-       (()))
-      (package_body
-       ((PACKAGE BODY name aspect_specification_opt IS declarative_part_opt 
BEGIN handled_sequence_of_statements END name_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 5 motion 7 motion 11 
statement-end])
-        (wisi-name-action 3)
-        (wisi-containing-action 1 6)
-        (wisi-containing-action 1 8)
-        (wisi-motion-action [1 5 7 [8 EXCEPTION WHEN] 11])
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-function-name-face
-                                   10 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken nil nil 
[ada-indent ada-indent]
-                             nil [ada-indent ada-indent] nil ada-indent-broken 
nil])))
-       ((PACKAGE BODY name aspect_specification_opt IS declarative_part_opt 
END name_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 5 motion 9 statement-end])
-        (wisi-name-action 3)
-        (wisi-containing-action 1 6)
-        (wisi-motion-action [1 5 9])
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-function-name-face
-                                   8 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil [ada-indent ada-indent] nil
-                                 nil nil]))))
-      (package_body_stub
-       ((PACKAGE BODY name IS SEPARATE aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 7 statement-end])
-        (wisi-name-action 3)
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken nil 
ada-indent-broken ada-indent-broken nil]))))
-      (package_declaration
-       ((package_specification SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 statement-end])
-      (wisi-motion-action [[1 PRIVATE] 2]))))
-      (package_renaming_declaration
-       ((PACKAGE name RENAMES name aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 6 statement-end])
-        (wisi-name-action 2)
-        (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-function-name-face
-                                   4 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken nil]))))
-      (package_specification
-       ((PACKAGE name aspect_specification_opt IS declarative_part_opt PRIVATE 
declarative_part_opt END name_opt )
-        (progn
-        (wisi-statement-action [1 statement-start 4 motion 6 motion])
-        (wisi-name-action 2)
-        (wisi-containing-action 1 4)
-        (wisi-containing-action 4 5) ;; for goto-declarative-region-start
-        (wisi-containing-action 1 7)
-        (wisi-motion-action [1 4 6])
-        (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-function-name-face
-                                   9 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken nil 
[ada-indent ada-indent] nil
-                             [ada-indent ada-indent] nil nil])))
-       ((PACKAGE name aspect_specification_opt IS declarative_part_opt END 
name_opt )
-        (progn
-      (wisi-statement-action [1 statement-start 4 motion])
-      (wisi-name-action 2)
-      (wisi-containing-action 1 4)
-      (wisi-containing-action 4 5) ;; for goto-declarative-region-start
-      (wisi-motion-action [1 4])
-      (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-function-name-face
-                                 7 font-lock-function-name-face 
font-lock-function-name-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken nil 
[ada-indent ada-indent] nil nil]))))
-      (parameter_and_result_profile
-       ((formal_part result_profile )
-        (wisi-indent-action [nil (ada-indent-return 1 0)]))
-       ((result_profile )))
-      (parameter_profile_opt
-       ((formal_part ))
-       (()))
-      (parameter_specification
-       ((identifier_list COLON aliased_opt mode_opt null_exclusion_opt name 
COLON_EQUAL expression_opt )
-        (progn
-      (wisi-face-apply-action [6 font-lock-function-name-face 
font-lock-type-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                             ada-indent-broken ada-indent-broken 
(wisi-anchored% 7 ada-indent-broken)])))
-       ((identifier_list COLON aliased_opt mode_opt null_exclusion_opt name )
-        (progn
-      (wisi-face-apply-action [6 font-lock-function-name-face 
font-lock-type-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                             ada-indent-broken])))
-       ((identifier_list COLON aliased_opt access_definition COLON_EQUAL 
expression_opt )
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                           (wisi-anchored% 5 ada-indent-broken)]))
-       ((identifier_list COLON aliased_opt access_definition )
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken]))
-       (()))
-      (parameter_specification_list
-       ((parameter_specification_list SEMICOLON parameter_specification )
-        (wisi-statement-action [2 motion]))
-       ((parameter_specification )))
-      (paren_expression
-       ((LEFT_PAREN expression_opt RIGHT_PAREN )
-        (wisi-indent-action [nil
-                         (wisi-hanging (wisi-anchored 1 1)
-                                       (wisi-anchored 1 (+ 1 
ada-indent-broken)))
-                         (wisi-anchored 1 0)]))
-       ((LEFT_PAREN association_list RIGHT_PAREN )
-        (wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 0)]))
-       ((LEFT_PAREN conditional_quantified_expression RIGHT_PAREN )
-        (wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 0)])))
-      (pragma_g
-       ((PRAGMA IDENTIFIER LEFT_PAREN association_list RIGHT_PAREN SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 6 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-function-name-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
(wisi-anchored 3 1) (wisi-anchored 3 0) nil])))
-       ((PRAGMA IDENTIFIER LEFT_PAREN conditional_quantified_expression 
RIGHT_PAREN SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 6 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-function-name-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
(wisi-anchored 3 1) (wisi-anchored 3 0) nil])))
-       ((PRAGMA IDENTIFIER SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-function-name-face])
-      (wisi-indent-action [nil ada-indent-broken nil]))))
-      (primary
-       ((NUMERIC_LITERAL )
-        (wisi-face-apply-action [1 nil font-lock-constant-face]))
-       ((NULL ))
-       ((aggregate )
-        (wisi-indent-action [(ada-indent-aggregate)]))
-       ((name ))
-       ((NEW name )
-        (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-type-face])))
-      (private_extension_declaration
-       ((TYPE IDENTIFIER discriminant_part_opt IS 
abstract_limited_synchronized_opt NEW subtype_indication and_interface_list_opt 
WITH PRIVATE aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 12 statement-end])
-        (wisi-name-action 2)
-        (wisi-face-apply-action [2 nil font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken
-                               ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken nil nil]))))
-      (private_type_declaration
-       ((TYPE IDENTIFIER discriminant_part_opt IS abstract_tagged_limited_opt 
PRIVATE aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 8 statement-end])
-        (wisi-name-action 2)
-        (wisi-face-apply-action [2 nil font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken nil 
ada-indent-broken ada-indent-broken nil
-                                 nil]))))
-      (procedure_call_statement
-       ((name SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 statement-end])
-      (wisi-indent-action [(wisi-hanging nil ada-indent-broken) nil]))))
-      (procedure_specification
-       ((PROCEDURE name parameter_profile_opt )
-        (progn
-        (wisi-statement-action [1 statement-start])
-        (wisi-name-action 2)
-        (wisi-containing-action 1 3) ;; for goto-declaration-start
-        (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken]))))
-      (proper_body
-       ((subprogram_body ))
-       ((package_body ))
-       ((task_body ))
-       ((protected_body )))
-      (protected_body
-       ((PROTECTED BODY IDENTIFIER aspect_specification_opt IS 
protected_operation_item_list_opt END identifier_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 5 motion 9 statement-end])
-        (wisi-name-action 3)
-        (wisi-containing-action 1 6)
-        (wisi-motion-action [1 5 9])
-        (wisi-face-apply-action [3 nil font-lock-type-face 8 nil 
font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken nil nil 
ada-indent nil nil nil]))))
-      (protected_body_stub
-       ((PROTECTED BODY IDENTIFIER IS SEPARATE aspect_specification_opt 
SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 7 statement-end])
-        (wisi-name-action 3)
-        (wisi-face-apply-action [3 nil font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken nil]))))
-      (protected_definition
-       ((declarative_part_opt PRIVATE declarative_part_opt END identifier_opt )
-        (progn
-      (wisi-statement-action [2 motion])
-      (wisi-face-apply-action [5 nil font-lock-type-face])
-      (wisi-indent-action [[ada-indent ada-indent] nil [ada-indent ada-indent] 
nil nil])))
-       ((declarative_part_opt END identifier_opt )
-        (progn
-      (wisi-face-apply-action [3 nil font-lock-type-face])
-      (wisi-indent-action [[ada-indent ada-indent] nil nil]))))
-      (protected_operation_item
-       ((subprogram_declaration ))
-       ((subprogram_body ))
-       ((entry_body ))
-       ((expression_function_declaration ))
-       ((null_procedure_declaration ))
-       ((aspect_clause )))
-      (protected_operation_item_list
-       ((protected_operation_item_list protected_operation_item ))
-       ((protected_operation_item )))
-      (protected_operation_item_list_opt
-       ((protected_operation_item_list ))
-       (()))
-      (protected_opt
-       ((PROTECTED ))
-       (()))
-      (protected_type_declaration
-       ((PROTECTED TYPE IDENTIFIER discriminant_part_opt 
aspect_specification_opt IS NEW interface_list WITH protected_definition 
SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 6 motion 9 motion 11 
statement-end])
-        (wisi-name-action 3)
-        (wisi-containing-action 1 10)
-        (wisi-motion-action [1 6 [10 PRIVATE] 11])
-        (wisi-face-apply-action [3 nil font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil nil
-                               ada-indent-broken ada-indent-broken 
ada-indent-broken nil nil])))
-       ((PROTECTED TYPE IDENTIFIER discriminant_part_opt 
aspect_specification_opt IS protected_definition SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 6 motion 8 statement-end])
-        (wisi-name-action 3)
-        (wisi-containing-action 1 7)
-        (wisi-motion-action [1 6 [7 PRIVATE] 8])
-        (wisi-face-apply-action [3 nil font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil [nil ada-indent] nil nil]))))
-      (qualified_expression
-       ((name tick aggregate )
-        (progn
-      (wisi-face-apply-action [1 font-lock-function-name-face 
font-lock-type-face])
-      (wisi-indent-action [nil nil (if ada-indent-hanging-rel-exp
-                                   (wisi-anchored 1 ada-indent-broken)
-                                 (wisi-anchored% 1 ada-indent-broken))]))))
-      (quantified_expression
-       ((FOR quantifier iterator_specification EQUAL_GREATER expression_opt )
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken (wisi-anchored% 4 ada-indent-broken)])))
-      (quantifier
-       ((ALL ))
-       ((SOME )))
-      (raise_expression
-       ((RAISE name WITH expression_opt )
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
(wisi-anchored% 3 ada-indent-broken)]))
-       ((RAISE name )))
-      (raise_statement
-       ((RAISE name WITH expression_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 4 motion 5 statement-end])
-      (wisi-containing-action 1 4)
-      ;; test/ada_mode-nominal.adb
-      ;; raise Constraint_Error with
-      ;;   "help " &
-      ;;   "me!";
-      ;;
-      ;; raise Constraint_Error
-      ;;   with Integer'Image (1) &
-      ;;   "help!";
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
(wisi-anchored% 3 ada-indent-broken) nil])))
-       ((RAISE name SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-indent-action [nil ada-indent-broken nil])))
-       ((RAISE SEMICOLON )
-        (wisi-statement-action [1 statement-start 2 statement-end])))
-      (range_g
-       ((name tick RANGE LEFT_PAREN expression_opt RIGHT_PAREN )
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken (wisi-anchored 4 1) (wisi-anchored 4 0)]))
-       ((name tick RANGE ))
-       ((simple_expression DOT_DOT simple_expression )))
-      (range_list
-       ((range_list COMMA range_g ))
-       ((range_g )))
-      (real_range_specification_opt
-       ((RANGE simple_expression DOT_DOT simple_expression ))
-       (()))
-      (record_definition
-       ((RECORD component_list_opt END RECORD )
-        (wisi-indent-action [[(ada-indent-record* 'TYPE 1 0) 
(ada-indent-record* 'TYPE 1 ada-indent)]
-                         [(ada-indent-record* 'TYPE 1 ada-indent) 
(ada-indent-record* 'TYPE 1 ada-indent)]
-                         (ada-indent-record* 'TYPE 1 0)
-                         nil]))
-       ((NULL RECORD )))
-      (record_representation_clause
-       ((FOR name USE RECORD mod_clause_opt component_clause_list END RECORD 
SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-type-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken
-                             (ada-indent-record 1 4 0)
-                             (ada-indent-record 1 4 ada-indent)
-                             (ada-indent-record 1 4 ada-indent)
-                             (ada-indent-record 1 4 0)
-                             nil nil]))))
-      (relation_and_list
-       ((relation_and_list AND relation ))
-       ((relation AND relation )))
-      (relation_and_then_list
-       ((relation_and_then_list AND THEN relation ))
-       ((relation AND THEN relation )))
-      (relation_or_list
-       ((relation_or_list OR relation ))
-       ((relation OR relation )))
-      (relation_or_else_list
-       ((relation_or_else_list OR ELSE relation ))
-       ((relation OR ELSE relation )))
-      (relation_xor_list
-       ((relation_xor_list XOR relation ))
-       ((relation XOR relation )))
-      (relation
-       ((simple_expression NOT IN membership_choice_list ))
-       ((simple_expression IN membership_choice_list ))
-       ((simple_expression relational_operator simple_expression ))
-       ((simple_expression ))
-       ((raise_expression )))
-      (relational_operator
-       ((EQUAL ))
-       ((SLASH_EQUAL ))
-       ((LESS ))
-       ((LESS_EQUAL ))
-       ((GREATER ))
-       ((GREATER_EQUAL )))
-      (renaming_declaration
-       ((object_renaming_declaration ))
-       ((package_renaming_declaration ))
-       ((subprogram_renaming_declaration ))
-       ((generic_renaming_declaration )))
-      (requeue_statement
-       ((REQUEUE name WITH ABORT SEMICOLON )
-        (wisi-statement-action [1 statement-start 5 statement-end]))
-       ((REQUEUE name SEMICOLON )
-        (wisi-statement-action [1 statement-start 3 statement-end])))
-      (result_profile
-       ((RETURN null_exclusion_opt name_opt )
-        (progn
-      (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face])
-      (wisi-indent-action* 1
-                           [nil
-                            (wisi-anchored* 1 ada-indent-broken)
-                            (wisi-anchored* 1 ada-indent-broken)])))
-       ((RETURN access_definition )
-        (wisi-indent-action* 1 [nil (wisi-anchored*- 1 ada-indent-broken)])))
-      (return_subtype_indication
-       ((subtype_indication ))
-       ((access_definition )))
-      (selected_component
-       ((name DOT IDENTIFIER )
-        (wisi-face-mark-action [1 prefix 3 suffix]))
-       ((name DOT CHARACTER_LITERAL )
-        (wisi-face-mark-action [1 prefix]))
-       ((name DOT STRING_LITERAL )
-        (wisi-face-mark-action [1 prefix]))
-       ((name DOT ALL )
-        (wisi-face-mark-action [1 prefix])))
-      (selective_accept
-       ((SELECT select_alternative_list_opt ELSE sequence_of_statements_opt 
END SELECT SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion 7 statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
-      (wisi-motion-action [1 [2 OR WHEN] 3 7])
-      (wisi-indent-action [[nil ada-indent] [nil ada-indent] nil [ada-indent 
ada-indent] nil nil nil])))
-       ((SELECT select_alternative_list_opt END SELECT SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-motion-action [1 [2 OR WHEN] 5])
-      (wisi-indent-action [[nil ada-indent] [nil ada-indent] nil nil nil]))))
-      (select_alternative
-       ((WHEN expression_opt EQUAL_GREATER accept_statement 
sequence_of_statements_opt )
-        (progn
-      (wisi-statement-action [1 motion])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken ada-indent 
ada-indent])))
-       ((WHEN expression_opt EQUAL_GREATER TERMINATE SEMICOLON )
-        (progn
-      (wisi-statement-action [1 motion 4 statement-start 5 statement-end])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken ada-indent 
nil])))
-       ((WHEN expression_opt EQUAL_GREATER delay_alternative )
-        (progn
-      (wisi-statement-action [1 motion])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent])))
-       ((accept_statement sequence_of_statements_opt ))
-       ((TERMINATE SEMICOLON )
-        (wisi-statement-action [1 statement-start 2 statement-end]))
-       ((delay_alternative )))
-      (select_alternative_list
-       ((select_alternative_list OR select_alternative )
-        (progn
-      (wisi-statement-action [2 motion])
-      (wisi-indent-action [nil nil ada-indent])))
-       ((select_alternative )
-        (wisi-indent-action [ada-indent])))
-      (select_alternative_list_opt
-       ((select_alternative_list ))
-       (()))
-      (select_statement
-       ((selective_accept ))
-       ((timed_entry_call ))
-       ((conditional_entry_call ))
-       ((asynchronous_select )))
-      (sequence_of_statements
-       ((sequence_of_statements statement ))
-       ((statement )))
-      (sequence_of_statements_opt
-       ((sequence_of_statements ))
-       (()))
-      (simple_expression
-       ((unary_adding_operator term_list ))
-       ((term_list )))
-      (simple_return_statement
-       ((RETURN expression_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-indent-action [nil ada-indent-broken nil]))))
-      (simple_statement
-       ((NULL SEMICOLON )
-        (wisi-statement-action [1 statement-start 2 statement-end]))
-       ((assignment_statement ))
-       ((exit_statement ))
-       ((GOTO IDENTIFIER SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-constant-face])))
-       ((procedure_call_statement ))
-       ((simple_return_statement ))
-       ((requeue_statement ))
-       ((delay_statement ))
-       ((ABORT name SEMICOLON )
-        (wisi-statement-action [1 statement-start 3 statement-end]))
-       ((raise_statement ))
-       ((pragma_g )))
-      (single_protected_declaration
-       ((PROTECTED IDENTIFIER aspect_specification_opt IS NEW interface_list 
WITH protected_definition SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 4 motion 7 motion 9 
statement-end])
-        (wisi-name-action 2)
-        (wisi-containing-action 1 8)
-        (wisi-motion-action [1 4 7 [8 PRIVATE] 9])
-        (wisi-face-apply-action [2 nil font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken nil nil ada-indent-broken 
ada-indent-broken ada-indent-broken nil
-                                 nil])))
-       ((PROTECTED IDENTIFIER aspect_specification_opt IS protected_definition 
SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 4 motion 6 statement-end])
-        (wisi-name-action 2)
-        (wisi-containing-action 1 5)
-        (wisi-motion-action [1 4 [5 PRIVATE] 6])
-        (wisi-face-apply-action [2 nil font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken nil [nil ada-indent] nil 
nil]))))
-      (single_task_declaration
-       ((TASK IDENTIFIER aspect_specification_opt IS NEW interface_list WITH 
task_definition END identifier_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 4 motion 7 motion 11 
statement-end])
-        (wisi-name-action 2)
-        (wisi-containing-action 1 8)
-        (wisi-motion-action [1 4 [8 PRIVATE] 11])
-        (wisi-face-apply-action [2 nil font-lock-type-face 9 nil 
font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken nil nil ada-indent-broken 
ada-indent-broken ada-indent-broken nil
-                                 nil nil nil])))
-       ((TASK IDENTIFIER aspect_specification_opt IS task_definition END 
identifier_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 4 motion 8 statement-end])
-        (wisi-name-action 2)
-        (wisi-containing-action 1 5)
-        (wisi-motion-action [1 4 [5 PRIVATE] 8])
-        (wisi-face-apply-action [2 nil font-lock-type-face 6 nil 
font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken nil [nil ada-indent] nil 
nil nil nil])))
-       ((TASK IDENTIFIER aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 4 statement-end])
-        (wisi-name-action 2)
-        (wisi-face-apply-action [2 nil font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken nil nil]))))
-      (statement
-       ((goto_label ))
-       ((simple_statement ))
-       ((compound_statement )))
-      (subprogram_body
-       ((overriding_indicator_opt subprogram_specification 
aspect_specification_opt IS declarative_part_opt BEGIN 
handled_sequence_of_statements END name_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 statement-override 4 motion 
6 motion 10 statement-end])
-      (wisi-containing-action 2 4)
-      (wisi-containing-action 4 5) ;; for goto_declarative_region_start
-      (wisi-containing-action 2 7)
-      (wisi-motion-action [1 [2 FUNCTION PROCEDURE] 4 6 10])
-      (wisi-face-apply-action [9 font-lock-function-name-face 
font-lock-function-name-face])
-      (wisi-indent-action [nil [nil ada-indent] nil nil [ada-indent ada-indent]
-                             nil [ada-indent ada-indent] nil ada-indent-broken 
nil]))))
-      (subprogram_body_stub
-       ((overriding_indicator_opt subprogram_specification IS SEPARATE 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 statement-override 6 
statement-end])
-      (wisi-indent-action [nil nil nil ada-indent-broken ada-indent-broken 
nil]))))
-      (subprogram_declaration
-       ((overriding_indicator_opt subprogram_specification 
aspect_specification_opt SEMICOLON )
-        (wisi-statement-action [1 statement-start 2 statement-override 4 
statement-end])))
-      (subprogram_default
-       ((name )
-        (wisi-face-apply-action [1 font-lock-function-name-face 
font-lock-function-name-face]))
-       ((BOX ))
-       ((NULL )))
-      (subprogram_renaming_declaration
-       ((overriding_indicator_opt subprogram_specification RENAMES name 
aspect_specification_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 2 statement-override 6 
statement-end])
-      (wisi-face-apply-action [4 font-lock-function-name-face 
font-lock-function-name-face])
-      (wisi-indent-action [nil nil (ada-indent-renames 2) ada-indent-broken 
ada-indent-broken nil]))))
-      (subprogram_specification
-       ((procedure_specification ))
-       ((function_specification )))
-      (subtype_declaration
-       ((SUBTYPE IDENTIFIER IS subtype_indication aspect_specification_opt 
SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 6 statement-end])
-        (wisi-name-action 2)
-        (wisi-face-apply-action [2 nil font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil nil]))))
-      (subtype_indication
-       ((NOT NULL name constraint )
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face]))
-       ((NOT NULL name )
-        (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face]))
-       ((name constraint )
-        (wisi-face-apply-action [1 font-lock-function-name-face 
font-lock-type-face]))
-       ((name )
-        (wisi-face-apply-action [1 font-lock-function-name-face 
font-lock-type-face])))
-      (subunit
-       ((SEPARATE LEFT_PAREN name RIGHT_PAREN proper_body )
-        (progn
-      (wisi-statement-action [1 statement-start 5 motion])
-      (wisi-indent-action [nil ada-indent-broken (wisi-anchored 2 1) 
(wisi-anchored 2 0) nil]))))
-      (task_body
-       ((TASK BODY IDENTIFIER aspect_specification_opt IS declarative_part_opt 
BEGIN handled_sequence_of_statements END identifier_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 5 motion 7 motion 11 
statement-end])
-        (wisi-name-action 3)
-        (wisi-containing-action 1 6)
-        (wisi-containing-action 1 8)
-        (wisi-motion-action [1 5 7 11])
-        (wisi-face-apply-action [3 nil font-lock-type-face 10 nil 
font-lock-type-face])
-        (wisi-indent-action [nil nil ada-indent-broken nil nil [ada-indent 
ada-indent]
-                               nil [ada-indent ada-indent] nil nil nil]))))
-      (task_body_stub
-       ((TASK BODY IDENTIFIER IS SEPARATE aspect_specification_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 7 statement-end])
-        (wisi-name-action 3)
-        (wisi-face-apply-action [3 nil font-lock-type-face])
-        (wisi-indent-action [nil nil ada-indent-broken nil ada-indent-broken 
ada-indent-broken nil]))))
-      (task_definition
-       ((declarative_part_opt PRIVATE declarative_part_opt )
-        (progn
-      (wisi-statement-action [2 motion])
-      (wisi-containing-action 2 3)
-      (wisi-indent-action [[ada-indent ada-indent] nil [ada-indent 
ada-indent]])))
-       ((declarative_part_opt )
-        (wisi-indent-action [[ada-indent ada-indent]])))
-      (task_type_declaration
-       ((TASK TYPE IDENTIFIER discriminant_part_opt aspect_specification_opt 
IS NEW interface_list WITH task_definition END identifier_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 6 motion 9 motion 13 
statement-end])
-        (wisi-name-action 3)
-        (wisi-containing-action 1 10)
-        (wisi-motion-action [1 6 9 [10 PRIVATE] 13])
-        (wisi-face-apply-action [3 nil font-lock-type-face 12 nil 
font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil nil
-                               ada-indent-broken ada-indent-broken 
ada-indent-broken nil nil nil nil])))
-       ((TASK TYPE IDENTIFIER discriminant_part_opt aspect_specification_opt 
IS task_definition END identifier_opt SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 6 motion 10 statement-end])
-        (wisi-name-action 3)
-        (wisi-containing-action 1 7)
-        (wisi-face-apply-action [3 nil font-lock-type-face 9 nil 
font-lock-type-face])
-        (wisi-motion-action [1 6 [7 PRIVATE] 10])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil [nil ada-indent] nil nil nil
-                                 nil])))
-       ((TASK TYPE IDENTIFIER discriminant_part_opt aspect_specification_opt 
SEMICOLON )
-        (progn
-        (wisi-statement-action [1 statement-start 6 statement-end])
-        (wisi-name-action 3)
-        (wisi-face-apply-action [3 nil font-lock-type-face])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil nil]))))
-      (term
-       ((term multiplying_operator factor ))
-       ((factor )))
-      (term_list
-       ((term_list binary_adding_operator term ))
-       ((term )))
-      (tick
-       ((TICK_1 )))
-      (timed_entry_call
-       ((SELECT entry_call_alternative OR delay_alternative END SELECT 
SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 motion 6 statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
-      (wisi-indent-action [nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil nil nil]))))
-      (triggering_alternative
-       ((procedure_call_statement sequence_of_statements_opt ))
-       ((name sequence_of_statements_opt ))
-       ((delay_statement sequence_of_statements_opt )))
-      (type_declaration
-       ((full_type_declaration ))
-       ((incomplete_type_declaration ))
-       ((private_type_declaration ))
-       ((private_extension_declaration )))
-      (type_definition
-       ((enumeration_type_definition ))
-       ((RANGE simple_expression DOT_DOT simple_expression ))
-       ((MOD expression_opt ))
-       ((DIGITS expression_opt real_range_specification_opt ))
-       ((DELTA expression_opt DIGITS expression_opt 
real_range_specification_opt ))
-       ((DELTA expression_opt real_range_specification_opt ))
-       ((array_type_definition ))
-       ((abstract_tagged_limited_opt record_definition ))
-       ((access_definition ))
-       ((derived_type_definition ))
-       ((interface_type_definition )))
-      (variant_part
-       ((CASE direct_name_opt IS variant_list END CASE SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 4) ;; for goto-declaration-start
-      (wisi-indent-action [nil ada-indent-broken nil ada-indent-when nil nil 
nil]))))
-      (variant_list
-       ((variant_list variant ))
-       ((variant )))
-      (variant
-       ((WHEN discrete_choice_list EQUAL_GREATER component_list_opt )
-        (progn
-      (wisi-statement-action [1 motion])
-      ;; ada-indent-when applied in variant_part
-      (wisi-indent-action [nil (wisi-hanging nil ada-indent-broken) ada-indent 
[ada-indent ada-indent]]))))
-      (unary_adding_operator
-       ((PLUS ))
-       ((MINUS )))
-      (use_clause
-       ((USE ALL TYPE name_list SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-face-apply-list-action [4 font-lock-function-name-face 
font-lock-type-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-use nil])))
-       ((USE TYPE name_list SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 4 statement-end])
-      (wisi-face-apply-list-action [3 font-lock-function-name-face 
font-lock-type-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-use nil])))
-       ((USE name_list SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-face-apply-list-action [2 font-lock-function-name-face 
font-lock-function-name-face])
-      (wisi-indent-action [nil ada-indent-use nil]))))
-      (with_clause
-       ((LIMITED PRIVATE WITH name_list SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-face-apply-list-action [4 font-lock-function-name-face 
font-lock-function-name-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-with nil])))
-       ((LIMITED WITH name_list SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 4 statement-end])
-      (wisi-face-apply-list-action [3 font-lock-function-name-face 
font-lock-function-name-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-with nil])))
-       ((PRIVATE WITH name_list SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 4 statement-end])
-      (wisi-face-apply-list-action [3 font-lock-function-name-face 
font-lock-function-name-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-with nil])))
-       ((WITH name_list SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-face-apply-list-action [2 font-lock-function-name-face 
font-lock-function-name-face])
-      (wisi-indent-action [nil ada-indent-with nil])))))
-     [((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (ENTRY . 
(overriding_indicator_opt . 2)) (EXIT .  5) (FOR . ( 6 (block_label_opt . 1))) 
(FUNCTION . (overriding_indicator_opt . 2)) (GENERIC .  8) (GOTO .  9) (IF .  
10) (LIMITED .  11) (LOOP . (block_label_opt . 1)) (NOT .  12) (NULL .  13) 
(OVERRIDING .  14) (PACKAGE .  15) (PRAGMA .  16) (PRIVATE .  17) (PROCEDURE . 
(overriding_indicator_opt .  [...]
-      ((default . error) (IDENTIFIER .  118))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (IS . (expression_opt . 1)) (NEW .  122) 
(NOT .  123) (NULL .  124) (RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (UNTIL .  147) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (WHEN . (identifier_opt . 1)) (SEMICOLON . 
(identifier_opt . 1)) (IDENTIFIER .  149))
-      ((default . error) (IDENTIFIER .  151) (STRING_LITERAL .  152) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (FUNCTION . ( 159 (generic_formal_part . 1))) 
(PACKAGE . ( 160 (generic_formal_part . 1))) (PRAGMA .  16) (PROCEDURE . ( 161 
(generic_formal_part . 1))) (TYPE .  162) (USE .  28) (WITH .  163) (IDENTIFIER 
.  164))
-      ((default . error) (IDENTIFIER .  174))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (THEN . (expression_opt . 1)) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (PRIVATE .  176) (WITH .  177))
-      ((default . error) (OVERRIDING .  178))
-      ((default . error) (SEMICOLON .  179))
-      ((default . error) (ENTRY . (overriding_indicator_opt . 1)) (FUNCTION . 
(overriding_indicator_opt . 1)) (PROCEDURE . (overriding_indicator_opt . 1)))
-      ((default . error) (BODY .  180) (IDENTIFIER .  119) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  182))
-      ((default . error) (ENTRY . (overriding_indicator_opt . 2)) (FOR .  183) 
(FUNCTION . (overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) 
(OVERRIDING .  14) (PACKAGE .  15) (PROCEDURE . (overriding_indicator_opt . 2)) 
(PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) (TYPE .  27) (USE .  28) (WITH . 
 184) (IDENTIFIER .  185))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (BODY .  188) (TYPE .  189) (IDENTIFIER .  190))
-      ((default . error) (SEMICOLON .  191) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (DO . 
(extended_return_object_declaration_opt . 1)) (NEW .  122) (NOT .  123) (NULL . 
 124) (RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  194) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (LEFT_PAREN .  198))
-      ((default . error) (ACCEPT .  1) (DELAY .  4) (ELSE . 
(select_alternative_list_opt . 1)) (END . (select_alternative_list_opt . 1)) 
(TERMINATE .  199) (WHEN .  200) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  211))
-      ((default . error) (BODY .  212) (TYPE .  213) (IDENTIFIER .  214))
-      ((default . error) (IDENTIFIER .  215))
-      ((default . error) (ALL .  216) (TYPE .  217) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (LOOP . (expression_opt . 1)) (NEW .  
122) (NOT .  123) (NULL .  124) (RAISE .  125) (LEFT_PAREN .  126) (MINUS .  
127) (PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL 
.  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  222))
-      ((default . error) (LEFT_PAREN . (name . 5)) (COLON . ( 223 
(identifier_list . 1))) (COLON_EQUAL . (name . 5)) (COMMA . (identifier_list . 
1)) (DOT . (name . 5)) (SEMICOLON . (name . 5)) (TICK_1 . (name . 5)))
-      ((default . error) (ACCEPT . (name . 7)) (ABORT . (name . 7)) (AND . 
(name . 7)) (BEGIN . (name . 7)) (CASE . (name . 7)) (DECLARE . (name . 7)) 
(DELAY . (name . 7)) (DIGITS . (name . 7)) (DO . (name . 7)) (ELSE . (name . 
7)) (ELSIF . (name . 7)) (EXIT . (name . 7)) (FOR . (name . 7)) (GOTO . (name . 
7)) (IF . (name . 7)) (IN . (name . 7)) (IS . (name . 7)) (LOOP . (name . 7)) 
(MOD . (name . 7)) (NOT . (name . 7)) (NULL . (name . 7)) (OF . (name . 7)) (OR 
. (name . 7)) (PRAGMA . (n [...]
-      ((default . error) (ACCEPT . (name . 6)) (ABORT . (name . 6)) (AND . 
(name . 6)) (BEGIN . (name . 6)) (CASE . (name . 6)) (DECLARE . (name . 6)) 
(DELAY . (name . 6)) (DIGITS . (name . 6)) (DO . (name . 6)) (ELSE . (name . 
6)) (ELSIF . (name . 6)) (EXIT . (name . 6)) (FOR . (name . 6)) (GOTO . (name . 
6)) (IF . (name . 6)) (IN . (name . 6)) (IS . (name . 6)) (LOOP . (name . 6)) 
(MOD . (name . 6)) (NOT . (name . 6)) (NULL . (name . 6)) (OF . (name . 6)) (OR 
. (name . 6)) (PRAGMA . (n [...]
-      ((default . error) (ACCEPT . (declaration . 0)) (ABORT . (declaration . 
0)) (BEGIN . (declaration . 0)) (CASE . (declaration . 0)) (DECLARE . 
(declaration . 0)) (DELAY . (declaration . 0)) (END . (declaration . 0)) (ENTRY 
. (declaration . 0)) (EXIT . (declaration . 0)) (FOR . (declaration . 0)) 
(FUNCTION . (declaration . 0)) (GENERIC . (declaration . 0)) (GOTO . 
(declaration . 0)) (IF . (declaration . 0)) (LIMITED . (declaration . 0)) (LOOP 
. (declaration . 0)) (NOT . (declaration  [...]
-      ((default . error) (ACCEPT . (compound_statement . 5)) (ABORT . 
(compound_statement . 5)) (BEGIN . (compound_statement . 5)) (CASE . 
(compound_statement . 5)) (DECLARE . (compound_statement . 5)) (DELAY . 
(compound_statement . 5)) (ELSE . (compound_statement . 5)) (ELSIF . 
(compound_statement . 5)) (END . (compound_statement . 5)) (ENTRY . 
(compound_statement . 5)) (EXCEPTION . (compound_statement . 5)) (EXIT . 
(compound_statement . 5)) (FOR . (compound_statement . 5)) (FUNCTION .  [...]
-      ((default . error) (ACCEPT . (declaration . 1)) (ABORT . (declaration . 
1)) (BEGIN . (declaration . 1)) (CASE . (declaration . 1)) (DECLARE . 
(declaration . 1)) (DELAY . (declaration . 1)) (END . (declaration . 1)) (ENTRY 
. (declaration . 1)) (EXIT . (declaration . 1)) (FOR . (declaration . 1)) 
(FUNCTION . (declaration . 1)) (GENERIC . (declaration . 1)) (GOTO . 
(declaration . 1)) (IF . (declaration . 1)) (LIMITED . (declaration . 1)) (LOOP 
. (declaration . 1)) (NOT . (declaration  [...]
-      ((default . error) (ACCEPT . (simple_statement . 1)) (ABORT . 
(simple_statement . 1)) (BEGIN . (simple_statement . 1)) (CASE . 
(simple_statement . 1)) (DECLARE . (simple_statement . 1)) (DELAY . 
(simple_statement . 1)) (ELSE . (simple_statement . 1)) (ELSIF . 
(simple_statement . 1)) (END . (simple_statement . 1)) (ENTRY . 
(simple_statement . 1)) (EXCEPTION . (simple_statement . 1)) (EXIT . 
(simple_statement . 1)) (FOR . (simple_statement . 1)) (FUNCTION . 
(simple_statement . 1)) (G [...]
-      ((default . error) (ACCEPT . (select_statement . 3)) (ABORT . 
(select_statement . 3)) (BEGIN . (select_statement . 3)) (CASE . 
(select_statement . 3)) (DECLARE . (select_statement . 3)) (DELAY . 
(select_statement . 3)) (ELSE . (select_statement . 3)) (ELSIF . 
(select_statement . 3)) (END . (select_statement . 3)) (ENTRY . 
(select_statement . 3)) (EXCEPTION . (select_statement . 3)) (EXIT . 
(select_statement . 3)) (FOR . (select_statement . 3)) (FUNCTION . 
(select_statement . 3)) (G [...]
-      ((default . error) (ACCEPT . (aspect_clause . 3)) (ABORT . 
(aspect_clause . 3)) (BEGIN . (aspect_clause . 3)) (CASE . (aspect_clause . 3)) 
(DECLARE . (aspect_clause . 3)) (DELAY . (aspect_clause . 3)) (END . 
(aspect_clause . 3)) (ENTRY . (aspect_clause . 3)) (EXIT . (aspect_clause . 3)) 
(FOR . (aspect_clause . 3)) (FUNCTION . (aspect_clause . 3)) (GENERIC . 
(aspect_clause . 3)) (GOTO . (aspect_clause . 3)) (IF . (aspect_clause . 3)) 
(LIMITED . (aspect_clause . 3)) (LOOP . (aspect_c [...]
-      ((default . error) (ACCEPT . (name . 3)) (ABORT . (name . 3)) (AND . 
(name . 3)) (BEGIN . (name . 3)) (CASE . (name . 3)) (DECLARE . (name . 3)) 
(DELAY . (name . 3)) (DIGITS . (name . 3)) (DO . (name . 3)) (ELSE . (name . 
3)) (ELSIF . (name . 3)) (EXIT . (name . 3)) (FOR . (name . 3)) (GOTO . (name . 
3)) (IF . (name . 3)) (IN . (name . 3)) (IS . (name . 3)) (LOOP . (name . 3)) 
(MOD . (name . 3)) (NOT . (name . 3)) (NULL . (name . 3)) (OF . (name . 3)) (OR 
. (name . 3)) (PRAGMA . (n [...]
-      ((default . error) (BEGIN . (block_label_opt . 0)) (DECLARE . 
(block_label_opt . 0)) (FOR . (block_label_opt . 0)) (LOOP . (block_label_opt . 
0)) (WHILE . (block_label_opt . 0)))
-      ((default . error) (BEGIN .  224) (DECLARE .  225) (FOR .  226) (LOOP .  
227) (WHILE .  29))
-      ((default . error) (ACCEPT . (compound_statement . 3)) (ABORT . 
(compound_statement . 3)) (BEGIN . (compound_statement . 3)) (CASE . 
(compound_statement . 3)) (DECLARE . (compound_statement . 3)) (DELAY . 
(compound_statement . 3)) (ELSE . (compound_statement . 3)) (ELSIF . 
(compound_statement . 3)) (END . (compound_statement . 3)) (ENTRY . 
(compound_statement . 3)) (EXCEPTION . (compound_statement . 3)) (EXIT . 
(compound_statement . 3)) (FOR . (compound_statement . 3)) (FUNCTION .  [...]
-      ((default . error) (ACCEPT . (declaration . 2)) (ABORT . (declaration . 
2)) (BEGIN . (declaration . 2)) (CASE . (declaration . 2)) (DECLARE . 
(declaration . 2)) (DELAY . (declaration . 2)) (END . (declaration . 2)) (ENTRY 
. (declaration . 2)) (EXIT . (declaration . 2)) (FOR . (declaration . 2)) 
(FUNCTION . (declaration . 2)) (GENERIC . (declaration . 2)) (GOTO . 
(declaration . 2)) (IF . (declaration . 2)) (LIMITED . (declaration . 2)) (LOOP 
. (declaration . 2)) (NOT . (declaration  [...]
-      ((default . error) (ACCEPT . (body_g . 1)) (ABORT . (body_g . 1)) (BEGIN 
. (body_g . 1)) (CASE . (body_g . 1)) (DECLARE . (body_g . 1)) (DELAY . (body_g 
. 1)) (END . (body_g . 1)) (ENTRY . (body_g . 1)) (EXIT . (body_g . 1)) (FOR . 
(body_g . 1)) (FUNCTION . (body_g . 1)) (GENERIC . (body_g . 1)) (GOTO . 
(body_g . 1)) (IF . (body_g . 1)) (LIMITED . (body_g . 1)) (LOOP . (body_g . 
1)) (NOT . (body_g . 1)) (NULL . (body_g . 1)) (OVERRIDING . (body_g . 1)) 
(PACKAGE . (body_g . 1)) (PRA [...]
-      ((default . error) (ACCEPT . (compound_statement . 1)) (ABORT . 
(compound_statement . 1)) (BEGIN . (compound_statement . 1)) (CASE . 
(compound_statement . 1)) (DECLARE . (compound_statement . 1)) (DELAY . 
(compound_statement . 1)) (ELSE . (compound_statement . 1)) (ELSIF . 
(compound_statement . 1)) (END . (compound_statement . 1)) (ENTRY . 
(compound_statement . 1)) (EXCEPTION . (compound_statement . 1)) (EXIT . 
(compound_statement . 1)) (FOR . (compound_statement . 1)) (FUNCTION .  [...]
-      ((default . error) (ACCEPT . (compilation_unit_list . 1)) (ABORT . 
(compilation_unit_list . 1)) (BEGIN . (compilation_unit_list . 1)) (CASE . 
(compilation_unit_list . 1)) (DECLARE . (compilation_unit_list . 1)) (DELAY . 
(compilation_unit_list . 1)) (ENTRY . (compilation_unit_list . 1)) (EXIT . 
(compilation_unit_list . 1)) (FOR . (compilation_unit_list . 1)) (FUNCTION . 
(compilation_unit_list . 1)) (GENERIC . (compilation_unit_list . 1)) (GOTO . 
(compilation_unit_list . 1)) (IF . (c [...]
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (ENTRY . 
(overriding_indicator_opt . 2)) (EXIT .  5) (FOR . ( 6 (block_label_opt . 1))) 
(FUNCTION . (overriding_indicator_opt . 2)) (GENERIC .  8) (GOTO .  9) (IF .  
10) (LIMITED .  11) (LOOP . (block_label_opt . 1)) (NOT .  12) (NULL .  13) 
(OVERRIDING .  14) (PACKAGE .  15) (PRAGMA .  16) (PRIVATE .  17) (PROCEDURE . 
(overriding_indicator_opt .  [...]
-      ((default . error) (ACCEPT . (statement . 2)) (ABORT . (statement . 2)) 
(BEGIN . (statement . 2)) (CASE . (statement . 2)) (DECLARE . (statement . 2)) 
(DELAY . (statement . 2)) (ELSE . (statement . 2)) (ELSIF . (statement . 2)) 
(END . (statement . 2)) (ENTRY . (statement . 2)) (EXCEPTION . (statement . 2)) 
(EXIT . (statement . 2)) (FOR . (statement . 2)) (FUNCTION . (statement . 2)) 
(GENERIC . (statement . 2)) (GOTO . (statement . 2)) (IF . (statement . 2)) 
(LIMITED . (statement .  [...]
-      ((default . error) (ACCEPT . (select_statement . 2)) (ABORT . 
(select_statement . 2)) (BEGIN . (select_statement . 2)) (CASE . 
(select_statement . 2)) (DECLARE . (select_statement . 2)) (DELAY . 
(select_statement . 2)) (ELSE . (select_statement . 2)) (ELSIF . 
(select_statement . 2)) (END . (select_statement . 2)) (ENTRY . 
(select_statement . 2)) (EXCEPTION . (select_statement . 2)) (EXIT . 
(select_statement . 2)) (FOR . (select_statement . 2)) (FUNCTION . 
(select_statement . 2)) (G [...]
-      ((default . error) (ACCEPT . (compilation_unit . 3)) (ABORT . 
(compilation_unit . 3)) (BEGIN . (compilation_unit . 3)) (CASE . 
(compilation_unit . 3)) (DECLARE . (compilation_unit . 3)) (DELAY . 
(compilation_unit . 3)) (ENTRY . (compilation_unit . 3)) (EXIT . 
(compilation_unit . 3)) (FOR . (compilation_unit . 3)) (FUNCTION . 
(compilation_unit . 3)) (GENERIC . (compilation_unit . 3)) (GOTO . 
(compilation_unit . 3)) (IF . (compilation_unit . 3)) (LIMITED . 
(compilation_unit . 3)) (LO [...]
-      ((default . error) (ACCEPT . (simple_statement . 7)) (ABORT . 
(simple_statement . 7)) (BEGIN . (simple_statement . 7)) (CASE . 
(simple_statement . 7)) (DECLARE . (simple_statement . 7)) (DELAY . 
(simple_statement . 7)) (ELSE . (simple_statement . 7)) (ELSIF . 
(simple_statement . 7)) (END . (simple_statement . 7)) (ENTRY . 
(simple_statement . 7)) (EXCEPTION . (simple_statement . 7)) (EXIT . 
(simple_statement . 7)) (FOR . (simple_statement . 7)) (FUNCTION . 
(simple_statement . 7)) (G [...]
-      ((default . error) (ACCEPT . (declaration . 3)) (ABORT . (declaration . 
3)) (BEGIN . (declaration . 3)) (CASE . (declaration . 3)) (DECLARE . 
(declaration . 3)) (DELAY . (declaration . 3)) (END . (declaration . 3)) (ENTRY 
. (declaration . 3)) (EXIT . (declaration . 3)) (FOR . (declaration . 3)) 
(FUNCTION . (declaration . 3)) (GENERIC . (declaration . 3)) (GOTO . 
(declaration . 3)) (IF . (declaration . 3)) (LIMITED . (declaration . 3)) (LOOP 
. (declaration . 3)) (NOT . (declaration  [...]
-      ((default . error) (ACCEPT . (aspect_clause . 1)) (ABORT . 
(aspect_clause . 1)) (BEGIN . (aspect_clause . 1)) (CASE . (aspect_clause . 1)) 
(DECLARE . (aspect_clause . 1)) (DELAY . (aspect_clause . 1)) (END . 
(aspect_clause . 1)) (ENTRY . (aspect_clause . 1)) (EXIT . (aspect_clause . 1)) 
(FOR . (aspect_clause . 1)) (FUNCTION . (aspect_clause . 1)) (GENERIC . 
(aspect_clause . 1)) (GOTO . (aspect_clause . 1)) (IF . (aspect_clause . 1)) 
(LIMITED . (aspect_clause . 1)) (LOOP . (aspect_c [...]
-      ((default . error) (ACCEPT . (declaration . 4)) (ABORT . (declaration . 
4)) (BEGIN . (declaration . 4)) (CASE . (declaration . 4)) (DECLARE . 
(declaration . 4)) (DELAY . (declaration . 4)) (END . (declaration . 4)) (ENTRY 
. (declaration . 4)) (EXIT . (declaration . 4)) (FOR . (declaration . 4)) 
(FUNCTION . (declaration . 4)) (GENERIC . (declaration . 4)) (GOTO . 
(declaration . 4)) (IF . (declaration . 4)) (LIMITED . (declaration . 4)) (LOOP 
. (declaration . 4)) (NOT . (declaration  [...]
-      ((default . error) (ACCEPT . (simple_statement . 2)) (ABORT . 
(simple_statement . 2)) (BEGIN . (simple_statement . 2)) (CASE . 
(simple_statement . 2)) (DECLARE . (simple_statement . 2)) (DELAY . 
(simple_statement . 2)) (ELSE . (simple_statement . 2)) (ELSIF . 
(simple_statement . 2)) (END . (simple_statement . 2)) (ENTRY . 
(simple_statement . 2)) (EXCEPTION . (simple_statement . 2)) (EXIT . 
(simple_statement . 2)) (FOR . (simple_statement . 2)) (FUNCTION . 
(simple_statement . 2)) (G [...]
-      ((default . error) (ACCEPT . (declaration . 5)) (ABORT . (declaration . 
5)) (BEGIN . (declaration . 5)) (CASE . (declaration . 5)) (DECLARE . 
(declaration . 5)) (DELAY . (declaration . 5)) (END . (declaration . 5)) (ENTRY 
. (declaration . 5)) (EXIT . (declaration . 5)) (FOR . (declaration . 5)) 
(FUNCTION . (declaration . 5)) (GENERIC . (declaration . 5)) (GOTO . 
(declaration . 5)) (IF . (declaration . 5)) (LIMITED . (declaration . 5)) (LOOP 
. (declaration . 5)) (NOT . (declaration  [...]
-      ((default . error) (ACCEPT . (compound_statement . 4)) (ABORT . 
(compound_statement . 4)) (BEGIN . (compound_statement . 4)) (CASE . 
(compound_statement . 4)) (DECLARE . (compound_statement . 4)) (DELAY . 
(compound_statement . 4)) (ELSE . (compound_statement . 4)) (ELSIF . 
(compound_statement . 4)) (END . (compound_statement . 4)) (ENTRY . 
(compound_statement . 4)) (EXCEPTION . (compound_statement . 4)) (EXIT . 
(compound_statement . 4)) (FOR . (compound_statement . 4)) (FUNCTION .  [...]
-      ((default . error) (ACCEPT . (type_declaration . 0)) (ABORT . 
(type_declaration . 0)) (BEGIN . (type_declaration . 0)) (CASE . 
(type_declaration . 0)) (DECLARE . (type_declaration . 0)) (DELAY . 
(type_declaration . 0)) (END . (type_declaration . 0)) (ENTRY . 
(type_declaration . 0)) (EXIT . (type_declaration . 0)) (FOR . 
(type_declaration . 0)) (FUNCTION . (type_declaration . 0)) (GENERIC . 
(type_declaration . 0)) (GOTO . (type_declaration . 0)) (IF . (type_declaration 
. 0)) (LIMITE [...]
-      ((default . error) (IS . (subprogram_specification . 1)) (WITH . 
(subprogram_specification . 1)) (SEMICOLON . (subprogram_specification . 1)))
-      ((default . error) (ACCEPT . (declaration . 6)) (ABORT . (declaration . 
6)) (BEGIN . (declaration . 6)) (CASE . (declaration . 6)) (DECLARE . 
(declaration . 6)) (DELAY . (declaration . 6)) (END . (declaration . 6)) (ENTRY 
. (declaration . 6)) (EXIT . (declaration . 6)) (FOR . (declaration . 6)) 
(FUNCTION . (declaration . 6)) (GENERIC . (declaration . 6)) (GOTO . 
(declaration . 6)) (IF . (declaration . 6)) (LIMITED . (declaration . 6)) (LOOP 
. (declaration . 6)) (NOT . (declaration  [...]
-      ((default . error) (FUNCTION .  7) (PACKAGE .  230) (PROCEDURE .  18))
-      ((default . error) (ACCEPT . (declaration . 7)) (ABORT . (declaration . 
7)) (BEGIN . (declaration . 7)) (CASE . (declaration . 7)) (DECLARE . 
(declaration . 7)) (DELAY . (declaration . 7)) (END . (declaration . 7)) (ENTRY 
. (declaration . 7)) (EXIT . (declaration . 7)) (FOR . (declaration . 7)) 
(FUNCTION . (declaration . 7)) (GENERIC . (declaration . 7)) (GOTO . 
(declaration . 7)) (IF . (declaration . 7)) (LIMITED . (declaration . 7)) (LOOP 
. (declaration . 7)) (NOT . (declaration  [...]
-      ((default . error) (ACCEPT . (generic_declaration . 1)) (ABORT . 
(generic_declaration . 1)) (BEGIN . (generic_declaration . 1)) (CASE . 
(generic_declaration . 1)) (DECLARE . (generic_declaration . 1)) (DELAY . 
(generic_declaration . 1)) (END . (generic_declaration . 1)) (ENTRY . 
(generic_declaration . 1)) (EXIT . (generic_declaration . 1)) (FOR . 
(generic_declaration . 1)) (FUNCTION . (generic_declaration . 1)) (GENERIC . 
(generic_declaration . 1)) (GOTO . (generic_declaration . 1) [...]
-      ((default . error) (ACCEPT . (renaming_declaration . 3)) (ABORT . 
(renaming_declaration . 3)) (BEGIN . (renaming_declaration . 3)) (CASE . 
(renaming_declaration . 3)) (DECLARE . (renaming_declaration . 3)) (DELAY . 
(renaming_declaration . 3)) (END . (renaming_declaration . 3)) (ENTRY . 
(renaming_declaration . 3)) (EXIT . (renaming_declaration . 3)) (FOR . 
(renaming_declaration . 3)) (FUNCTION . (renaming_declaration . 3)) (GENERIC . 
(renaming_declaration . 3)) (GOTO . (renaming_dec [...]
-      ((default . error) (ACCEPT . (generic_declaration . 0)) (ABORT . 
(generic_declaration . 0)) (BEGIN . (generic_declaration . 0)) (CASE . 
(generic_declaration . 0)) (DECLARE . (generic_declaration . 0)) (DELAY . 
(generic_declaration . 0)) (END . (generic_declaration . 0)) (ENTRY . 
(generic_declaration . 0)) (EXIT . (generic_declaration . 0)) (FOR . 
(generic_declaration . 0)) (FUNCTION . (generic_declaration . 0)) (GENERIC . 
(generic_declaration . 0)) (GOTO . (generic_declaration . 0) [...]
-      ((default . error) (ACCEPT . (statement . 0)) (ABORT . (statement . 0)) 
(BEGIN . (statement . 0)) (CASE . (statement . 0)) (DECLARE . (statement . 0)) 
(DELAY . (statement . 0)) (ELSE . (statement . 0)) (ELSIF . (statement . 0)) 
(END . (statement . 0)) (ENTRY . (statement . 0)) (EXCEPTION . (statement . 0)) 
(EXIT . (statement . 0)) (FOR . (statement . 0)) (FUNCTION . (statement . 0)) 
(GENERIC . (statement . 0)) (GOTO . (statement . 0)) (IF . (statement . 0)) 
(LIMITED . (statement .  [...]
-      ((default . error) (COLON .  233) (COMMA .  234))
-      ((default . error) (ACCEPT . (compound_statement . 0)) (ABORT . 
(compound_statement . 0)) (BEGIN . (compound_statement . 0)) (CASE . 
(compound_statement . 0)) (DECLARE . (compound_statement . 0)) (DELAY . 
(compound_statement . 0)) (ELSE . (compound_statement . 0)) (ELSIF . 
(compound_statement . 0)) (END . (compound_statement . 0)) (ENTRY . 
(compound_statement . 0)) (EXCEPTION . (compound_statement . 0)) (EXIT . 
(compound_statement . 0)) (FOR . (compound_statement . 0)) (FUNCTION .  [...]
-      ((default . error) (ACCEPT . (type_declaration . 1)) (ABORT . 
(type_declaration . 1)) (BEGIN . (type_declaration . 1)) (CASE . 
(type_declaration . 1)) (DECLARE . (type_declaration . 1)) (DELAY . 
(type_declaration . 1)) (END . (type_declaration . 1)) (ENTRY . 
(type_declaration . 1)) (EXIT . (type_declaration . 1)) (FOR . 
(type_declaration . 1)) (FUNCTION . (type_declaration . 1)) (GENERIC . 
(type_declaration . 1)) (GOTO . (type_declaration . 1)) (IF . (type_declaration 
. 1)) (LIMITE [...]
-      ((default . error) (ACCEPT . (compound_statement . 2)) (ABORT . 
(compound_statement . 2)) (BEGIN . (compound_statement . 2)) (CASE . 
(compound_statement . 2)) (DECLARE . (compound_statement . 2)) (DELAY . 
(compound_statement . 2)) (ELSE . (compound_statement . 2)) (ELSIF . 
(compound_statement . 2)) (END . (compound_statement . 2)) (ENTRY . 
(compound_statement . 2)) (EXCEPTION . (compound_statement . 2)) (EXIT . 
(compound_statement . 2)) (FOR . (compound_statement . 2)) (FUNCTION .  [...]
-      ((default . error) (LEFT_PAREN .  235) (COLON_EQUAL .  236) (DOT .  237) 
(SEMICOLON .  238) (TICK_1 .  239))
-      ((default . error) (ACCEPT . (declaration . 8)) (ABORT . (declaration . 
8)) (BEGIN . (declaration . 8)) (CASE . (declaration . 8)) (DECLARE . 
(declaration . 8)) (DELAY . (declaration . 8)) (END . (declaration . 8)) (ENTRY 
. (declaration . 8)) (EXIT . (declaration . 8)) (FOR . (declaration . 8)) 
(FUNCTION . (declaration . 8)) (GENERIC . (declaration . 8)) (GOTO . 
(declaration . 8)) (IF . (declaration . 8)) (LIMITED . (declaration . 8)) (LOOP 
. (declaration . 8)) (NOT . (declaration  [...]
-      ((default . error) (ACCEPT . (declaration . 10)) (ABORT . (declaration . 
10)) (BEGIN . (declaration . 10)) (CASE . (declaration . 10)) (DECLARE . 
(declaration . 10)) (DELAY . (declaration . 10)) (END . (declaration . 10)) 
(ENTRY . (declaration . 10)) (EXIT . (declaration . 10)) (FOR . (declaration . 
10)) (FUNCTION . (declaration . 10)) (GENERIC . (declaration . 10)) (GOTO . 
(declaration . 10)) (IF . (declaration . 10)) (LIMITED . (declaration . 10)) 
(LOOP . (declaration . 10)) (NOT [...]
-      ((default . error) (ACCEPT . (renaming_declaration . 0)) (ABORT . 
(renaming_declaration . 0)) (BEGIN . (renaming_declaration . 0)) (CASE . 
(renaming_declaration . 0)) (DECLARE . (renaming_declaration . 0)) (DELAY . 
(renaming_declaration . 0)) (END . (renaming_declaration . 0)) (ENTRY . 
(renaming_declaration . 0)) (EXIT . (renaming_declaration . 0)) (FOR . 
(renaming_declaration . 0)) (FUNCTION . (renaming_declaration . 0)) (GENERIC . 
(renaming_declaration . 0)) (GOTO . (renaming_dec [...]
-      ((default . error) (ENTRY .  242) (FUNCTION .  243) (PROCEDURE .  244))
-      ((default . error) (ACCEPT . (proper_body . 1)) (ABORT . (proper_body . 
1)) (BEGIN . (proper_body . 1)) (CASE . (proper_body . 1)) (DECLARE . 
(proper_body . 1)) (DELAY . (proper_body . 1)) (END . (proper_body . 1)) (ENTRY 
. (proper_body . 1)) (EXIT . (proper_body . 1)) (FOR . (proper_body . 1)) 
(FUNCTION . (proper_body . 1)) (GENERIC . (proper_body . 1)) (GOTO . 
(proper_body . 1)) (IF . (proper_body . 1)) (LIMITED . (proper_body . 1)) (LOOP 
. (proper_body . 1)) (NOT . (proper_body  [...]
-      ((default . error) (ACCEPT . (body_stub . 1)) (ABORT . (body_stub . 1)) 
(BEGIN . (body_stub . 1)) (CASE . (body_stub . 1)) (DECLARE . (body_stub . 1)) 
(DELAY . (body_stub . 1)) (END . (body_stub . 1)) (ENTRY . (body_stub . 1)) 
(EXIT . (body_stub . 1)) (FOR . (body_stub . 1)) (FUNCTION . (body_stub . 1)) 
(GENERIC . (body_stub . 1)) (GOTO . (body_stub . 1)) (IF . (body_stub . 1)) 
(LIMITED . (body_stub . 1)) (LOOP . (body_stub . 1)) (NOT . (body_stub . 1)) 
(NULL . (body_stub . 1)) (OV [...]
-      ((default . error) (ACCEPT . (declaration . 11)) (ABORT . (declaration . 
11)) (BEGIN . (declaration . 11)) (CASE . (declaration . 11)) (DECLARE . 
(declaration . 11)) (DELAY . (declaration . 11)) (END . (declaration . 11)) 
(ENTRY . (declaration . 11)) (EXIT . (declaration . 11)) (FOR . (declaration . 
11)) (FUNCTION . (declaration . 11)) (GENERIC . (declaration . 11)) (GOTO . 
(declaration . 11)) (IF . (declaration . 11)) (LIMITED . (declaration . 11)) 
(LOOP . (declaration . 11)) (NOT [...]
-      ((default . error) (ACCEPT . (renaming_declaration . 1)) (ABORT . 
(renaming_declaration . 1)) (BEGIN . (renaming_declaration . 1)) (CASE . 
(renaming_declaration . 1)) (DECLARE . (renaming_declaration . 1)) (DELAY . 
(renaming_declaration . 1)) (END . (renaming_declaration . 1)) (ENTRY . 
(renaming_declaration . 1)) (EXIT . (renaming_declaration . 1)) (FOR . 
(renaming_declaration . 1)) (FUNCTION . (renaming_declaration . 1)) (GENERIC . 
(renaming_declaration . 1)) (GOTO . (renaming_dec [...]
-      ((default . error) (SEMICOLON .  248))
-      ((default . error) (ACCEPT . (simple_statement . 10)) (ABORT . 
(simple_statement . 10)) (BEGIN . (simple_statement . 10)) (CASE . 
(simple_statement . 10)) (DECLARE . (simple_statement . 10)) (DELAY . 
(simple_statement . 10)) (ELSE . (simple_statement . 10)) (ELSIF . 
(simple_statement . 10)) (END . (simple_statement . 10)) (ENTRY . 
(simple_statement . 10)) (EXCEPTION . (simple_statement . 10)) (EXIT . 
(simple_statement . 10)) (FOR . (simple_statement . 10)) (FUNCTION . 
(simple_state [...]
-      ((default . error) (ACCEPT . (type_declaration . 3)) (ABORT . 
(type_declaration . 3)) (BEGIN . (type_declaration . 3)) (CASE . 
(type_declaration . 3)) (DECLARE . (type_declaration . 3)) (DELAY . 
(type_declaration . 3)) (END . (type_declaration . 3)) (ENTRY . 
(type_declaration . 3)) (EXIT . (type_declaration . 3)) (FOR . 
(type_declaration . 3)) (FUNCTION . (type_declaration . 3)) (GENERIC . 
(type_declaration . 3)) (GOTO . (type_declaration . 3)) (IF . (type_declaration 
. 3)) (LIMITE [...]
-      ((default . error) (ACCEPT . (type_declaration . 2)) (ABORT . 
(type_declaration . 2)) (BEGIN . (type_declaration . 2)) (CASE . 
(type_declaration . 2)) (DECLARE . (type_declaration . 2)) (DELAY . 
(type_declaration . 2)) (END . (type_declaration . 2)) (ENTRY . 
(type_declaration . 2)) (EXIT . (type_declaration . 2)) (FOR . 
(type_declaration . 2)) (FUNCTION . (type_declaration . 2)) (GENERIC . 
(type_declaration . 2)) (GOTO . (type_declaration . 2)) (IF . (type_declaration 
. 2)) (LIMITE [...]
-      ((default . error) (ACCEPT . (simple_statement . 4)) (ABORT . 
(simple_statement . 4)) (BEGIN . (simple_statement . 4)) (CASE . 
(simple_statement . 4)) (DECLARE . (simple_statement . 4)) (DELAY . 
(simple_statement . 4)) (ELSE . (simple_statement . 4)) (ELSIF . 
(simple_statement . 4)) (END . (simple_statement . 4)) (ENTRY . 
(simple_statement . 4)) (EXCEPTION . (simple_statement . 4)) (EXIT . 
(simple_statement . 4)) (FOR . (simple_statement . 4)) (FUNCTION . 
(simple_statement . 4)) (G [...]
-      ((default . error) (IS . (subprogram_specification . 0)) (WITH . 
(subprogram_specification . 0)) (SEMICOLON . (subprogram_specification . 0)))
-      ((default . error) (ACCEPT . (body_g . 0)) (ABORT . (body_g . 0)) (BEGIN 
. (body_g . 0)) (CASE . (body_g . 0)) (DECLARE . (body_g . 0)) (DELAY . (body_g 
. 0)) (END . (body_g . 0)) (ENTRY . (body_g . 0)) (EXIT . (body_g . 0)) (FOR . 
(body_g . 0)) (FUNCTION . (body_g . 0)) (GENERIC . (body_g . 0)) (GOTO . 
(body_g . 0)) (IF . (body_g . 0)) (LIMITED . (body_g . 0)) (LOOP . (body_g . 
0)) (NOT . (body_g . 0)) (NULL . (body_g . 0)) (OVERRIDING . (body_g . 0)) 
(PACKAGE . (body_g . 0)) (PRA [...]
-      ((default . error) (ACCEPT . (proper_body . 3)) (ABORT . (proper_body . 
3)) (BEGIN . (proper_body . 3)) (CASE . (proper_body . 3)) (DECLARE . 
(proper_body . 3)) (DELAY . (proper_body . 3)) (END . (proper_body . 3)) (ENTRY 
. (proper_body . 3)) (EXIT . (proper_body . 3)) (FOR . (proper_body . 3)) 
(FUNCTION . (proper_body . 3)) (GENERIC . (proper_body . 3)) (GOTO . 
(proper_body . 3)) (IF . (proper_body . 3)) (LIMITED . (proper_body . 3)) (LOOP 
. (proper_body . 3)) (NOT . (proper_body  [...]
-      ((default . error) (ACCEPT . (body_stub . 3)) (ABORT . (body_stub . 3)) 
(BEGIN . (body_stub . 3)) (CASE . (body_stub . 3)) (DECLARE . (body_stub . 3)) 
(DELAY . (body_stub . 3)) (END . (body_stub . 3)) (ENTRY . (body_stub . 3)) 
(EXIT . (body_stub . 3)) (FOR . (body_stub . 3)) (FUNCTION . (body_stub . 3)) 
(GENERIC . (body_stub . 3)) (GOTO . (body_stub . 3)) (IF . (body_stub . 3)) 
(LIMITED . (body_stub . 3)) (LOOP . (body_stub . 3)) (NOT . (body_stub . 3)) 
(NULL . (body_stub . 3)) (OV [...]
-      ((default . error) (ACCEPT . (full_type_declaration . 2)) (ABORT . 
(full_type_declaration . 2)) (BEGIN . (full_type_declaration . 2)) (CASE . 
(full_type_declaration . 2)) (DECLARE . (full_type_declaration . 2)) (DELAY . 
(full_type_declaration . 2)) (END . (full_type_declaration . 2)) (ENTRY . 
(full_type_declaration . 2)) (EXIT . (full_type_declaration . 2)) (FOR . 
(full_type_declaration . 2)) (FUNCTION . (full_type_declaration . 2)) (GENERIC 
. (full_type_declaration . 2)) (GOTO . ( [...]
-      ((default . error) (ACCEPT . (name . 4)) (ABORT . (name . 4)) (AND . 
(name . 4)) (BEGIN . (name . 4)) (CASE . (name . 4)) (DECLARE . (name . 4)) 
(DELAY . (name . 4)) (DIGITS . (name . 4)) (DO . (name . 4)) (ELSE . (name . 
4)) (ELSIF . (name . 4)) (EXIT . (name . 4)) (FOR . (name . 4)) (GOTO . (name . 
4)) (IF . (name . 4)) (IN . (name . 4)) (IS . (name . 4)) (LOOP . (name . 4)) 
(MOD . (name . 4)) (NOT . (name . 4)) (NULL . (name . 4)) (OF . (name . 4)) (OR 
. (name . 4)) (PRAGMA . (n [...]
-      ((default . error) (ACCEPT . (simple_statement . 9)) (ABORT . 
(simple_statement . 9)) (BEGIN . (simple_statement . 9)) (CASE . 
(simple_statement . 9)) (DECLARE . (simple_statement . 9)) (DELAY . 
(simple_statement . 9)) (ELSE . (simple_statement . 9)) (ELSIF . 
(simple_statement . 9)) (END . (simple_statement . 9)) (ENTRY . 
(simple_statement . 9)) (EXCEPTION . (simple_statement . 9)) (EXIT . 
(simple_statement . 9)) (FOR . (simple_statement . 9)) (FUNCTION . 
(simple_statement . 9)) (G [...]
-      ((default . error) (ACCEPT . (aspect_clause . 2)) (ABORT . 
(aspect_clause . 2)) (BEGIN . (aspect_clause . 2)) (CASE . (aspect_clause . 2)) 
(DECLARE . (aspect_clause . 2)) (DELAY . (aspect_clause . 2)) (END . 
(aspect_clause . 2)) (ENTRY . (aspect_clause . 2)) (EXIT . (aspect_clause . 2)) 
(FOR . (aspect_clause . 2)) (FUNCTION . (aspect_clause . 2)) (GENERIC . 
(aspect_clause . 2)) (GOTO . (aspect_clause . 2)) (IF . (aspect_clause . 2)) 
(LIMITED . (aspect_clause . 2)) (LOOP . (aspect_c [...]
-      ((default . error) (ACCEPT . (declaration . 12)) (ABORT . (declaration . 
12)) (BEGIN . (declaration . 12)) (CASE . (declaration . 12)) (DECLARE . 
(declaration . 12)) (DELAY . (declaration . 12)) (END . (declaration . 12)) 
(ENTRY . (declaration . 12)) (EXIT . (declaration . 12)) (FOR . (declaration . 
12)) (FUNCTION . (declaration . 12)) (GENERIC . (declaration . 12)) (GOTO . 
(declaration . 12)) (IF . (declaration . 12)) (LIMITED . (declaration . 12)) 
(LOOP . (declaration . 12)) (NOT [...]
-      ((default . error) (ACCEPT . (simple_statement . 6)) (ABORT . 
(simple_statement . 6)) (BEGIN . (simple_statement . 6)) (CASE . 
(simple_statement . 6)) (DECLARE . (simple_statement . 6)) (DELAY . 
(simple_statement . 6)) (ELSE . (simple_statement . 6)) (ELSIF . 
(simple_statement . 6)) (END . (simple_statement . 6)) (ENTRY . 
(simple_statement . 6)) (EXCEPTION . (simple_statement . 6)) (EXIT . 
(simple_statement . 6)) (FOR . (simple_statement . 6)) (FUNCTION . 
(simple_statement . 6)) (G [...]
-      ((default . error) (ACCEPT . (name . 2)) (ABORT . (name . 2)) (AND . 
(name . 2)) (BEGIN . (name . 2)) (CASE . (name . 2)) (DECLARE . (name . 2)) 
(DELAY . (name . 2)) (DIGITS . (name . 2)) (DO . (name . 2)) (ELSE . (name . 
2)) (ELSIF . (name . 2)) (EXIT . (name . 2)) (FOR . (name . 2)) (GOTO . (name . 
2)) (IF . (name . 2)) (IN . (name . 2)) (IS . (name . 2)) (LOOP . (name . 2)) 
(MOD . (name . 2)) (NOT . (name . 2)) (NULL . (name . 2)) (OF . (name . 2)) (OR 
. (name . 2)) (PRAGMA . (n [...]
-      ((default . error) (ACCEPT . (select_statement . 0)) (ABORT . 
(select_statement . 0)) (BEGIN . (select_statement . 0)) (CASE . 
(select_statement . 0)) (DECLARE . (select_statement . 0)) (DELAY . 
(select_statement . 0)) (ELSE . (select_statement . 0)) (ELSIF . 
(select_statement . 0)) (END . (select_statement . 0)) (ENTRY . 
(select_statement . 0)) (EXCEPTION . (select_statement . 0)) (EXIT . 
(select_statement . 0)) (FOR . (select_statement . 0)) (FUNCTION . 
(select_statement . 0)) (G [...]
-      ((default . error) (ACCEPT . (compound_statement . 6)) (ABORT . 
(compound_statement . 6)) (BEGIN . (compound_statement . 6)) (CASE . 
(compound_statement . 6)) (DECLARE . (compound_statement . 6)) (DELAY . 
(compound_statement . 6)) (ELSE . (compound_statement . 6)) (ELSIF . 
(compound_statement . 6)) (END . (compound_statement . 6)) (ENTRY . 
(compound_statement . 6)) (EXCEPTION . (compound_statement . 6)) (EXIT . 
(compound_statement . 6)) (FOR . (compound_statement . 6)) (FUNCTION .  [...]
-      ((default . error) (ACCEPT . (simple_statement . 5)) (ABORT . 
(simple_statement . 5)) (BEGIN . (simple_statement . 5)) (CASE . 
(simple_statement . 5)) (DECLARE . (simple_statement . 5)) (DELAY . 
(simple_statement . 5)) (ELSE . (simple_statement . 5)) (ELSIF . 
(simple_statement . 5)) (END . (simple_statement . 5)) (ENTRY . 
(simple_statement . 5)) (EXCEPTION . (simple_statement . 5)) (EXIT . 
(simple_statement . 5)) (FOR . (simple_statement . 5)) (FUNCTION . 
(simple_statement . 5)) (G [...]
-      ((default . error) (ACCEPT . (statement . 1)) (ABORT . (statement . 1)) 
(BEGIN . (statement . 1)) (CASE . (statement . 1)) (DECLARE . (statement . 1)) 
(DELAY . (statement . 1)) (ELSE . (statement . 1)) (ELSIF . (statement . 1)) 
(END . (statement . 1)) (ENTRY . (statement . 1)) (EXCEPTION . (statement . 1)) 
(EXIT . (statement . 1)) (FOR . (statement . 1)) (FUNCTION . (statement . 1)) 
(GENERIC . (statement . 1)) (GOTO . (statement . 1)) (IF . (statement . 1)) 
(LIMITED . (statement .  [...]
-      ((default . error) (ACCEPT . (object_declaration . 7)) (ABORT . 
(object_declaration . 7)) (BEGIN . (object_declaration . 7)) (CASE . 
(object_declaration . 7)) (DECLARE . (object_declaration . 7)) (DELAY . 
(object_declaration . 7)) (END . (object_declaration . 7)) (ENTRY . 
(object_declaration . 7)) (EXIT . (object_declaration . 7)) (FOR . 
(object_declaration . 7)) (FUNCTION . (object_declaration . 7)) (GENERIC . 
(object_declaration . 7)) (GOTO . (object_declaration . 7)) (IF . (obje [...]
-      ((default . error) (ACCEPT . (object_declaration . 6)) (ABORT . 
(object_declaration . 6)) (BEGIN . (object_declaration . 6)) (CASE . 
(object_declaration . 6)) (DECLARE . (object_declaration . 6)) (DELAY . 
(object_declaration . 6)) (END . (object_declaration . 6)) (ENTRY . 
(object_declaration . 6)) (EXIT . (object_declaration . 6)) (FOR . 
(object_declaration . 6)) (FUNCTION . (object_declaration . 6)) (GENERIC . 
(object_declaration . 6)) (GOTO . (object_declaration . 6)) (IF . (obje [...]
-      ((default . error) (ACCEPT . (compilation_unit . 4)) (ABORT . 
(compilation_unit . 4)) (BEGIN . (compilation_unit . 4)) (CASE . 
(compilation_unit . 4)) (DECLARE . (compilation_unit . 4)) (DELAY . 
(compilation_unit . 4)) (ENTRY . (compilation_unit . 4)) (EXIT . 
(compilation_unit . 4)) (FOR . (compilation_unit . 4)) (FUNCTION . 
(compilation_unit . 4)) (GENERIC . (compilation_unit . 4)) (GOTO . 
(compilation_unit . 4)) (IF . (compilation_unit . 4)) (LIMITED . 
(compilation_unit . 4)) (LO [...]
-      ((default . error) (ACCEPT . (proper_body . 0)) (ABORT . (proper_body . 
0)) (BEGIN . (proper_body . 0)) (CASE . (proper_body . 0)) (DECLARE . 
(proper_body . 0)) (DELAY . (proper_body . 0)) (END . (proper_body . 0)) (ENTRY 
. (proper_body . 0)) (EXIT . (proper_body . 0)) (FOR . (proper_body . 0)) 
(FUNCTION . (proper_body . 0)) (GENERIC . (proper_body . 0)) (GOTO . 
(proper_body . 0)) (IF . (proper_body . 0)) (LIMITED . (proper_body . 0)) (LOOP 
. (proper_body . 0)) (NOT . (proper_body  [...]
-      ((default . error) (ACCEPT . (body_stub . 0)) (ABORT . (body_stub . 0)) 
(BEGIN . (body_stub . 0)) (CASE . (body_stub . 0)) (DECLARE . (body_stub . 0)) 
(DELAY . (body_stub . 0)) (END . (body_stub . 0)) (ENTRY . (body_stub . 0)) 
(EXIT . (body_stub . 0)) (FOR . (body_stub . 0)) (FUNCTION . (body_stub . 0)) 
(GENERIC . (body_stub . 0)) (GOTO . (body_stub . 0)) (IF . (body_stub . 0)) 
(LIMITED . (body_stub . 0)) (LOOP . (body_stub . 0)) (NOT . (body_stub . 0)) 
(NULL . (body_stub . 0)) (OV [...]
-      ((default . error) (ACCEPT . (declaration . 13)) (ABORT . (declaration . 
13)) (BEGIN . (declaration . 13)) (CASE . (declaration . 13)) (DECLARE . 
(declaration . 13)) (DELAY . (declaration . 13)) (END . (declaration . 13)) 
(ENTRY . (declaration . 13)) (EXIT . (declaration . 13)) (FOR . (declaration . 
13)) (FUNCTION . (declaration . 13)) (GENERIC . (declaration . 13)) (GOTO . 
(declaration . 13)) (IF . (declaration . 13)) (LIMITED . (declaration . 13)) 
(LOOP . (declaration . 13)) (NOT [...]
-      ((default . error) (ACCEPT . (renaming_declaration . 2)) (ABORT . 
(renaming_declaration . 2)) (BEGIN . (renaming_declaration . 2)) (CASE . 
(renaming_declaration . 2)) (DECLARE . (renaming_declaration . 2)) (DELAY . 
(renaming_declaration . 2)) (END . (renaming_declaration . 2)) (ENTRY . 
(renaming_declaration . 2)) (EXIT . (renaming_declaration . 2)) (FOR . 
(renaming_declaration . 2)) (FUNCTION . (renaming_declaration . 2)) (GENERIC . 
(renaming_declaration . 2)) (GOTO . (renaming_dec [...]
-      ((default . error) (ACCEPT . (declaration . 14)) (ABORT . (declaration . 
14)) (BEGIN . (declaration . 14)) (CASE . (declaration . 14)) (DECLARE . 
(declaration . 14)) (DELAY . (declaration . 14)) (END . (declaration . 14)) 
(ENTRY . (declaration . 14)) (EXIT . (declaration . 14)) (FOR . (declaration . 
14)) (FUNCTION . (declaration . 14)) (GENERIC . (declaration . 14)) (GOTO . 
(declaration . 14)) (IF . (declaration . 14)) (LIMITED . (declaration . 14)) 
(LOOP . (declaration . 14)) (NOT [...]
-      ((default . error) (ACCEPT . (compilation_unit . 1)) (ABORT . 
(compilation_unit . 1)) (BEGIN . (compilation_unit . 1)) (CASE . 
(compilation_unit . 1)) (DECLARE . (compilation_unit . 1)) (DELAY . 
(compilation_unit . 1)) (ENTRY . (compilation_unit . 1)) (EXIT . 
(compilation_unit . 1)) (FOR . (compilation_unit . 1)) (FUNCTION . 
(compilation_unit . 1)) (GENERIC . (compilation_unit . 1)) (GOTO . 
(compilation_unit . 1)) (IF . (compilation_unit . 1)) (LIMITED . 
(compilation_unit . 1)) (LO [...]
-      ((default . error) (ACCEPT . (proper_body . 2)) (ABORT . (proper_body . 
2)) (BEGIN . (proper_body . 2)) (CASE . (proper_body . 2)) (DECLARE . 
(proper_body . 2)) (DELAY . (proper_body . 2)) (END . (proper_body . 2)) (ENTRY 
. (proper_body . 2)) (EXIT . (proper_body . 2)) (FOR . (proper_body . 2)) 
(FUNCTION . (proper_body . 2)) (GENERIC . (proper_body . 2)) (GOTO . 
(proper_body . 2)) (IF . (proper_body . 2)) (LIMITED . (proper_body . 2)) (LOOP 
. (proper_body . 2)) (NOT . (proper_body  [...]
-      ((default . error) (ACCEPT . (body_stub . 2)) (ABORT . (body_stub . 2)) 
(BEGIN . (body_stub . 2)) (CASE . (body_stub . 2)) (DECLARE . (body_stub . 2)) 
(DELAY . (body_stub . 2)) (END . (body_stub . 2)) (ENTRY . (body_stub . 2)) 
(EXIT . (body_stub . 2)) (FOR . (body_stub . 2)) (FUNCTION . (body_stub . 2)) 
(GENERIC . (body_stub . 2)) (GOTO . (body_stub . 2)) (IF . (body_stub . 2)) 
(LIMITED . (body_stub . 2)) (LOOP . (body_stub . 2)) (NOT . (body_stub . 2)) 
(NULL . (body_stub . 2)) (OV [...]
-      ((default . error) (ACCEPT . (full_type_declaration . 1)) (ABORT . 
(full_type_declaration . 1)) (BEGIN . (full_type_declaration . 1)) (CASE . 
(full_type_declaration . 1)) (DECLARE . (full_type_declaration . 1)) (DELAY . 
(full_type_declaration . 1)) (END . (full_type_declaration . 1)) (ENTRY . 
(full_type_declaration . 1)) (EXIT . (full_type_declaration . 1)) (FOR . 
(full_type_declaration . 1)) (FUNCTION . (full_type_declaration . 1)) (GENERIC 
. (full_type_declaration . 1)) (GOTO . ( [...]
-      ((default . error) (ACCEPT . (select_statement . 1)) (ABORT . 
(select_statement . 1)) (BEGIN . (select_statement . 1)) (CASE . 
(select_statement . 1)) (DECLARE . (select_statement . 1)) (DELAY . 
(select_statement . 1)) (ELSE . (select_statement . 1)) (ELSIF . 
(select_statement . 1)) (END . (select_statement . 1)) (ENTRY . 
(select_statement . 1)) (EXCEPTION . (select_statement . 1)) (EXIT . 
(select_statement . 1)) (FOR . (select_statement . 1)) (FUNCTION . 
(select_statement . 1)) (G [...]
-      ((default . error) (ACCEPT . (declaration . 15)) (ABORT . (declaration . 
15)) (BEGIN . (declaration . 15)) (CASE . (declaration . 15)) (DECLARE . 
(declaration . 15)) (DELAY . (declaration . 15)) (END . (declaration . 15)) 
(ENTRY . (declaration . 15)) (EXIT . (declaration . 15)) (FOR . (declaration . 
15)) (FUNCTION . (declaration . 15)) (GENERIC . (declaration . 15)) (GOTO . 
(declaration . 15)) (IF . (declaration . 15)) (LIMITED . (declaration . 15)) 
(LOOP . (declaration . 15)) (NOT [...]
-      ((default . error) (ACCEPT . (declaration . 16)) (ABORT . (declaration . 
16)) (BEGIN . (declaration . 16)) (CASE . (declaration . 16)) (DECLARE . 
(declaration . 16)) (DELAY . (declaration . 16)) (END . (declaration . 16)) 
(ENTRY . (declaration . 16)) (EXIT . (declaration . 16)) (FOR . (declaration . 
16)) (FUNCTION . (declaration . 16)) (GENERIC . (declaration . 16)) (GOTO . 
(declaration . 16)) (IF . (declaration . 16)) (LIMITED . (declaration . 16)) 
(LOOP . (declaration . 16)) (NOT [...]
-      ((default . error) (ACCEPT . (compilation_unit . 0)) (ABORT . 
(compilation_unit . 0)) (BEGIN . (compilation_unit . 0)) (CASE . 
(compilation_unit . 0)) (DECLARE . (compilation_unit . 0)) (DELAY . 
(compilation_unit . 0)) (ENTRY . (compilation_unit . 0)) (EXIT . 
(compilation_unit . 0)) (FOR . (compilation_unit . 0)) (FUNCTION . 
(compilation_unit . 0)) (GENERIC . (compilation_unit . 0)) (GOTO . 
(compilation_unit . 0)) (IF . (compilation_unit . 0)) (LIMITED . 
(compilation_unit . 0)) (LO [...]
-      ((default . error) (DO . (actual_parameter_part_opt . 1)) (LEFT_PAREN . 
( 249 (actual_parameter_part_opt . 1))) (SEMICOLON . (actual_parameter_part_opt 
. 1)))
-      ((default . error) (ACCEPT . (name . 5)) (ABORT . (name . 5)) (AND . 
(name . 5)) (BEGIN . (name . 5)) (CASE . (name . 5)) (DECLARE . (name . 5)) 
(DELAY . (name . 5)) (DIGITS . (name . 5)) (DO . (name . 5)) (ELSE . (name . 
5)) (ELSIF . (name . 5)) (EXIT . (name . 5)) (FOR . (name . 5)) (GOTO . (name . 
5)) (IF . (name . 5)) (IN . (name . 5)) (IS . (name . 5)) (LOOP . (name . 5)) 
(MOD . (name . 5)) (NOT . (name . 5)) (NULL . (name . 5)) (OF . (name . 5)) (OR 
. (name . 5)) (PRAGMA . (n [...]
-      ((default . error) (LEFT_PAREN .  235) (DOT .  237) (SEMICOLON .  252) 
(TICK_1 .  239))
-      ((default . error) (NEW .  122) (NULL .  124) (LEFT_PAREN .  126) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (NEW .  122) (NULL .  124) (LEFT_PAREN .  126) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (AND . (primary . 1)) (DIGITS . (primary . 1)) (DO . 
(primary . 1)) (ELSE . (primary . 1)) (ELSIF . (primary . 1)) (IN . (primary . 
1)) (IS . (primary . 1)) (LOOP . (primary . 1)) (MOD . (primary . 1)) (NOT . 
(primary . 1)) (OF . (primary . 1)) (OR . (primary . 1)) (RANGE . (primary . 
1)) (REM . (primary . 1)) (THEN . (primary . 1)) (WITH . (primary . 1)) (XOR . 
(primary . 1)) (RIGHT_PAREN . (primary . 1)) (AMPERSAND . (primary . 1)) (BAR . 
(primary . 1)) (COLON_ [...]
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (CASE .  257) (FOR .  258) (IF .  259) 
(NEW .  122) (NOT .  260) (NULL .  261) (OTHERS .  262) (RAISE .  125) (WITH . 
(expression_opt . 1)) (LEFT_PAREN .  126) (RIGHT_PAREN . (association_opt . 5)) 
(BAR . (discrete_choice_list . 2)) (COMMA . (association_opt . 5)) 
(EQUAL_GREATER . (discrete_choice_list . 2)) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  263))
-      ((default . error) (ABS . (unary_adding_operator . 1)) (NEW . 
(unary_adding_operator . 1)) (NOT . (unary_adding_operator . 1)) (NULL . 
(unary_adding_operator . 1)) (LEFT_PAREN . (unary_adding_operator . 1)) 
(NUMERIC_LITERAL . (unary_adding_operator . 1)) (IDENTIFIER . 
(unary_adding_operator . 1)) (STRING_LITERAL . (unary_adding_operator . 1)) 
(CHARACTER_LITERAL . (unary_adding_operator . 1)))
-      ((default . error) (ABS . (unary_adding_operator . 0)) (NEW . 
(unary_adding_operator . 0)) (NOT . (unary_adding_operator . 0)) (NULL . 
(unary_adding_operator . 0)) (LEFT_PAREN . (unary_adding_operator . 0)) 
(NUMERIC_LITERAL . (unary_adding_operator . 0)) (IDENTIFIER . 
(unary_adding_operator . 0)) (STRING_LITERAL . (unary_adding_operator . 0)) 
(CHARACTER_LITERAL . (unary_adding_operator . 0)))
-      ((default . error) (AND . (primary . 0)) (DIGITS . (primary . 0)) (DO . 
(primary . 0)) (ELSE . (primary . 0)) (ELSIF . (primary . 0)) (IN . (primary . 
0)) (IS . (primary . 0)) (LOOP . (primary . 0)) (MOD . (primary . 0)) (NOT . 
(primary . 0)) (OF . (primary . 0)) (OR . (primary . 0)) (RANGE . (primary . 
0)) (REM . (primary . 0)) (THEN . (primary . 0)) (WITH . (primary . 0)) (XOR . 
(primary . 0)) (RIGHT_PAREN . (primary . 0)) (AMPERSAND . (primary . 0)) (BAR . 
(primary . 0)) (COLON_ [...]
-      ((default . error) (AND . (primary . 2)) (DIGITS . (primary . 2)) (DO . 
(primary . 2)) (ELSE . (primary . 2)) (ELSIF . (primary . 2)) (IN . (primary . 
2)) (IS . (primary . 2)) (LOOP . (primary . 2)) (MOD . (primary . 2)) (NOT . 
(primary . 2)) (OF . (primary . 2)) (OR . (primary . 2)) (RANGE . (primary . 
2)) (REM . (primary . 2)) (THEN . (primary . 2)) (WITH . (primary . 2)) (XOR . 
(primary . 2)) (RIGHT_PAREN . (primary . 2)) (AMPERSAND . (primary . 2)) (BAR . 
(primary . 2)) (COLON_ [...]
-      ((default . error) (AND . (expression_opt . 0)) (DIGITS . 
(expression_opt . 0)) (DO . (expression_opt . 0)) (ELSE . (expression_opt . 0)) 
(ELSIF . (expression_opt . 0)) (IS . (expression_opt . 0)) (LOOP . 
(expression_opt . 0)) (OR . (expression_opt . 0)) (RANGE . (expression_opt . 
0)) (THEN . (expression_opt . 0)) (WITH . (expression_opt . 0)) (XOR . 
(expression_opt . 0)) (RIGHT_PAREN . (expression_opt . 0)) (BAR . 
(expression_opt . 0)) (COMMA . (expression_opt . 0)) (EQUAL_GREATER [...]
-      ((default . error) (IS .  277))
-      ((default . error) (AND . (term . 1)) (DIGITS . (term . 1)) (DO . (term 
. 1)) (ELSE . (term . 1)) (ELSIF . (term . 1)) (IN . (term . 1)) (IS . (term . 
1)) (LOOP . (term . 1)) (MOD . (term . 1)) (NOT . (term . 1)) (OF . (term . 1)) 
(OR . (term . 1)) (RANGE . (term . 1)) (REM . (term . 1)) (THEN . (term . 1)) 
(WITH . (term . 1)) (XOR . (term . 1)) (RIGHT_PAREN . (term . 1)) (AMPERSAND . 
(term . 1)) (BAR . (term . 1)) (COLON_EQUAL . (term . 1)) (COMMA . (term . 1)) 
(DOT_DOT . (term .  [...]
-      ((default . error) (AND . (primary . 3)) (DIGITS . (primary . 3)) (DO . 
(primary . 3)) (ELSE . (primary . 3)) (ELSIF . (primary . 3)) (IN . (primary . 
3)) (IS . (primary . 3)) (LOOP . (primary . 3)) (MOD . (primary . 3)) (NOT . 
(primary . 3)) (OF . (primary . 3)) (OR . (primary . 3)) (RANGE . (primary . 
3)) (REM . (primary . 3)) (THEN . (primary . 3)) (WITH . (primary . 3)) (XOR . 
(primary . 3)) (LEFT_PAREN .  235) (RIGHT_PAREN . (primary . 3)) (AMPERSAND . 
(primary . 3)) (BAR . (p [...]
-      ((default . error) (AND . (factor . 1)) (DIGITS . (factor . 1)) (DO . 
(factor . 1)) (ELSE . (factor . 1)) (ELSIF . (factor . 1)) (IN . (factor . 1)) 
(IS . (factor . 1)) (LOOP . (factor . 1)) (MOD . (factor . 1)) (NOT . (factor . 
1)) (OF . (factor . 1)) (OR . (factor . 1)) (RANGE . (factor . 1)) (REM . 
(factor . 1)) (THEN . (factor . 1)) (WITH . (factor . 1)) (XOR . (factor . 1)) 
(RIGHT_PAREN . (factor . 1)) (AMPERSAND . (factor . 1)) (BAR . (factor . 1)) 
(COLON_EQUAL . (factor . 1) [...]
-      ((default . error) (AND . (relation . 4)) (DIGITS . (relation . 4)) (DO 
. (relation . 4)) (ELSE . (relation . 4)) (ELSIF . (relation . 4)) (IS . 
(relation . 4)) (LOOP . (relation . 4)) (OR . (relation . 4)) (RANGE . 
(relation . 4)) (THEN . (relation . 4)) (WITH . (relation . 4)) (XOR . 
(relation . 4)) (RIGHT_PAREN . (relation . 4)) (BAR . (relation . 4)) (COMMA . 
(relation . 4)) (EQUAL_GREATER . (relation . 4)) (SEMICOLON . (relation . 4)))
-      ((default . error) (AND . ( 279 (expression . 1))) (DIGITS . (expression 
. 1)) (DO . (expression . 1)) (ELSE . (expression . 1)) (ELSIF . (expression . 
1)) (IS . (expression . 1)) (LOOP . (expression . 1)) (OR . (expression . 1)) 
(RANGE . (expression . 1)) (THEN . (expression . 1)) (WITH . (expression . 1)) 
(XOR . (expression . 1)) (RIGHT_PAREN . (expression . 1)) (BAR . (expression . 
1)) (COMMA . (expression . 1)) (EQUAL_GREATER . (expression . 1)) (SEMICOLON . 
(expression . 1)))
-      ((default . error) (AND . ( 280 (expression . 2))) (DIGITS . (expression 
. 2)) (DO . (expression . 2)) (ELSE . (expression . 2)) (ELSIF . (expression . 
2)) (IS . (expression . 2)) (LOOP . (expression . 2)) (OR . (expression . 2)) 
(RANGE . (expression . 2)) (THEN . (expression . 2)) (WITH . (expression . 2)) 
(XOR . (expression . 2)) (RIGHT_PAREN . (expression . 2)) (BAR . (expression . 
2)) (COMMA . (expression . 2)) (EQUAL_GREATER . (expression . 2)) (SEMICOLON . 
(expression . 2)))
-      ((default . error) (AND . (expression . 3)) (DIGITS . (expression . 3)) 
(DO . (expression . 3)) (ELSE . (expression . 3)) (ELSIF . (expression . 3)) 
(IS . (expression . 3)) (LOOP . (expression . 3)) (OR . ( 281 (expression . 
3))) (RANGE . (expression . 3)) (THEN . (expression . 3)) (WITH . (expression . 
3)) (XOR . (expression . 3)) (RIGHT_PAREN . (expression . 3)) (BAR . 
(expression . 3)) (COMMA . (expression . 3)) (EQUAL_GREATER . (expression . 3)) 
(SEMICOLON . (expression . 3)))
-      ((default . error) (AND . (expression . 4)) (DIGITS . (expression . 4)) 
(DO . (expression . 4)) (ELSE . (expression . 4)) (ELSIF . (expression . 4)) 
(IS . (expression . 4)) (LOOP . (expression . 4)) (OR . ( 282 (expression . 
4))) (RANGE . (expression . 4)) (THEN . (expression . 4)) (WITH . (expression . 
4)) (XOR . (expression . 4)) (RIGHT_PAREN . (expression . 4)) (BAR . 
(expression . 4)) (COMMA . (expression . 4)) (EQUAL_GREATER . (expression . 4)) 
(SEMICOLON . (expression . 4)))
-      ((default . error) (AND . (expression . 5)) (DIGITS . (expression . 5)) 
(DO . (expression . 5)) (ELSE . (expression . 5)) (ELSIF . (expression . 5)) 
(IS . (expression . 5)) (LOOP . (expression . 5)) (OR . (expression . 5)) 
(RANGE . (expression . 5)) (THEN . (expression . 5)) (WITH . (expression . 5)) 
(XOR . ( 283 (expression . 5))) (RIGHT_PAREN . (expression . 5)) (BAR . 
(expression . 5)) (COMMA . (expression . 5)) (EQUAL_GREATER . (expression . 5)) 
(SEMICOLON . (expression . 5)))
-      ((default . error) (AND . ( 284 (expression . 0))) (DIGITS . (expression 
. 0)) (DO . (expression . 0)) (ELSE . (expression . 0)) (ELSIF . (expression . 
0)) (IS . (expression . 0)) (LOOP . (expression . 0)) (OR . ( 285 (expression . 
0))) (RANGE . (expression . 0)) (THEN . (expression . 0)) (WITH . (expression . 
0)) (XOR . ( 286 (expression . 0))) (RIGHT_PAREN . (expression . 0)) (BAR . 
(expression . 0)) (COMMA . (expression . 0)) (EQUAL_GREATER . (expression . 0)) 
(SEMICOLON . (expr [...]
-      ((default . error) (AND . (relation . 3)) (DIGITS . (relation . 3)) (DO 
. (relation . 3)) (ELSE . (relation . 3)) (ELSIF . (relation . 3)) (IN .  287) 
(IS . (relation . 3)) (LOOP . (relation . 3)) (NOT .  288) (OR . (relation . 
3)) (RANGE . (relation . 3)) (THEN . (relation . 3)) (WITH . (relation . 3)) 
(XOR . (relation . 3)) (RIGHT_PAREN . (relation . 3)) (BAR . (relation . 3)) 
(COMMA . (relation . 3)) (EQUAL .  289) (EQUAL_GREATER . (relation . 3)) 
(GREATER .  290) (GREATER_EQUAL [...]
-      ((default . error) (AND . (term_list . 1)) (DIGITS . (term_list . 1)) 
(DO . (term_list . 1)) (ELSE . (term_list . 1)) (ELSIF . (term_list . 1)) (IN . 
(term_list . 1)) (IS . (term_list . 1)) (LOOP . (term_list . 1)) (MOD .  296) 
(NOT . (term_list . 1)) (OF . (term_list . 1)) (OR . (term_list . 1)) (RANGE . 
(term_list . 1)) (REM .  297) (THEN . (term_list . 1)) (WITH . (term_list . 1)) 
(XOR . (term_list . 1)) (RIGHT_PAREN . (term_list . 1)) (AMPERSAND . (term_list 
. 1)) (BAR . (term_ [...]
-      ((default . error) (AND . (simple_expression . 1)) (DIGITS . 
(simple_expression . 1)) (DO . (simple_expression . 1)) (ELSE . 
(simple_expression . 1)) (ELSIF . (simple_expression . 1)) (IN . 
(simple_expression . 1)) (IS . (simple_expression . 1)) (LOOP . 
(simple_expression . 1)) (NOT . (simple_expression . 1)) (OF . 
(simple_expression . 1)) (OR . (simple_expression . 1)) (RANGE . 
(simple_expression . 1)) (THEN . (simple_expression . 1)) (WITH . 
(simple_expression . 1)) (XOR . (simpl [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (SEMICOLON . 
(expression_opt . 1)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (SEMICOLON .  307))
-      ((default . error) (WHEN . (identifier_opt . 0)) (SEMICOLON . 
(identifier_opt . 0)))
-      ((default . error) (WHEN .  308) (SEMICOLON .  309))
-      ((default . error) (IN .  310) (OF .  311) (USE . ((direct_name . 0) 
(name . 5))) (LEFT_PAREN . (name . 5)) (COLON .  312) (DOT . (name . 5)) 
(TICK_1 . (name . 5)))
-      ((default . error) (USE . ((direct_name . 1) (name . 7))) (LEFT_PAREN . 
(name . 7)) (DOT . (name . 7)) (TICK_1 . (name . 7)))
-      ((default . error) (USE . ( 313 (name . 3))) (LEFT_PAREN . (name . 3)) 
(DOT . (name . 3)) (TICK_1 . (name . 3)))
-      ((default . error) (USE .  314))
-      ((default . error) (LOOP . (iterator_specification_opt . 0)))
-      ((default . error) (LOOP . (iteration_scheme . 1)))
-      ((default . error) (USE .  315) (LEFT_PAREN .  235) (DOT .  237) (TICK_1 
.  239))
-      ((default . error) (RETURN .  316) (LEFT_PAREN .  317) (DOT .  237) 
(TICK_1 .  239))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  324))
-      ((default . error) (FUNCTION .  7) (PACKAGE .  325) (PROCEDURE .  18))
-      ((default . error) (COLON . (identifier_list . 1)) (COMMA . 
(identifier_list . 1)))
-      ((default . error) (FUNCTION . (generic_formal_parameter_declaration . 
0)) (PACKAGE . (generic_formal_parameter_declaration . 0)) (PRAGMA . 
(generic_formal_parameter_declaration . 0)) (PROCEDURE . 
(generic_formal_parameter_declaration . 0)) (TYPE . 
(generic_formal_parameter_declaration . 0)) (USE . 
(generic_formal_parameter_declaration . 0)) (WITH . 
(generic_formal_parameter_declaration . 0)) (IDENTIFIER . 
(generic_formal_parameter_declaration . 0)))
-      ((default . error) (FUNCTION . (generic_formal_parameter_declaration . 
2)) (PACKAGE . (generic_formal_parameter_declaration . 2)) (PRAGMA . 
(generic_formal_parameter_declaration . 2)) (PROCEDURE . 
(generic_formal_parameter_declaration . 2)) (TYPE . 
(generic_formal_parameter_declaration . 2)) (USE . 
(generic_formal_parameter_declaration . 2)) (WITH . 
(generic_formal_parameter_declaration . 2)) (IDENTIFIER . 
(generic_formal_parameter_declaration . 2)))
-      ((default . error) (FUNCTION . (generic_formal_parameter_declaration . 
1)) (PACKAGE . (generic_formal_parameter_declaration . 1)) (PRAGMA . 
(generic_formal_parameter_declaration . 1)) (PROCEDURE . 
(generic_formal_parameter_declaration . 1)) (TYPE . 
(generic_formal_parameter_declaration . 1)) (USE . 
(generic_formal_parameter_declaration . 1)) (WITH . 
(generic_formal_parameter_declaration . 1)) (IDENTIFIER . 
(generic_formal_parameter_declaration . 1)))
-      ((default . error) (FUNCTION . (generic_formal_parameter_declaration . 
3)) (PACKAGE . (generic_formal_parameter_declaration . 3)) (PRAGMA . 
(generic_formal_parameter_declaration . 3)) (PROCEDURE . 
(generic_formal_parameter_declaration . 3)) (TYPE . 
(generic_formal_parameter_declaration . 3)) (USE . 
(generic_formal_parameter_declaration . 3)) (WITH . 
(generic_formal_parameter_declaration . 3)) (IDENTIFIER . 
(generic_formal_parameter_declaration . 3)))
-      ((default . error) (FUNCTION . (generic_formal_part . 0)) (PACKAGE . 
(generic_formal_part . 0)) (PRAGMA .  16) (PROCEDURE . (generic_formal_part . 
0)) (TYPE .  162) (USE .  28) (WITH .  163) (IDENTIFIER .  164))
-      ((default . error) (FUNCTION . (generic_formal_parameter_declarations . 
1)) (PACKAGE . (generic_formal_parameter_declarations . 1)) (PRAGMA . 
(generic_formal_parameter_declarations . 1)) (PROCEDURE . 
(generic_formal_parameter_declarations . 1)) (TYPE . 
(generic_formal_parameter_declarations . 1)) (USE . 
(generic_formal_parameter_declarations . 1)) (WITH . 
(generic_formal_parameter_declarations . 1)) (IDENTIFIER . 
(generic_formal_parameter_declarations . 1)))
-      ((default . error) (COLON .  328) (COMMA .  234))
-      ((default . error) (FUNCTION . (generic_formal_parameter_declaration . 
4)) (PACKAGE . (generic_formal_parameter_declaration . 4)) (PRAGMA . 
(generic_formal_parameter_declaration . 4)) (PROCEDURE . 
(generic_formal_parameter_declaration . 4)) (TYPE . 
(generic_formal_parameter_declaration . 4)) (USE . 
(generic_formal_parameter_declaration . 4)) (WITH . 
(generic_formal_parameter_declaration . 4)) (IDENTIFIER . 
(generic_formal_parameter_declaration . 4)))
-      ((default . error) (FUNCTION . (generic_formal_parameter_declaration . 
5)) (PACKAGE . (generic_formal_parameter_declaration . 5)) (PRAGMA . 
(generic_formal_parameter_declaration . 5)) (PROCEDURE . 
(generic_formal_parameter_declaration . 5)) (TYPE . 
(generic_formal_parameter_declaration . 5)) (USE . 
(generic_formal_parameter_declaration . 5)) (WITH . 
(generic_formal_parameter_declaration . 5)) (IDENTIFIER . 
(generic_formal_parameter_declaration . 5)))
-      ((default . error) (SEMICOLON .  329))
-      ((default . error) (THEN .  330))
-      ((default . error) (WITH .  331))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ENTRY . (overriding_indicator_opt . 0)) (FUNCTION . 
(overriding_indicator_opt . 0)) (PROCEDURE . (overriding_indicator_opt . 0)))
-      ((default . error) (ACCEPT . (simple_statement . 0)) (ABORT . 
(simple_statement . 0)) (BEGIN . (simple_statement . 0)) (CASE . 
(simple_statement . 0)) (DECLARE . (simple_statement . 0)) (DELAY . 
(simple_statement . 0)) (ELSE . (simple_statement . 0)) (ELSIF . 
(simple_statement . 0)) (END . (simple_statement . 0)) (ENTRY . 
(simple_statement . 0)) (EXCEPTION . (simple_statement . 0)) (EXIT . 
(simple_statement . 0)) (FOR . (simple_statement . 0)) (FUNCTION . 
(simple_statement . 0)) (G [...]
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IS . ( 334 (aspect_specification_opt . 1))) (RENAMES 
.  335) (WITH .  336) (LEFT_PAREN .  235) (DOT .  237) (TICK_1 .  239))
-      ((default . error) (LEFT_PAREN .  338) (SEMICOLON .  339))
-      ((default . error) (IDENTIFIER .  340) (STRING_LITERAL .  152) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (COLON . ( 342 (identifier_list . 1))) (COMMA . 
(identifier_list . 1)))
-      ((default . error) (ACCEPT . (compilation_unit . 2)) (ABORT . 
(compilation_unit . 2)) (BEGIN . (compilation_unit . 2)) (CASE . 
(compilation_unit . 2)) (DECLARE . (compilation_unit . 2)) (DELAY . 
(compilation_unit . 2)) (ENTRY . (compilation_unit . 2)) (EXIT . 
(compilation_unit . 2)) (FOR . (compilation_unit . 2)) (FUNCTION . 
(compilation_unit . 2)) (GENERIC . (compilation_unit . 2)) (GOTO . 
(compilation_unit . 2)) (IF . (compilation_unit . 2)) (LIMITED . 
(compilation_unit . 2)) (LO [...]
-      ((default . error) (IS . (parameter_profile_opt . 1)) (WITH . 
(parameter_profile_opt . 1)) (LEFT_PAREN .  317) (DOT .  237) (SEMICOLON . 
(parameter_profile_opt . 1)) (TICK_1 .  239))
-      ((default . error) (IDENTIFIER .  345))
-      ((default . error) (IDENTIFIER .  346))
-      ((default . error) (IS . (aspect_specification_opt . 1)) (WITH .  336))
-      ((default . error) (ACCEPT . (raise_statement . 2)) (ABORT . 
(raise_statement . 2)) (BEGIN . (raise_statement . 2)) (CASE . (raise_statement 
. 2)) (DECLARE . (raise_statement . 2)) (DELAY . (raise_statement . 2)) (ELSE . 
(raise_statement . 2)) (ELSIF . (raise_statement . 2)) (END . (raise_statement 
. 2)) (ENTRY . (raise_statement . 2)) (EXCEPTION . (raise_statement . 2)) (EXIT 
. (raise_statement . 2)) (FOR . (raise_statement . 2)) (FUNCTION . 
(raise_statement . 2)) (GENERIC . (rais [...]
-      ((default . error) (WITH .  348) (LEFT_PAREN .  235) (DOT .  237) 
(SEMICOLON .  349) (TICK_1 .  239))
-      ((default . error) (WITH .  350) (LEFT_PAREN .  235) (DOT .  237) 
(SEMICOLON .  351) (TICK_1 .  239))
-      ((default . error) (AND . (name . 5)) (IN . (name . 5)) (MOD . (name . 
5)) (NOT . (name . 5)) (OR . (name . 5)) (REM . (name . 5)) (XOR . (name . 5)) 
(LEFT_PAREN . (name . 5)) (AMPERSAND . (name . 5)) (COLON .  352) (DOT . (name 
. 5)) (EQUAL . (name . 5)) (GREATER . (name . 5)) (GREATER_EQUAL . (name . 5)) 
(LESS . (name . 5)) (LESS_EQUAL . (name . 5)) (MINUS . (name . 5)) (PLUS . 
(name . 5)) (SEMICOLON . (name . 5)) (SLASH . (name . 5)) (SLASH_EQUAL . (name 
. 5)) (STAR . (name . 5) [...]
-      ((default . error) (SEMICOLON .  353))
-      ((default . error) (DO . (extended_return_object_declaration_opt . 0)) 
(SEMICOLON .  354))
-      ((default . error) (DO .  355))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (SEMICOLON .  357))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (EQUAL_GREATER . (expression_opt . 1)) 
(MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (ELSE . 
(sequence_of_statements_opt . 1)) (END . (sequence_of_statements_opt . 1)) 
(EXIT .  5) (FOR . (block_label_opt . 1)) (GOTO .  9) (IF .  10) (LOOP . 
(block_label_opt . 1)) (NULL .  13) (OR . (sequence_of_statements_opt . 1)) 
(PRAGMA .  16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) 
(WHILE . (block_label_opt . 1)) (LESS_LESS [...]
-      ((default . error) (ELSE . (select_alternative . 5)) (END . 
(select_alternative . 5)) (OR . (select_alternative . 5)))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (ELSE . 
(sequence_of_statements_opt . 1)) (END . (sequence_of_statements_opt . 1)) 
(EXIT .  5) (FOR . (block_label_opt . 1)) (GOTO .  9) (IF .  10) (LOOP . 
(block_label_opt . 1)) (NULL .  13) (OR . (sequence_of_statements_opt . 1)) 
(PRAGMA .  16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) 
(THEN . (sequence_of_statements_opt . 1))  [...]
-      ((default . error) (ELSE .  364) (OR .  365))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (ELSE . 
(sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 1)) 
(GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (OR . 
(sequence_of_statements_opt . 1)) (PRAGMA .  16) (RAISE .  20) (REQUEUE .  21) 
(RETURN .  22) (SELECT .  24) (THEN . (sequence_of_statements_opt . 1)) (WHILE 
. (block_label_opt . 1)) (LEFT_PAR [...]
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (ELSE . 
(sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 1)) 
(GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (OR . 
(sequence_of_statements_opt . 1)) (PRAGMA .  16) (RAISE .  20) (REQUEUE .  21) 
(RETURN .  22) (SELECT .  24) (THEN . (sequence_of_statements_opt . 1)) (WHILE 
. (block_label_opt . 1)) (LESS_LES [...]
-      ((default . error) (ELSE . (select_alternative_list . 1)) (END . 
(select_alternative_list . 1)) (OR . (select_alternative_list . 1)))
-      ((default . error) (ELSE . (select_alternative_list_opt . 0)) (END . 
(select_alternative_list_opt . 0)) (OR .  368))
-      ((default . error) (ELSE .  369) (END .  370))
-      ((default . error) (THEN .  371))
-      ((default . error) (IS .  372))
-      ((default . error) (IDENTIFIER .  373))
-      ((default . error) (IDENTIFIER .  374))
-      ((default . error) (IS . (aspect_specification_opt . 1)) (WITH .  336) 
(SEMICOLON . (aspect_specification_opt . 1)))
-      ((default . error) (IS . (discriminant_part_opt . 2)) (LEFT_PAREN .  
376) (SEMICOLON . (discriminant_part_opt . 2)))
-      ((default . error) (TYPE .  378))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (COMMA .  380) (SEMICOLON .  381))
-      ((default . error) (LEFT_PAREN .  235) (COMMA . (name_list . 1)) (DOT .  
237) (SEMICOLON . (name_list . 1)) (TICK_1 .  239))
-      ((default . error) (LOOP . (iteration_scheme . 0)))
-      ((default . error) (COMMA .  380) (SEMICOLON .  382))
-      ((default . error) (GREATER_GREATER .  383))
-      ((default . error) (ACCESS . (null_exclusion_opt . 1)) (BEGIN . 
(block_label . 0)) (DECLARE . (block_label . 0)) (EXCEPTION .  384) (FOR . 
(block_label . 0)) (LOOP . (block_label . 0)) (NOT .  385) (WHILE . 
(block_label . 0)) (IDENTIFIER . (null_exclusion_opt . 1)) (STRING_LITERAL . 
(null_exclusion_opt . 1)) (CHARACTER_LITERAL . (null_exclusion_opt . 1)))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXCEPTION . (sequence_of_statements_opt . 
1)) (EXIT .  5) (FOR . (block_label_opt . 1)) (GOTO .  9) (IF .  10) (LOOP . 
(block_label_opt . 1)) (NULL .  13) (PRAGMA .  16) (RAISE .  20) (REQUEUE .  
21) (RETURN .  22) (SELECT .  24) (WHILE . (block_label_opt . 1)) (LESS_LESS .  
31) (IDENTIFIER .  359) (STRING [...]
-      ((default . error) (BEGIN . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) (OVERRIDING .  14) 
(PACKAGE .  15) (PRAGMA .  16) (PROCEDURE . (overriding_indicator_opt . 2)) 
(PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) (TYPE .  27) (USE .  28) 
(IDENTIFIER .  185))
-      ((default . error) (LOOP . (iterator_specification_opt . 1)) (IDENTIFIER 
.  394))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 1)) 
(GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (PRAGMA .  
16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) (WHILE . 
(block_label_opt . 1)) (LESS_LESS .  31) (IDENTIFIER .  359) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (LOOP .  396))
-      ((default . error) (ACCEPT . (compilation_unit_list . 0)) (ABORT . 
(compilation_unit_list . 0)) (BEGIN . (compilation_unit_list . 0)) (CASE . 
(compilation_unit_list . 0)) (DECLARE . (compilation_unit_list . 0)) (DELAY . 
(compilation_unit_list . 0)) (ENTRY . (compilation_unit_list . 0)) (EXIT . 
(compilation_unit_list . 0)) (FOR . (compilation_unit_list . 0)) (FUNCTION . 
(compilation_unit_list . 0)) (GENERIC . (compilation_unit_list . 0)) (GOTO . 
(compilation_unit_list . 0)) (IF . (c [...]
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (SEMICOLON .  398))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (ACCESS . (aliased_opt . 1)) (ALIASED .  400) (ARRAY 
. (aliased_opt . 1)) (CONSTANT . ( 401 (aliased_opt . 1))) (EXCEPTION .  402) 
(NOT . (aliased_opt . 1)) (WITH . (aliased_opt . 1)) (COLON_EQUAL . 
(aliased_opt . 1)) (SEMICOLON . (aliased_opt . 1)) (IDENTIFIER . (aliased_opt . 
1)) (STRING_LITERAL . (aliased_opt . 1)) (CHARACTER_LITERAL . (aliased_opt . 
1)))
-      ((default . error) (IDENTIFIER .  404))
-      ((default . error) (ABS .  121) (CASE .  257) (FOR .  258) (IF .  259) 
(NEW .  122) (NOT .  260) (NULL .  124) (OTHERS .  262) (RAISE .  125) 
(LEFT_PAREN .  126) (RIGHT_PAREN . (association_opt . 5)) (BAR . 
(discrete_choice_list . 2)) (COMMA . (association_opt . 5)) (EQUAL_GREATER . 
(discrete_choice_list . 2)) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  
129) (IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  263))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (SEMICOLON . 
(expression_opt . 1)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ALL .  411) (IDENTIFIER .  412) (STRING_LITERAL .  
413) (CHARACTER_LITERAL .  414))
-      ((default . error) (ACCEPT . (procedure_call_statement . 0)) (ABORT . 
(procedure_call_statement . 0)) (BEGIN . (procedure_call_statement . 0)) (CASE 
. (procedure_call_statement . 0)) (DECLARE . (procedure_call_statement . 0)) 
(DELAY . (procedure_call_statement . 0)) (ELSE . (procedure_call_statement . 
0)) (ELSIF . (procedure_call_statement . 0)) (END . (procedure_call_statement . 
0)) (ENTRY . (procedure_call_statement . 0)) (EXCEPTION . 
(procedure_call_statement . 0)) (EXIT . (proc [...]
-      ((default . error) (ACCESS . (tick . 0)) (DELTA . (tick . 0)) (DIGITS . 
(tick . 0)) (MOD . (tick . 0)) (RANGE . (tick . 0)) (LEFT_PAREN . (tick . 0)) 
(IDENTIFIER . (tick . 0)) (STRING_LITERAL . (tick . 0)) (CHARACTER_LITERAL . 
(tick . 0)))
-      ((default . error) (ACCEPT . (name . 1)) (ABORT . (name . 1)) (AND . 
(name . 1)) (BEGIN . (name . 1)) (CASE . (name . 1)) (DECLARE . (name . 1)) 
(DELAY . (name . 1)) (DIGITS . (name . 1)) (DO . (name . 1)) (ELSE . (name . 
1)) (ELSIF . (name . 1)) (EXIT . (name . 1)) (FOR . (name . 1)) (GOTO . (name . 
1)) (IF . (name . 1)) (IN . (name . 1)) (IS . (name . 1)) (LOOP . (name . 1)) 
(MOD . (name . 1)) (NOT . (name . 1)) (NULL . (name . 1)) (OF . (name . 1)) (OR 
. (name . 1)) (PRAGMA . (n [...]
-      ((default . error) (ACCESS .  415) (DELTA .  416) (DIGITS .  417) (MOD . 
 418) (LEFT_PAREN .  126) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  422))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IS . ( 425 (subprogram_specification . 1))) (RENAMES 
. (subprogram_specification . 1)) (WITH . (subprogram_specification . 1)) 
(SEMICOLON . (subprogram_specification . 1)))
-      ((default . error) (IS . ( 426 (subprogram_specification . 0))) (RENAMES 
. (subprogram_specification . 0)) (WITH . (subprogram_specification . 0)) 
(SEMICOLON . (subprogram_specification . 0)))
-      ((default . error) (IS . ( 427 (aspect_specification_opt . 1))) (RENAMES 
.  428) (WITH .  336) (SEMICOLON . (aspect_specification_opt . 1)))
-      ((default . error) (ACCEPT . (package_declaration . 0)) (ABORT . 
(package_declaration . 0)) (BEGIN . (package_declaration . 0)) (CASE . 
(package_declaration . 0)) (DECLARE . (package_declaration . 0)) (DELAY . 
(package_declaration . 0)) (END . (package_declaration . 0)) (ENTRY . 
(package_declaration . 0)) (EXIT . (package_declaration . 0)) (FOR . 
(package_declaration . 0)) (FUNCTION . (package_declaration . 0)) (GENERIC . 
(package_declaration . 0)) (GOTO . (package_declaration . 0) [...]
-      ((default . error) (ABS .  121) (CASE .  257) (FOR .  258) (IF .  259) 
(NEW .  122) (NOT .  260) (NULL .  124) (OTHERS .  262) (RAISE .  125) 
(LEFT_PAREN .  126) (RIGHT_PAREN . (association_opt . 5)) (BAR . 
(discrete_choice_list . 2)) (COMMA . (association_opt . 5)) (EQUAL_GREATER . 
(discrete_choice_list . 2)) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  
129) (IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  263))
-      ((default . error) (DO . (actual_parameter_part_opt . 0)) (LEFT_PAREN . 
(actual_parameter_part_opt . 0)) (SEMICOLON . (actual_parameter_part_opt . 0)))
-      ((default . error) (DO . (parameter_profile_opt . 1)) (LEFT_PAREN .  
430) (SEMICOLON . (parameter_profile_opt . 1)))
-      ((default . error) (ACCEPT . (simple_statement . 8)) (ABORT . 
(simple_statement . 8)) (BEGIN . (simple_statement . 8)) (CASE . 
(simple_statement . 8)) (DECLARE . (simple_statement . 8)) (DELAY . 
(simple_statement . 8)) (ELSE . (simple_statement . 8)) (ELSIF . 
(simple_statement . 8)) (END . (simple_statement . 8)) (ENTRY . 
(simple_statement . 8)) (EXCEPTION . (simple_statement . 8)) (EXIT . 
(simple_statement . 8)) (FOR . (simple_statement . 8)) (FUNCTION . 
(simple_statement . 8)) (G [...]
-      ((default . error) (AND . (factor . 2)) (DIGITS . (factor . 2)) (DO . 
(factor . 2)) (ELSE . (factor . 2)) (ELSIF . (factor . 2)) (IN . (factor . 2)) 
(IS . (factor . 2)) (LOOP . (factor . 2)) (MOD . (factor . 2)) (NOT . (factor . 
2)) (OF . (factor . 2)) (OR . (factor . 2)) (RANGE . (factor . 2)) (REM . 
(factor . 2)) (THEN . (factor . 2)) (WITH . (factor . 2)) (XOR . (factor . 2)) 
(RIGHT_PAREN . (factor . 2)) (AMPERSAND . (factor . 2)) (BAR . (factor . 2)) 
(COLON_EQUAL . (factor . 2) [...]
-      ((default . error) (AND . (primary . 4)) (DIGITS . (primary . 4)) (DO . 
(primary . 4)) (ELSE . (primary . 4)) (ELSIF . (primary . 4)) (IN . (primary . 
4)) (IS . (primary . 4)) (LOOP . (primary . 4)) (MOD . (primary . 4)) (NOT . 
(primary . 4)) (OF . (primary . 4)) (OR . (primary . 4)) (RANGE . (primary . 
4)) (REM . (primary . 4)) (THEN . (primary . 4)) (WITH . (primary . 4)) (XOR . 
(primary . 4)) (LEFT_PAREN .  235) (RIGHT_PAREN . (primary . 4)) (AMPERSAND . 
(primary . 4)) (BAR . (p [...]
-      ((default . error) (AND . (factor . 3)) (DIGITS . (factor . 3)) (DO . 
(factor . 3)) (ELSE . (factor . 3)) (ELSIF . (factor . 3)) (IN . (factor . 3)) 
(IS . (factor . 3)) (LOOP . (factor . 3)) (MOD . (factor . 3)) (NOT . (factor . 
3)) (OF . (factor . 3)) (OR . (factor . 3)) (RANGE . (factor . 3)) (REM . 
(factor . 3)) (THEN . (factor . 3)) (WITH . (factor . 3)) (XOR . (factor . 3)) 
(RIGHT_PAREN . (factor . 3)) (AMPERSAND . (factor . 3)) (BAR . (factor . 3)) 
(COLON_EQUAL . (factor . 3) [...]
-      ((default . error) (AND . (raise_expression . 1)) (DIGITS . 
(raise_expression . 1)) (DO . (raise_expression . 1)) (ELSE . (raise_expression 
. 1)) (ELSIF . (raise_expression . 1)) (IS . (raise_expression . 1)) (LOOP . 
(raise_expression . 1)) (OR . (raise_expression . 1)) (RANGE . 
(raise_expression . 1)) (THEN . (raise_expression . 1)) (WITH . ( 432 
(raise_expression . 1))) (XOR . (raise_expression . 1)) (LEFT_PAREN .  235) 
(RIGHT_PAREN . (raise_expression . 1)) (BAR . (raise_express [...]
-      ((default . error) (ABS .  121) (IS . (expression_opt . 1)) (NEW .  122) 
(NOT .  123) (NULL .  124) (RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ALL .  434) (SOME .  435))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (THEN . (expression_opt . 1)) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (NEW .  122) (NULL .  438) (LEFT_PAREN .  126) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (AND . (primary . 1)) (IN . (primary . 1)) (MOD . 
(primary . 1)) (NOT . (primary . 1)) (OR . (primary . 1)) (RECORD .  439) (REM 
. (primary . 1)) (WITH . (primary . 1)) (XOR . (primary . 1)) (RIGHT_PAREN . 
(primary . 1)) (AMPERSAND . (primary . 1)) (BAR . (primary . 1)) (COMMA . 
(primary . 1)) (DOT_DOT . (primary . 1)) (EQUAL . (primary . 1)) (EQUAL_GREATER 
. (primary . 1)) (GREATER . (primary . 1)) (GREATER_EQUAL . (primary . 1)) 
(LESS . (primary . 1)) (LESS_EQU [...]
-      ((default . error) (BAR . (discrete_choice . 3)) (EQUAL_GREATER . 
(discrete_choice . 3)))
-      ((default . error) (AND . (name . 6)) (IN . (name . 6)) (IS . (name . 
6)) (MOD . (name . 6)) (NOT . (name . 6)) (OR . (name . 6)) (RANGE . (name . 
6)) (REM . (name . 6)) (WITH . (name . 6)) (XOR . (name . 6)) (LEFT_PAREN . 
(name . 6)) (RIGHT_PAREN . (name . 6)) (AMPERSAND . (name . 6)) (BAR . (name . 
6)) (COMMA . (name . 6)) (DOT . (name . 6)) (DOT_DOT . (name . 6)) (EQUAL . 
(name . 6)) (EQUAL_GREATER . ( 440 (name . 6))) (GREATER . (name . 6)) 
(GREATER_EQUAL . (name . 6)) (LESS .  [...]
-      ((default . error) (IS . (association_list . 1)) (RIGHT_PAREN . 
(association_list . 1)) (COMMA . (association_list . 1)) (SEMICOLON . 
(association_list . 1)))
-      ((default . error) (RIGHT_PAREN .  441) (COMMA .  442))
-      ((default . error) (RIGHT_PAREN . (conditional_quantified_expression . 
1)))
-      ((default . error) (RIGHT_PAREN .  443))
-      ((default . error) (BAR . (discrete_choice_list . 1)) (EQUAL_GREATER . 
(discrete_choice_list . 1)))
-      ((default . error) (BAR .  444) (EQUAL_GREATER .  445))
-      ((default . error) (WITH . (expression_opt . 0)) (RIGHT_PAREN . 
((association_opt . 4) (expression_opt . 0))) (BAR . (discrete_choice . 0)) 
(COMMA . (association_opt . 4)) (EQUAL_GREATER . (discrete_choice . 0)))
-      ((default . error) (WITH .  446))
-      ((default . error) (RIGHT_PAREN . (conditional_quantified_expression . 
0)))
-      ((default . error) (AND . (primary . 3)) (DIGITS . (primary . 3)) (DO . 
(primary . 3)) (ELSE . (primary . 3)) (ELSIF . (primary . 3)) (IN . (primary . 
3)) (IS . (primary . 3)) (LOOP . (primary . 3)) (MOD . (primary . 3)) (NOT . 
(primary . 3)) (OR . (primary . 3)) (RANGE . (primary . 3)) (REM . (primary . 
3)) (THEN . (primary . 3)) (WITH . (primary . 3)) (XOR . (primary . 3)) 
(LEFT_PAREN .  235) (RIGHT_PAREN . (primary . 3)) (AMPERSAND . (primary . 3)) 
(BAR . (primary . 3)) (COMMA . [...]
-      ((default . error) (RIGHT_PAREN . (conditional_quantified_expression . 
2)))
-      ((default . error) (BAR . (discrete_choice . 2)) (EQUAL_GREATER . 
(discrete_choice . 2)))
-      ((default . error) (AND . (relation . 3)) (IN .  287) (IS . (relation . 
3)) (NOT .  288) (OR . (relation . 3)) (WITH . (relation . 3)) (XOR . (relation 
. 3)) (RIGHT_PAREN . (relation . 3)) (BAR . (relation . 3)) (COMMA . (relation 
. 3)) (DOT_DOT .  448) (EQUAL .  289) (EQUAL_GREATER . (relation . 3)) (GREATER 
.  290) (GREATER_EQUAL .  291) (LESS .  292) (LESS_EQUAL .  293) (SEMICOLON . 
(relation . 3)) (SLASH_EQUAL .  294))
-      ((default . error) (WHEN .  449))
-      ((default . error) (NEW .  122) (NULL .  124) (LEFT_PAREN .  126) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (THEN .  454))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ELSE .  456))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (THEN .  458) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (ELSE .  460) (NEW .  122) (NOT .  123) 
(NULL .  124) (RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (IN .  467))
-      ((default . error) (ABS . (relational_operator . 0)) (NEW . 
(relational_operator . 0)) (NOT . (relational_operator . 0)) (NULL . 
(relational_operator . 0)) (LEFT_PAREN . (relational_operator . 0)) (MINUS . 
(relational_operator . 0)) (PLUS . (relational_operator . 0)) (NUMERIC_LITERAL 
. (relational_operator . 0)) (IDENTIFIER . (relational_operator . 0)) 
(STRING_LITERAL . (relational_operator . 0)) (CHARACTER_LITERAL . 
(relational_operator . 0)))
-      ((default . error) (ABS . (relational_operator . 4)) (NEW . 
(relational_operator . 4)) (NOT . (relational_operator . 4)) (NULL . 
(relational_operator . 4)) (LEFT_PAREN . (relational_operator . 4)) (MINUS . 
(relational_operator . 4)) (PLUS . (relational_operator . 4)) (NUMERIC_LITERAL 
. (relational_operator . 4)) (IDENTIFIER . (relational_operator . 4)) 
(STRING_LITERAL . (relational_operator . 4)) (CHARACTER_LITERAL . 
(relational_operator . 4)))
-      ((default . error) (ABS . (relational_operator . 5)) (NEW . 
(relational_operator . 5)) (NOT . (relational_operator . 5)) (NULL . 
(relational_operator . 5)) (LEFT_PAREN . (relational_operator . 5)) (MINUS . 
(relational_operator . 5)) (PLUS . (relational_operator . 5)) (NUMERIC_LITERAL 
. (relational_operator . 5)) (IDENTIFIER . (relational_operator . 5)) 
(STRING_LITERAL . (relational_operator . 5)) (CHARACTER_LITERAL . 
(relational_operator . 5)))
-      ((default . error) (ABS . (relational_operator . 2)) (NEW . 
(relational_operator . 2)) (NOT . (relational_operator . 2)) (NULL . 
(relational_operator . 2)) (LEFT_PAREN . (relational_operator . 2)) (MINUS . 
(relational_operator . 2)) (PLUS . (relational_operator . 2)) (NUMERIC_LITERAL 
. (relational_operator . 2)) (IDENTIFIER . (relational_operator . 2)) 
(STRING_LITERAL . (relational_operator . 2)) (CHARACTER_LITERAL . 
(relational_operator . 2)))
-      ((default . error) (ABS . (relational_operator . 3)) (NEW . 
(relational_operator . 3)) (NOT . (relational_operator . 3)) (NULL . 
(relational_operator . 3)) (LEFT_PAREN . (relational_operator . 3)) (MINUS . 
(relational_operator . 3)) (PLUS . (relational_operator . 3)) (NUMERIC_LITERAL 
. (relational_operator . 3)) (IDENTIFIER . (relational_operator . 3)) 
(STRING_LITERAL . (relational_operator . 3)) (CHARACTER_LITERAL . 
(relational_operator . 3)))
-      ((default . error) (ABS . (relational_operator . 1)) (NEW . 
(relational_operator . 1)) (NOT . (relational_operator . 1)) (NULL . 
(relational_operator . 1)) (LEFT_PAREN . (relational_operator . 1)) (MINUS . 
(relational_operator . 1)) (PLUS . (relational_operator . 1)) (NUMERIC_LITERAL 
. (relational_operator . 1)) (IDENTIFIER . (relational_operator . 1)) 
(STRING_LITERAL . (relational_operator . 1)) (CHARACTER_LITERAL . 
(relational_operator . 1)))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS . (multiplying_operator . 2)) (NEW . 
(multiplying_operator . 2)) (NOT . (multiplying_operator . 2)) (NULL . 
(multiplying_operator . 2)) (LEFT_PAREN . (multiplying_operator . 2)) 
(NUMERIC_LITERAL . (multiplying_operator . 2)) (IDENTIFIER . 
(multiplying_operator . 2)) (STRING_LITERAL . (multiplying_operator . 2)) 
(CHARACTER_LITERAL . (multiplying_operator . 2)))
-      ((default . error) (ABS . (multiplying_operator . 3)) (NEW . 
(multiplying_operator . 3)) (NOT . (multiplying_operator . 3)) (NULL . 
(multiplying_operator . 3)) (LEFT_PAREN . (multiplying_operator . 3)) 
(NUMERIC_LITERAL . (multiplying_operator . 3)) (IDENTIFIER . 
(multiplying_operator . 3)) (STRING_LITERAL . (multiplying_operator . 3)) 
(CHARACTER_LITERAL . (multiplying_operator . 3)))
-      ((default . error) (ABS . (multiplying_operator . 1)) (NEW . 
(multiplying_operator . 1)) (NOT . (multiplying_operator . 1)) (NULL . 
(multiplying_operator . 1)) (LEFT_PAREN . (multiplying_operator . 1)) 
(NUMERIC_LITERAL . (multiplying_operator . 1)) (IDENTIFIER . 
(multiplying_operator . 1)) (STRING_LITERAL . (multiplying_operator . 1)) 
(CHARACTER_LITERAL . (multiplying_operator . 1)))
-      ((default . error) (ABS . (multiplying_operator . 0)) (NEW . 
(multiplying_operator . 0)) (NOT . (multiplying_operator . 0)) (NULL . 
(multiplying_operator . 0)) (LEFT_PAREN . (multiplying_operator . 0)) 
(NUMERIC_LITERAL . (multiplying_operator . 0)) (IDENTIFIER . 
(multiplying_operator . 0)) (STRING_LITERAL . (multiplying_operator . 0)) 
(CHARACTER_LITERAL . (multiplying_operator . 0)))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS . (binary_adding_operator . 2)) (NEW . 
(binary_adding_operator . 2)) (NOT . (binary_adding_operator . 2)) (NULL . 
(binary_adding_operator . 2)) (LEFT_PAREN . (binary_adding_operator . 2)) 
(NUMERIC_LITERAL . (binary_adding_operator . 2)) (IDENTIFIER . 
(binary_adding_operator . 2)) (STRING_LITERAL . (binary_adding_operator . 2)) 
(CHARACTER_LITERAL . (binary_adding_operator . 2)))
-      ((default . error) (ABS . (binary_adding_operator . 1)) (NEW . 
(binary_adding_operator . 1)) (NOT . (binary_adding_operator . 1)) (NULL . 
(binary_adding_operator . 1)) (LEFT_PAREN . (binary_adding_operator . 1)) 
(NUMERIC_LITERAL . (binary_adding_operator . 1)) (IDENTIFIER . 
(binary_adding_operator . 1)) (STRING_LITERAL . (binary_adding_operator . 1)) 
(CHARACTER_LITERAL . (binary_adding_operator . 1)))
-      ((default . error) (ABS . (binary_adding_operator . 0)) (NEW . 
(binary_adding_operator . 0)) (NOT . (binary_adding_operator . 0)) (NULL . 
(binary_adding_operator . 0)) (LEFT_PAREN . (binary_adding_operator . 0)) 
(NUMERIC_LITERAL . (binary_adding_operator . 0)) (IDENTIFIER . 
(binary_adding_operator . 0)) (STRING_LITERAL . (binary_adding_operator . 0)) 
(CHARACTER_LITERAL . (binary_adding_operator . 0)))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (AND . (simple_expression . 0)) (DIGITS . 
(simple_expression . 0)) (DO . (simple_expression . 0)) (ELSE . 
(simple_expression . 0)) (ELSIF . (simple_expression . 0)) (IN . 
(simple_expression . 0)) (IS . (simple_expression . 0)) (LOOP . 
(simple_expression . 0)) (NOT . (simple_expression . 0)) (OF . 
(simple_expression . 0)) (OR . (simple_expression . 0)) (RANGE . 
(simple_expression . 0)) (THEN . (simple_expression . 0)) (WITH . 
(simple_expression . 0)) (XOR . (simpl [...]
-      ((default . error) (SEMICOLON .  471))
-      ((default . error) (ACCEPT . (delay_statement . 1)) (ABORT . 
(delay_statement . 1)) (BEGIN . (delay_statement . 1)) (CASE . (delay_statement 
. 1)) (DECLARE . (delay_statement . 1)) (DELAY . (delay_statement . 1)) (ELSE . 
(delay_statement . 1)) (ELSIF . (delay_statement . 1)) (END . (delay_statement 
. 1)) (ENTRY . (delay_statement . 1)) (EXCEPTION . (delay_statement . 1)) (EXIT 
. (delay_statement . 1)) (FOR . (delay_statement . 1)) (FUNCTION . 
(delay_statement . 1)) (GENERIC . (dela [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (SEMICOLON . 
(expression_opt . 1)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT . (exit_statement . 1)) (ABORT . 
(exit_statement . 1)) (BEGIN . (exit_statement . 1)) (CASE . (exit_statement . 
1)) (DECLARE . (exit_statement . 1)) (DELAY . (exit_statement . 1)) (ELSE . 
(exit_statement . 1)) (ELSIF . (exit_statement . 1)) (END . (exit_statement . 
1)) (ENTRY . (exit_statement . 1)) (EXCEPTION . (exit_statement . 1)) (EXIT . 
(exit_statement . 1)) (FOR . (exit_statement . 1)) (FUNCTION . (exit_statement 
. 1)) (GENERIC . (exit_statement . 1 [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  473) (NULL .  124) 
(REVERSE .  474) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (REVERSE .  480) (IDENTIFIER .  119) (STRING_LITERAL 
.  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (NOT .  482) (IDENTIFIER .  119) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (SEMICOLON . 
(expression_opt . 1)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (AT .  486))
-      ((default . error) (RECORD .  487) (LEFT_PAREN .  126))
-      ((default . error) (ACCESS . (null_exclusion_opt . 1)) (DO . 
(null_exclusion_opt . 1)) (IS . (null_exclusion_opt . 1)) (NOT .  385) (RENAMES 
. (null_exclusion_opt . 1)) (WITH . (null_exclusion_opt . 1)) (RIGHT_PAREN . 
(null_exclusion_opt . 1)) (COLON_EQUAL . (null_exclusion_opt . 1)) (SEMICOLON . 
(null_exclusion_opt . 1)) (IDENTIFIER . (null_exclusion_opt . 1)) 
(STRING_LITERAL . (null_exclusion_opt . 1)) (CHARACTER_LITERAL . 
(null_exclusion_opt . 1)))
-      ((default . error) (ABS .  121) (CASE .  257) (FOR .  258) (IF .  259) 
(NEW .  122) (NOT .  260) (NULL .  124) (OTHERS .  262) (RAISE .  125) 
(LEFT_PAREN .  126) (RIGHT_PAREN . ((association_opt . 5) 
(parameter_specification . 4))) (BAR . (discrete_choice_list . 2)) (COMMA . 
(association_opt . 5)) (EQUAL_GREATER . (discrete_choice_list . 2)) (MINUS .  
127) (PLUS .  128) (SEMICOLON . (parameter_specification . 4)) (NUMERIC_LITERAL 
.  129) (IDENTIFIER .  491) (STRING_LITERAL .  33) ( [...]
-      ((default . error) (RETURN .  316))
-      ((default . error) (IS . (function_specification . 0)) (RENAMES . 
(function_specification . 0)) (WITH . (function_specification . 0)) (SEMICOLON 
. (function_specification . 0)))
-      ((default . error) (DO . (parameter_and_result_profile . 1)) (IS . 
(parameter_and_result_profile . 1)) (RENAMES . (parameter_and_result_profile . 
1)) (WITH . (parameter_and_result_profile . 1)) (RIGHT_PAREN . 
(parameter_and_result_profile . 1)) (COLON_EQUAL . 
(parameter_and_result_profile . 1)) (SEMICOLON . (parameter_and_result_profile 
. 1)))
-      ((default . error) (RENAMES .  496) (LEFT_PAREN .  235) (DOT .  237) 
(TICK_1 .  239))
-      ((default . error) (RENAMES .  497) (LEFT_PAREN .  235) (DOT .  237) 
(TICK_1 .  239))
-      ((default . error) (RENAMES .  498) (LEFT_PAREN .  235) (DOT .  237) 
(TICK_1 .  239))
-      ((default . error) (IS . (discriminant_part_opt . 2)) (WITH . 
(discriminant_part_opt . 2)) (LEFT_PAREN .  376) (SEMICOLON . 
(discriminant_part_opt . 2)))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IS .  501) (WITH .  336) (SEMICOLON . 
(aspect_specification_opt . 1)))
-      ((default . error) (FUNCTION . (generic_formal_parameter_declarations . 
0)) (PACKAGE . (generic_formal_parameter_declarations . 0)) (PRAGMA . 
(generic_formal_parameter_declarations . 0)) (PROCEDURE . 
(generic_formal_parameter_declarations . 0)) (TYPE . 
(generic_formal_parameter_declarations . 0)) (USE . 
(generic_formal_parameter_declarations . 0)) (WITH . 
(generic_formal_parameter_declarations . 0)) (IDENTIFIER . 
(generic_formal_parameter_declarations . 0)))
-      ((default . error) (ACCESS . (mode_opt . 3)) (IN .  503) (NOT . 
(mode_opt . 3)) (OUT .  504) (WITH . (mode_opt . 3)) (COLON_EQUAL . (mode_opt . 
3)) (SEMICOLON . (mode_opt . 3)) (IDENTIFIER . (mode_opt . 3)) (STRING_LITERAL 
. (mode_opt . 3)) (CHARACTER_LITERAL . (mode_opt . 3)))
-      ((default . error) (ACCEPT . (simple_statement . 3)) (ABORT . 
(simple_statement . 3)) (BEGIN . (simple_statement . 3)) (CASE . 
(simple_statement . 3)) (DECLARE . (simple_statement . 3)) (DELAY . 
(simple_statement . 3)) (ELSE . (simple_statement . 3)) (ELSIF . 
(simple_statement . 3)) (END . (simple_statement . 3)) (ENTRY . 
(simple_statement . 3)) (EXCEPTION . (simple_statement . 3)) (EXIT . 
(simple_statement . 3)) (FOR . (simple_statement . 3)) (FUNCTION . 
(simple_statement . 3)) (G [...]
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (ELSE . 
(sequence_of_statements_opt . 1)) (ELSIF . (sequence_of_statements_opt . 1)) 
(END . (sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 
1)) (GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (PRAGMA 
.  16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) (WHILE . 
(block_label_opt . 1)) (LESS_L [...]
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (COMMA .  380) (SEMICOLON .  508))
-      ((default . error) (IS . ( 509 (aspect_specification_opt . 1))) (WITH .  
336) (LEFT_PAREN .  235) (DOT .  237) (TICK_1 .  239))
-      ((default . error) (NEW .  511))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (IS . (association_opt . 5)) (NEW .  
122) (NOT .  260) (NULL .  124) (OTHERS .  262) (RAISE .  125) (LEFT_PAREN .  
126) (BAR . (discrete_choice_list . 2)) (COMMA . (association_opt . 5)) 
(EQUAL_GREATER . (discrete_choice_list . 2)) (MINUS .  127) (PLUS .  128) 
(SEMICOLON . (association_opt . 5)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  
119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  263))
-      ((default . error) (IS .  514))
-      ((default . error) (ABS .  121) (CASE .  257) (FOR .  258) (IF .  259) 
(NEW .  122) (NOT .  260) (NULL .  124) (OTHERS .  262) (RAISE .  125) 
(LEFT_PAREN .  126) (RIGHT_PAREN . (association_opt . 5)) (BAR . 
(discrete_choice_list . 2)) (COMMA . (association_opt . 5)) (EQUAL_GREATER . 
(discrete_choice_list . 2)) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  
129) (IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  263))
-      ((default . error) (ACCEPT . (pragma_g . 2)) (ABORT . (pragma_g . 2)) 
(BEGIN . (pragma_g . 2)) (CASE . (pragma_g . 2)) (DECLARE . (pragma_g . 2)) 
(DELAY . (pragma_g . 2)) (ELSE . (pragma_g . 2)) (ELSIF . (pragma_g . 2)) (END 
. (pragma_g . 2)) (ENTRY . (pragma_g . 2)) (EXCEPTION . (pragma_g . 2)) (EXIT . 
(pragma_g . 2)) (FOR . (pragma_g . 2)) (FUNCTION . (pragma_g . 2)) (GENERIC . 
(pragma_g . 2)) (GOTO . (pragma_g . 2)) (IF . (pragma_g . 2)) (LIMITED . 
(pragma_g . 2)) (LOOP . (pragm [...]
-      ((default . error) (USE . ((direct_name . 0) (name . 5))) (LEFT_PAREN . 
(name . 5)) (DOT . (name . 5)) (TICK_1 . (name . 5)))
-      ((default . error) (COMMA .  380) (SEMICOLON .  517))
-      ((default . error) (ACCESS . (null_exclusion_opt . 1)) (EXCEPTION .  
384) (NOT .  385) (IDENTIFIER . (null_exclusion_opt . 1)) (STRING_LITERAL . 
(null_exclusion_opt . 1)) (CHARACTER_LITERAL . (null_exclusion_opt . 1)))
-      ((default . error) (DO . (parameter_profile_opt . 0)) (IS . 
(parameter_profile_opt . 0)) (RENAMES . (parameter_profile_opt . 0)) (WHEN . 
(parameter_profile_opt . 0)) (WITH . (parameter_profile_opt . 0)) (RIGHT_PAREN 
. (parameter_profile_opt . 0)) (COLON_EQUAL . (parameter_profile_opt . 0)) 
(SEMICOLON . (parameter_profile_opt . 0)))
-      ((default . error) (IS . (procedure_specification . 0)) (RENAMES . 
(procedure_specification . 0)) (WITH . (procedure_specification . 0)) 
(SEMICOLON . (procedure_specification . 0)))
-      ((default . error) (IS . ( 518 (aspect_specification_opt . 1))) (WITH .  
336))
-      ((default . error) (IS . (discriminant_part_opt . 2)) (WITH . 
(discriminant_part_opt . 2)) (LEFT_PAREN .  376))
-      ((default . error) (IS .  521))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (SEMICOLON . 
(expression_opt . 1)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT . (raise_statement . 1)) (ABORT . 
(raise_statement . 1)) (BEGIN . (raise_statement . 1)) (CASE . (raise_statement 
. 1)) (DECLARE . (raise_statement . 1)) (DELAY . (raise_statement . 1)) (ELSE . 
(raise_statement . 1)) (ELSIF . (raise_statement . 1)) (END . (raise_statement 
. 1)) (ENTRY . (raise_statement . 1)) (EXCEPTION . (raise_statement . 1)) (EXIT 
. (raise_statement . 1)) (FOR . (raise_statement . 1)) (FUNCTION . 
(raise_statement . 1)) (GENERIC . (rais [...]
-      ((default . error) (ABORT .  523))
-      ((default . error) (ACCEPT . (requeue_statement . 1)) (ABORT . 
(requeue_statement . 1)) (BEGIN . (requeue_statement . 1)) (CASE . 
(requeue_statement . 1)) (DECLARE . (requeue_statement . 1)) (DELAY . 
(requeue_statement . 1)) (ELSE . (requeue_statement . 1)) (ELSIF . 
(requeue_statement . 1)) (END . (requeue_statement . 1)) (ENTRY . 
(requeue_statement . 1)) (EXCEPTION . (requeue_statement . 1)) (EXIT . 
(requeue_statement . 1)) (FOR . (requeue_statement . 1)) (FUNCTION . 
(requeue_stat [...]
-      ((default . error) (ACCESS . (aliased_opt . 1)) (ALIASED .  400) 
(CONSTANT . (aliased_opt . 1)) (DO . (aliased_opt . 1)) (NOT . (aliased_opt . 
1)) (COLON_EQUAL . (aliased_opt . 1)) (SEMICOLON . (aliased_opt . 1)) 
(IDENTIFIER . (aliased_opt . 1)) (STRING_LITERAL . (aliased_opt . 1)) 
(CHARACTER_LITERAL . (aliased_opt . 1)))
-      ((default . error) (ACCEPT . (simple_return_statement . 0)) (ABORT . 
(simple_return_statement . 0)) (BEGIN . (simple_return_statement . 0)) (CASE . 
(simple_return_statement . 0)) (DECLARE . (simple_return_statement . 0)) (DELAY 
. (simple_return_statement . 0)) (ELSE . (simple_return_statement . 0)) (ELSIF 
. (simple_return_statement . 0)) (END . (simple_return_statement . 0)) (ENTRY . 
(simple_return_statement . 0)) (EXCEPTION . (simple_return_statement . 0)) 
(EXIT . (simple_return_s [...]
-      ((default . error) (ACCEPT . (extended_return_statement . 1)) (ABORT . 
(extended_return_statement . 1)) (BEGIN . (extended_return_statement . 1)) 
(CASE . (extended_return_statement . 1)) (DECLARE . (extended_return_statement 
. 1)) (DELAY . (extended_return_statement . 1)) (ELSE . 
(extended_return_statement . 1)) (ELSIF . (extended_return_statement . 1)) (END 
. (extended_return_statement . 1)) (ENTRY . (extended_return_statement . 1)) 
(EXCEPTION . (extended_return_statement . 1)) (E [...]
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXCEPTION . (sequence_of_statements_opt . 
1)) (EXIT .  5) (FOR . (block_label_opt . 1)) (GOTO .  9) (IF .  10) (LOOP . 
(block_label_opt . 1)) (NULL .  13) (PRAGMA .  16) (RAISE .  20) (REQUEUE .  
21) (RETURN .  22) (SELECT .  24) (WHILE . (block_label_opt . 1)) (LESS_LESS .  
31) (IDENTIFIER .  359) (STRING [...]
-      ((default . error) (LEFT_PAREN .  235) (RIGHT_PAREN .  526) (DOT .  237) 
(TICK_1 .  239))
-      ((default . error) (ELSE . (select_alternative . 4)) (END . 
(select_alternative . 4)) (OR . (select_alternative . 4)))
-      ((default . error) (EQUAL_GREATER .  527))
-      ((default . error) (LEFT_PAREN . (name . 5)) (COLON .  528) (COLON_EQUAL 
. (name . 5)) (DOT . (name . 5)) (SEMICOLON . (name . 5)) (TICK_1 . (name . 5)))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (ELSE . 
(sequence_of_statements_opt . 0)) (ELSIF . (sequence_of_statements_opt . 0)) 
(END . (sequence_of_statements_opt . 0)) (EXCEPTION . 
(sequence_of_statements_opt . 0)) (EXIT .  5) (FOR . (block_label_opt . 1)) 
(GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (OR . 
(sequence_of_statements_opt . 0)) (PRAGMA .  16) (RAISE .  20 [...]
-      ((default . error) (ELSE . (select_alternative . 3)) (END . 
(select_alternative . 3)) (OR . (select_alternative . 3)))
-      ((default . error) (ACCEPT . (sequence_of_statements . 1)) (ABORT . 
(sequence_of_statements . 1)) (BEGIN . (sequence_of_statements . 1)) (CASE . 
(sequence_of_statements . 1)) (DECLARE . (sequence_of_statements . 1)) (DELAY . 
(sequence_of_statements . 1)) (ELSE . (sequence_of_statements . 1)) (ELSIF . 
(sequence_of_statements . 1)) (END . (sequence_of_statements . 1)) (EXCEPTION . 
(sequence_of_statements . 1)) (EXIT . (sequence_of_statements . 1)) (FOR . 
(sequence_of_statements . 1)) [...]
-      ((default . error) (ELSE . (delay_alternative . 0)) (END . 
(delay_alternative . 0)) (OR . (delay_alternative . 0)) (THEN . 
(triggering_alternative . 2)))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 1)) 
(GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (PRAGMA .  
16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) (WHILE . 
(block_label_opt . 1)) (LESS_LESS .  31) (IDENTIFIER .  359) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (DELAY .  4))
-      ((default . error) (ELSE . (entry_call_alternative . 1)) (OR . 
(entry_call_alternative . 1)) (THEN . (triggering_alternative . 1)))
-      ((default . error) (ELSE . (entry_call_alternative . 0)) (OR . 
(entry_call_alternative . 0)) (THEN . (triggering_alternative . 0)))
-      ((default . error) (ACCEPT .  1) (DELAY .  4) (TERMINATE .  199) (WHEN . 
 200))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 1)) 
(GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (PRAGMA .  
16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) (WHILE . 
(block_label_opt . 1)) (LESS_LESS .  31) (IDENTIFIER .  359) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (SELECT .  535))
-      ((default . error) (ABORT .  536))
-      ((default . error) (NOT .  482) (IDENTIFIER .  119) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (IS . ( 538 (aspect_specification_opt . 1))) (WITH .  
336))
-      ((default . error) (IS . (discriminant_part_opt . 2)) (WITH . 
(discriminant_part_opt . 2)) (LEFT_PAREN .  376) (SEMICOLON . 
(discriminant_part_opt . 2)))
-      ((default . error) (IS .  541) (SEMICOLON .  542))
-      ((default . error) (RIGHT_PAREN . (discriminant_specification_opt . 4)) 
(BOX .  543) (SEMICOLON . (discriminant_specification_opt . 4)) (IDENTIFIER .  
164))
-      ((default . error) (IS .  547) (SEMICOLON .  548))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (COMMA .  380) (SEMICOLON .  550))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT . (use_clause . 2)) (ABORT . (use_clause . 
2)) (BEGIN . (use_clause . 2)) (CASE . (use_clause . 2)) (DECLARE . (use_clause 
. 2)) (DELAY . (use_clause . 2)) (END . (use_clause . 2)) (ENTRY . (use_clause 
. 2)) (EXIT . (use_clause . 2)) (FOR . (use_clause . 2)) (FUNCTION . 
(use_clause . 2)) (GENERIC . (use_clause . 2)) (GOTO . (use_clause . 2)) (IF . 
(use_clause . 2)) (LIMITED . (use_clause . 2)) (LOOP . (use_clause . 2)) (NOT . 
(use_clause . 2)) (NULL . (us [...]
-      ((default . error) (ACCEPT . (with_clause . 3)) (ABORT . (with_clause . 
3)) (BEGIN . (with_clause . 3)) (CASE . (with_clause . 3)) (DECLARE . 
(with_clause . 3)) (DELAY . (with_clause . 3)) (ENTRY . (with_clause . 3)) 
(EXIT . (with_clause . 3)) (FOR . (with_clause . 3)) (FUNCTION . (with_clause . 
3)) (GENERIC . (with_clause . 3)) (GOTO . (with_clause . 3)) (IF . (with_clause 
. 3)) (LIMITED . (with_clause . 3)) (LOOP . (with_clause . 3)) (NOT . 
(with_clause . 3)) (NULL . (with_clause [...]
-      ((default . error) (ACCEPT . (goto_label . 0)) (ABORT . (goto_label . 
0)) (BEGIN . (goto_label . 0)) (CASE . (goto_label . 0)) (DECLARE . (goto_label 
. 0)) (DELAY . (goto_label . 0)) (ELSE . (goto_label . 0)) (ELSIF . (goto_label 
. 0)) (END . (goto_label . 0)) (ENTRY . (goto_label . 0)) (EXCEPTION . 
(goto_label . 0)) (EXIT . (goto_label . 0)) (FOR . (goto_label . 0)) (FUNCTION 
. (goto_label . 0)) (GENERIC . (goto_label . 0)) (GOTO . (goto_label . 0)) (IF 
. (goto_label . 0)) (LIMITE [...]
-      ((default . error) (RENAMES .  552))
-      ((default . error) (NULL .  553))
-      ((default . error) (RENAMES .  554))
-      ((default . error) (ACCESS .  555) (IDENTIFIER .  119) (STRING_LITERAL . 
 33) (CHARACTER_LITERAL .  34))
-      ((default . error) (END .  557))
-      ((default . error) (END . (handled_sequence_of_statements . 1)) 
(EXCEPTION .  558))
-      ((default . error) (BEGIN . (declarations . 2)) (END . (declarations . 
2)) (ENTRY . (declarations . 2)) (FOR . (declarations . 2)) (FUNCTION . 
(declarations . 2)) (GENERIC . (declarations . 2)) (NOT . (declarations . 2)) 
(OVERRIDING . (declarations . 2)) (PACKAGE . (declarations . 2)) (PRAGMA . 
(declarations . 2)) (PRIVATE . (declarations . 2)) (PROCEDURE . (declarations . 
2)) (PROTECTED . (declarations . 2)) (SUBTYPE . (declarations . 2)) (TASK . 
(declarations . 2)) (TYPE . (decla [...]
-      ((default . error) (BEGIN . (declarative_part_opt . 0)) (END . 
(declarative_part_opt . 0)) (ENTRY . (overriding_indicator_opt . 2)) (FOR .  
183) (FUNCTION . (overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) 
(OVERRIDING .  14) (PACKAGE .  15) (PRAGMA .  16) (PRIVATE . 
(declarative_part_opt . 0)) (PROCEDURE . (overriding_indicator_opt . 2)) 
(PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) (TYPE .  27) (USE .  28) 
(IDENTIFIER .  185))
-      ((default . error) (BEGIN .  561))
-      ((default . error) (BEGIN . (declarations . 3)) (END . (declarations . 
3)) (ENTRY . (declarations . 3)) (FOR . (declarations . 3)) (FUNCTION . 
(declarations . 3)) (GENERIC . (declarations . 3)) (NOT . (declarations . 3)) 
(OVERRIDING . (declarations . 3)) (PACKAGE . (declarations . 3)) (PRAGMA . 
(declarations . 3)) (PRIVATE . (declarations . 3)) (PROCEDURE . (declarations . 
3)) (PROTECTED . (declarations . 3)) (SUBTYPE . (declarations . 3)) (TASK . 
(declarations . 3)) (TYPE . (decla [...]
-      ((default . error) (IN .  310) (OF .  311) (COLON .  312))
-      ((default . error) (END .  562))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 1)) 
(GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (PRAGMA .  
16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) (WHILE . 
(block_label_opt . 1)) (LESS_LESS .  31) (IDENTIFIER .  359) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (IS . (aspect_specification_opt . 1)) (WITH .  336) 
(LEFT_PAREN .  235) (DOT .  237) (TICK_1 .  239))
-      ((default . error) (ACCEPT . (generic_package_declaration . 0)) (ABORT . 
(generic_package_declaration . 0)) (BEGIN . (generic_package_declaration . 0)) 
(CASE . (generic_package_declaration . 0)) (DECLARE . 
(generic_package_declaration . 0)) (DELAY . (generic_package_declaration . 0)) 
(END . (generic_package_declaration . 0)) (ENTRY . (generic_package_declaration 
. 0)) (EXIT . (generic_package_declaration . 0)) (FOR . 
(generic_package_declaration . 0)) (FUNCTION . (generic_package_d [...]
-      ((default . error) (SEMICOLON .  564))
-      ((default . error) (ACCESS . (aliased_opt . 0)) (ARRAY . (aliased_opt . 
0)) (CONSTANT . (aliased_opt . 0)) (DO . (aliased_opt . 0)) (IN . (aliased_opt 
. 0)) (NOT . (aliased_opt . 0)) (OUT . (aliased_opt . 0)) (WITH . (aliased_opt 
. 0)) (RIGHT_PAREN . (aliased_opt . 0)) (COLON_EQUAL . (aliased_opt . 0)) 
(SEMICOLON . (aliased_opt . 0)) (IDENTIFIER . (aliased_opt . 0)) 
(STRING_LITERAL . (aliased_opt . 0)) (CHARACTER_LITERAL . (aliased_opt . 0)))
-      ((default . error) (COLON_EQUAL .  565))
-      ((default . error) (SEMICOLON .  566))
-      ((default . error) (ACCESS . (constant_opt . 1)) (ARRAY . (constant_opt 
. 1)) (CONSTANT .  567) (NOT . (constant_opt . 1)) (WITH . (constant_opt . 1)) 
(COLON_EQUAL . (constant_opt . 1)) (SEMICOLON . (constant_opt . 1)) (IDENTIFIER 
. (constant_opt . 1)) (STRING_LITERAL . (constant_opt . 1)) (CHARACTER_LITERAL 
. (constant_opt . 1)))
-      ((default . error) (COLON . (identifier_list . 0)) (COMMA . 
(identifier_list . 0)))
-      ((default . error) (RIGHT_PAREN .  569) (COMMA .  442))
-      ((default . error) (RIGHT_PAREN .  570))
-      ((default . error) (IS . (association_opt . 4)) (RIGHT_PAREN . 
(association_opt . 4)) (BAR . (discrete_choice . 0)) (COMMA . (association_opt 
. 4)) (EQUAL_GREATER . (discrete_choice . 0)) (SEMICOLON . (association_opt . 
4)))
-      ((default . error) (RIGHT_PAREN . (range_list . 1)) (BAR . 
(discrete_choice . 2)) (COMMA . (range_list . 1)) (EQUAL_GREATER . 
(discrete_choice . 2)))
-      ((default . error) (RIGHT_PAREN .  571) (COMMA .  572))
-      ((default . error) (SEMICOLON .  573))
-      ((default . error) (ACCEPT . (selected_component . 3)) (ABORT . 
(selected_component . 3)) (AND . (selected_component . 3)) (BEGIN . 
(selected_component . 3)) (CASE . (selected_component . 3)) (DECLARE . 
(selected_component . 3)) (DELAY . (selected_component . 3)) (DIGITS . 
(selected_component . 3)) (DO . (selected_component . 3)) (ELSE . 
(selected_component . 3)) (ELSIF . (selected_component . 3)) (EXIT . 
(selected_component . 3)) (FOR . (selected_component . 3)) (GOTO . (selected_ 
[...]
-      ((default . error) (ACCEPT . (selected_component . 0)) (ABORT . 
(selected_component . 0)) (AND . (selected_component . 0)) (BEGIN . 
(selected_component . 0)) (CASE . (selected_component . 0)) (DECLARE . 
(selected_component . 0)) (DELAY . (selected_component . 0)) (DIGITS . 
(selected_component . 0)) (DO . (selected_component . 0)) (ELSE . 
(selected_component . 0)) (ELSIF . (selected_component . 0)) (EXIT . 
(selected_component . 0)) (FOR . (selected_component . 0)) (GOTO . (selected_ 
[...]
-      ((default . error) (ACCEPT . (selected_component . 2)) (ABORT . 
(selected_component . 2)) (AND . (selected_component . 2)) (BEGIN . 
(selected_component . 2)) (CASE . (selected_component . 2)) (DECLARE . 
(selected_component . 2)) (DELAY . (selected_component . 2)) (DIGITS . 
(selected_component . 2)) (DO . (selected_component . 2)) (ELSE . 
(selected_component . 2)) (ELSIF . (selected_component . 2)) (EXIT . 
(selected_component . 2)) (FOR . (selected_component . 2)) (GOTO . (selected_ 
[...]
-      ((default . error) (ACCEPT . (selected_component . 1)) (ABORT . 
(selected_component . 1)) (AND . (selected_component . 1)) (BEGIN . 
(selected_component . 1)) (CASE . (selected_component . 1)) (DECLARE . 
(selected_component . 1)) (DELAY . (selected_component . 1)) (DIGITS . 
(selected_component . 1)) (DO . (selected_component . 1)) (ELSE . 
(selected_component . 1)) (ELSIF . (selected_component . 1)) (EXIT . 
(selected_component . 1)) (FOR . (selected_component . 1)) (GOTO . (selected_ 
[...]
-      ((default . error) (ACCEPT . (attribute_designator . 1)) (ABORT . 
(attribute_designator . 1)) (AND . (attribute_designator . 1)) (BEGIN . 
(attribute_designator . 1)) (CASE . (attribute_designator . 1)) (DECLARE . 
(attribute_designator . 1)) (DELAY . (attribute_designator . 1)) (DIGITS . 
(attribute_designator . 1)) (DO . (attribute_designator . 1)) (ELSE . 
(attribute_designator . 1)) (ELSIF . (attribute_designator . 1)) (EXIT . 
(attribute_designator . 1)) (FOR . (attribute_designato [...]
-      ((default . error) (ACCEPT . (attribute_designator . 2)) (ABORT . 
(attribute_designator . 2)) (AND . (attribute_designator . 2)) (BEGIN . 
(attribute_designator . 2)) (CASE . (attribute_designator . 2)) (DECLARE . 
(attribute_designator . 2)) (DELAY . (attribute_designator . 2)) (DIGITS . 
(attribute_designator . 2)) (DO . (attribute_designator . 2)) (ELSE . 
(attribute_designator . 2)) (ELSIF . (attribute_designator . 2)) (EXIT . 
(attribute_designator . 2)) (FOR . (attribute_designato [...]
-      ((default . error) (ACCEPT . (attribute_designator . 3)) (ABORT . 
(attribute_designator . 3)) (AND . (attribute_designator . 3)) (BEGIN . 
(attribute_designator . 3)) (CASE . (attribute_designator . 3)) (DECLARE . 
(attribute_designator . 3)) (DELAY . (attribute_designator . 3)) (DIGITS . 
(attribute_designator . 3)) (DO . (attribute_designator . 3)) (ELSE . 
(attribute_designator . 3)) (ELSIF . (attribute_designator . 3)) (EXIT . 
(attribute_designator . 3)) (FOR . (attribute_designato [...]
-      ((default . error) (ACCEPT . (attribute_designator . 4)) (ABORT . 
(attribute_designator . 4)) (AND . (attribute_designator . 4)) (BEGIN . 
(attribute_designator . 4)) (CASE . (attribute_designator . 4)) (DECLARE . 
(attribute_designator . 4)) (DELAY . (attribute_designator . 4)) (DIGITS . 
(attribute_designator . 4)) (DO . (attribute_designator . 4)) (ELSE . 
(attribute_designator . 4)) (ELSIF . (attribute_designator . 4)) (EXIT . 
(attribute_designator . 4)) (FOR . (attribute_designato [...]
-      ((default . error) (ACCEPT . (qualified_expression . 0)) (ABORT . 
(qualified_expression . 0)) (AND . (qualified_expression . 0)) (BEGIN . 
(qualified_expression . 0)) (CASE . (qualified_expression . 0)) (DECLARE . 
(qualified_expression . 0)) (DELAY . (qualified_expression . 0)) (DIGITS . 
(qualified_expression . 0)) (DO . (qualified_expression . 0)) (ELSE . 
(qualified_expression . 0)) (ELSIF . (qualified_expression . 0)) (EXIT . 
(qualified_expression . 0)) (FOR . (qualified_expressio [...]
-      ((default . error) (ACCEPT . (attribute_reference . 0)) (ABORT . 
(attribute_reference . 0)) (AND . (attribute_reference . 0)) (BEGIN . 
(attribute_reference . 0)) (CASE . (attribute_reference . 0)) (DECLARE . 
(attribute_reference . 0)) (DELAY . (attribute_reference . 0)) (DIGITS . 
(attribute_reference . 0)) (DO . (attribute_reference . 0)) (ELSE . 
(attribute_reference . 0)) (ELSIF . (attribute_reference . 0)) (EXIT . 
(attribute_reference . 0)) (FOR . (attribute_reference . 0)) (GOTO [...]
-      ((default . error) (ACCEPT . (attribute_designator . 0)) (ABORT . 
(attribute_designator . 0)) (AND . (attribute_designator . 0)) (BEGIN . 
(attribute_designator . 0)) (CASE . (attribute_designator . 0)) (DECLARE . 
(attribute_designator . 0)) (DELAY . (attribute_designator . 0)) (DIGITS . 
(attribute_designator . 0)) (DO . (attribute_designator . 0)) (ELSE . 
(attribute_designator . 0)) (ELSIF . (attribute_designator . 0)) (EXIT . 
(attribute_designator . 0)) (FOR . (attribute_designato [...]
-      ((default . error) (WITH . (parameter_profile_opt . 1)) (LEFT_PAREN .  
574) (SEMICOLON . (parameter_profile_opt . 1)))
-      ((default . error) (IS .  576) (RETURN .  316) (LEFT_PAREN .  317) (DOT 
.  237) (TICK_1 .  239))
-      ((default . error) (IS . ( 577 (parameter_profile_opt . 1))) (RENAMES . 
(parameter_profile_opt . 1)) (WITH . (parameter_profile_opt . 1)) (LEFT_PAREN . 
 317) (DOT .  237) (SEMICOLON . (parameter_profile_opt . 1)) (TICK_1 .  239))
-      ((default . error) (LEFT_PAREN .  578))
-      ((default . error) (NULL .  580))
-      ((default . error) (ABSTRACT .  581) (SEPARATE .  582))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IS .  584) (SEMICOLON .  585))
-      ((default . error) (RIGHT_PAREN . (parameter_specification . 4)) 
(SEMICOLON . (parameter_specification . 4)) (IDENTIFIER .  164))
-      ((default . error) (DO .  586) (SEMICOLON .  587))
-      ((default . error) (ABS .  121) (AND . (expression_opt . 1)) (DIGITS . 
(expression_opt . 1)) (DO . (expression_opt . 1)) (ELSE . (expression_opt . 1)) 
(ELSIF . (expression_opt . 1)) (IS . (expression_opt . 1)) (LOOP . 
(expression_opt . 1)) (NEW .  122) (NOT .  123) (NULL .  124) (OR . 
(expression_opt . 1)) (RAISE .  125) (RANGE . (expression_opt . 1)) (THEN . 
(expression_opt . 1)) (WITH . (expression_opt . 1)) (XOR . (expression_opt . 
1)) (LEFT_PAREN .  126) (RIGHT_PAREN . (express [...]
-      ((default . error) (IS .  589))
-      ((default . error) (IDENTIFIER . (quantifier . 0)))
-      ((default . error) (IDENTIFIER . (quantifier . 1)))
-      ((default . error) (IDENTIFIER .  394))
-      ((default . error) (THEN .  591))
-      ((default . error) (AND . (primary . 1)) (IN . (primary . 1)) (IS . 
(primary . 1)) (MOD . (primary . 1)) (NOT . (primary . 1)) (OR . (primary . 1)) 
(REM . (primary . 1)) (WITH . (primary . 1)) (XOR . (primary . 1)) (RIGHT_PAREN 
. (primary . 1)) (AMPERSAND . (primary . 1)) (BAR . (primary . 1)) (COMMA . 
(primary . 1)) (DOT_DOT . (primary . 1)) (EQUAL . (primary . 1)) (EQUAL_GREATER 
. (primary . 1)) (GREATER . (primary . 1)) (GREATER_EQUAL . (primary . 1)) 
(LESS . (primary . 1)) (LES [...]
-      ((default . error) (RIGHT_PAREN .  593))
-      ((default . error) (ABS .  121) (IS . (expression_opt . 1)) (NEW .  122) 
(NOT .  123) (NULL .  124) (RAISE .  125) (LEFT_PAREN .  126) (RIGHT_PAREN . 
(expression_opt . 1)) (BOX .  594) (COMMA . (expression_opt . 1)) (MINUS .  
127) (PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT . (aggregate . 4)) (ABORT . (aggregate . 4)) 
(AND . (aggregate . 4)) (BEGIN . (aggregate . 4)) (CASE . (aggregate . 4)) 
(DECLARE . (aggregate . 4)) (DELAY . (aggregate . 4)) (DIGITS . (aggregate . 
4)) (DO . (aggregate . 4)) (ELSE . (aggregate . 4)) (ELSIF . (aggregate . 4)) 
(EXIT . (aggregate . 4)) (FOR . (aggregate . 4)) (GOTO . (aggregate . 4)) (IF . 
(aggregate . 4)) (IN . (aggregate . 4)) (IS . (aggregate . 4)) (LOOP . 
(aggregate . 4)) (MOD . (aggregat [...]
-      ((default . error) (ABS .  121) (IS . (association_opt . 5)) (NEW .  
122) (NOT .  260) (NULL .  124) (OTHERS .  262) (RAISE .  125) (LEFT_PAREN .  
126) (RIGHT_PAREN . (association_opt . 5)) (BAR . (discrete_choice_list . 2)) 
(COMMA . (association_opt . 5)) (EQUAL_GREATER . (discrete_choice_list . 2)) 
(MINUS .  127) (PLUS .  128) (SEMICOLON . (association_opt . 5)) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  263))
-      ((default . error) (ACCEPT . (aggregate . 3)) (ABORT . (aggregate . 3)) 
(AND . (aggregate . 3)) (BEGIN . (aggregate . 3)) (CASE . (aggregate . 3)) 
(DECLARE . (aggregate . 3)) (DELAY . (aggregate . 3)) (DIGITS . (aggregate . 
3)) (DO . (aggregate . 3)) (ELSE . (aggregate . 3)) (ELSIF . (aggregate . 3)) 
(EXIT . (aggregate . 3)) (FOR . (aggregate . 3)) (GOTO . (aggregate . 3)) (IF . 
(aggregate . 3)) (IN . (aggregate . 3)) (IS . (aggregate . 3)) (LOOP . 
(aggregate . 3)) (MOD . (aggregat [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  260) (NULL .  124) 
(OTHERS .  262) (RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (IS . (expression_opt . 1)) (NEW .  122) 
(NOT .  123) (NULL .  124) (RAISE .  125) (LEFT_PAREN .  126) (RIGHT_PAREN . 
(expression_opt . 1)) (BOX .  599) (COMMA . (expression_opt . 1)) (MINUS .  
127) (PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  260) (NULL .  601) 
(OTHERS .  262) (RAISE .  125) (LEFT_PAREN .  126) (RIGHT_PAREN . 
(association_opt . 5)) (BAR . (discrete_choice_list . 2)) (COMMA . 
(association_opt . 5)) (EQUAL_GREATER . (discrete_choice_list . 2)) (MINUS .  
127) (PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL 
.  33) (CHARACTER_LITERAL .  263))
-      ((default . error) (ACCESS .  415) (DELTA .  416) (DIGITS .  417) (MOD . 
 418) (RANGE .  603) (LEFT_PAREN .  126) (IDENTIFIER .  119) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  260) (NULL .  124) 
(OTHERS .  262) (RAISE .  125) (LEFT_PAREN .  126) (BAR . (discrete_choice_list 
. 2)) (EQUAL_GREATER . (discrete_choice_list . 2)) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (END . (case_statement_alternative_list . 1)) (WHEN . 
(case_statement_alternative_list . 1)))
-      ((default . error) (END .  606) (WHEN .  449))
-      ((default . error) (AND . (factor . 0)) (DIGITS . (factor . 0)) (DO . 
(factor . 0)) (ELSE . (factor . 0)) (ELSIF . (factor . 0)) (IN . (factor . 0)) 
(IS . (factor . 0)) (LOOP . (factor . 0)) (MOD . (factor . 0)) (NOT . (factor . 
0)) (OF . (factor . 0)) (OR . (factor . 0)) (RANGE . (factor . 0)) (REM . 
(factor . 0)) (THEN . (factor . 0)) (WITH . (factor . 0)) (XOR . (factor . 0)) 
(RIGHT_PAREN . (factor . 0)) (AMPERSAND . (factor . 0)) (BAR . (factor . 0)) 
(COLON_EQUAL . (factor . 0) [...]
-      ((default . error) (AND . (relation_and_list . 0)) (DIGITS . 
(relation_and_list . 0)) (DO . (relation_and_list . 0)) (ELSE . 
(relation_and_list . 0)) (ELSIF . (relation_and_list . 0)) (IS . 
(relation_and_list . 0)) (LOOP . (relation_and_list . 0)) (OR . 
(relation_and_list . 0)) (RANGE . (relation_and_list . 0)) (THEN . 
(relation_and_list . 0)) (WITH . (relation_and_list . 0)) (XOR . 
(relation_and_list . 0)) (RIGHT_PAREN . (relation_and_list . 0)) (BAR . 
(relation_and_list . 0)) (CO [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (AND . (relation_or_list . 0)) (DIGITS . 
(relation_or_list . 0)) (DO . (relation_or_list . 0)) (ELSE . (relation_or_list 
. 0)) (ELSIF . (relation_or_list . 0)) (IS . (relation_or_list . 0)) (LOOP . 
(relation_or_list . 0)) (OR . (relation_or_list . 0)) (RANGE . 
(relation_or_list . 0)) (THEN . (relation_or_list . 0)) (WITH . 
(relation_or_list . 0)) (XOR . (relation_or_list . 0)) (RIGHT_PAREN . 
(relation_or_list . 0)) (BAR . (relation_or_list . 0)) (COMMA . (relatio [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (AND . (relation_xor_list . 0)) (DIGITS . 
(relation_xor_list . 0)) (DO . (relation_xor_list . 0)) (ELSE . 
(relation_xor_list . 0)) (ELSIF . (relation_xor_list . 0)) (IS . 
(relation_xor_list . 0)) (LOOP . (relation_xor_list . 0)) (OR . 
(relation_xor_list . 0)) (RANGE . (relation_xor_list . 0)) (THEN . 
(relation_xor_list . 0)) (WITH . (relation_xor_list . 0)) (XOR . 
(relation_xor_list . 0)) (RIGHT_PAREN . (relation_xor_list . 0)) (BAR . 
(relation_xor_list . 0)) (CO [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (AND . (relation_and_list . 1)) (DIGITS . 
(relation_and_list . 1)) (DO . (relation_and_list . 1)) (ELSE . 
(relation_and_list . 1)) (ELSIF . (relation_and_list . 1)) (IS . 
(relation_and_list . 1)) (LOOP . (relation_and_list . 1)) (OR . 
(relation_and_list . 1)) (RANGE . (relation_and_list . 1)) (THEN . 
(relation_and_list . 1)) (WITH . (relation_and_list . 1)) (XOR . 
(relation_and_list . 1)) (RIGHT_PAREN . (relation_and_list . 1)) (BAR . 
(relation_and_list . 1)) (CO [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (AND . (relation_or_list . 1)) (DIGITS . 
(relation_or_list . 1)) (DO . (relation_or_list . 1)) (ELSE . (relation_or_list 
. 1)) (ELSIF . (relation_or_list . 1)) (IS . (relation_or_list . 1)) (LOOP . 
(relation_or_list . 1)) (OR . (relation_or_list . 1)) (RANGE . 
(relation_or_list . 1)) (THEN . (relation_or_list . 1)) (WITH . 
(relation_or_list . 1)) (XOR . (relation_or_list . 1)) (RIGHT_PAREN . 
(relation_or_list . 1)) (BAR . (relation_or_list . 1)) (COMMA . (relatio [...]
-      ((default . error) (AND . (relation_xor_list . 1)) (DIGITS . 
(relation_xor_list . 1)) (DO . (relation_xor_list . 1)) (ELSE . 
(relation_xor_list . 1)) (ELSIF . (relation_xor_list . 1)) (IS . 
(relation_xor_list . 1)) (LOOP . (relation_xor_list . 1)) (OR . 
(relation_xor_list . 1)) (RANGE . (relation_xor_list . 1)) (THEN . 
(relation_xor_list . 1)) (WITH . (relation_xor_list . 1)) (XOR . 
(relation_xor_list . 1)) (RIGHT_PAREN . (relation_xor_list . 1)) (BAR . 
(relation_xor_list . 1)) (CO [...]
-      ((default . error) (AND . (relation . 1)) (DIGITS . (relation . 1)) (DO 
. (relation . 1)) (ELSE . (relation . 1)) (ELSIF . (relation . 1)) (IS . 
(relation . 1)) (LOOP . (relation . 1)) (OR . (relation . 1)) (RANGE . 
(relation . 1)) (THEN . (relation . 1)) (WITH . (relation . 1)) (XOR . 
(relation . 1)) (RIGHT_PAREN . (relation . 1)) (BAR . ( 612 (relation . 1))) 
(COMMA . (relation . 1)) (EQUAL_GREATER . (relation . 1)) (SEMICOLON . 
(relation . 1)))
-      ((default . error) (AND . (membership_choice_list . 1)) (DIGITS . 
(membership_choice_list . 1)) (DO . (membership_choice_list . 1)) (ELSE . 
(membership_choice_list . 1)) (ELSIF . (membership_choice_list . 1)) (IS . 
(membership_choice_list . 1)) (LOOP . (membership_choice_list . 1)) (OR . 
(membership_choice_list . 1)) (RANGE . (membership_choice_list . 1)) (THEN . 
(membership_choice_list . 1)) (WITH . (membership_choice_list . 1)) (XOR . 
(membership_choice_list . 1)) (RIGHT_PAREN .  [...]
-      ((default . error) (AND . (membership_choice . 1)) (DIGITS . 
(membership_choice . 1)) (DO . (membership_choice . 1)) (ELSE . 
(membership_choice . 1)) (ELSIF . (membership_choice . 1)) (IS . 
(membership_choice . 1)) (LOOP . (membership_choice . 1)) (OR . 
(membership_choice . 1)) (RANGE . (membership_choice . 1)) (THEN . 
(membership_choice . 1)) (WITH . (membership_choice . 1)) (XOR . 
(membership_choice . 1)) (RIGHT_PAREN . (membership_choice . 1)) (BAR . 
(membership_choice . 1)) (CO [...]
-      ((default . error) (AND . (membership_choice . 0)) (DIGITS . 
(membership_choice . 0)) (DO . (membership_choice . 0)) (ELSE . 
(membership_choice . 0)) (ELSIF . (membership_choice . 0)) (IS . 
(membership_choice . 0)) (LOOP . (membership_choice . 0)) (OR . 
(membership_choice . 0)) (RANGE . (membership_choice . 0)) (THEN . 
(membership_choice . 0)) (WITH . (membership_choice . 0)) (XOR . 
(membership_choice . 0)) (RIGHT_PAREN . (membership_choice . 0)) (BAR . 
(membership_choice . 0)) (CO [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (AND . (relation . 2)) (DIGITS . (relation . 2)) (DO 
. (relation . 2)) (ELSE . (relation . 2)) (ELSIF . (relation . 2)) (IS . 
(relation . 2)) (LOOP . (relation . 2)) (OR . (relation . 2)) (RANGE . 
(relation . 2)) (THEN . (relation . 2)) (WITH . (relation . 2)) (XOR . 
(relation . 2)) (RIGHT_PAREN . (relation . 2)) (BAR . (relation . 2)) (COMMA . 
(relation . 2)) (EQUAL_GREATER . (relation . 2)) (SEMICOLON . (relation . 2)))
-      ((default . error) (AND . (term . 0)) (DIGITS . (term . 0)) (DO . (term 
. 0)) (ELSE . (term . 0)) (ELSIF . (term . 0)) (IN . (term . 0)) (IS . (term . 
0)) (LOOP . (term . 0)) (MOD . (term . 0)) (NOT . (term . 0)) (OF . (term . 0)) 
(OR . (term . 0)) (RANGE . (term . 0)) (REM . (term . 0)) (THEN . (term . 0)) 
(WITH . (term . 0)) (XOR . (term . 0)) (RIGHT_PAREN . (term . 0)) (AMPERSAND . 
(term . 0)) (BAR . (term . 0)) (COLON_EQUAL . (term . 0)) (COMMA . (term . 0)) 
(DOT_DOT . (term .  [...]
-      ((default . error) (AND . (term_list . 0)) (DIGITS . (term_list . 0)) 
(DO . (term_list . 0)) (ELSE . (term_list . 0)) (ELSIF . (term_list . 0)) (IN . 
(term_list . 0)) (IS . (term_list . 0)) (LOOP . (term_list . 0)) (MOD .  296) 
(NOT . (term_list . 0)) (OF . (term_list . 0)) (OR . (term_list . 0)) (RANGE . 
(term_list . 0)) (REM .  297) (THEN . (term_list . 0)) (WITH . (term_list . 0)) 
(XOR . (term_list . 0)) (RIGHT_PAREN . (term_list . 0)) (AMPERSAND . (term_list 
. 0)) (BAR . (term_ [...]
-      ((default . error) (ACCEPT . (delay_statement . 0)) (ABORT . 
(delay_statement . 0)) (BEGIN . (delay_statement . 0)) (CASE . (delay_statement 
. 0)) (DECLARE . (delay_statement . 0)) (DELAY . (delay_statement . 0)) (ELSE . 
(delay_statement . 0)) (ELSIF . (delay_statement . 0)) (END . (delay_statement 
. 0)) (ENTRY . (delay_statement . 0)) (EXCEPTION . (delay_statement . 0)) (EXIT 
. (delay_statement . 0)) (FOR . (delay_statement . 0)) (FUNCTION . 
(delay_statement . 0)) (GENERIC . (dela [...]
-      ((default . error) (SEMICOLON .  614))
-      ((default . error) (NEW .  122) (NULL .  615) (LEFT_PAREN .  126) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  473) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (LOOP . (iterator_specification . 5)) (EQUAL_GREATER 
. (iterator_specification . 5)))
-      ((default . error) (AND . (primary . 3)) (IN . (primary . 3)) (LOOP . 
(subtype_indication . 3)) (MOD . (primary . 3)) (NOT . (primary . 3)) (OR . 
(primary . 3)) (RANGE .  617) (REM . (primary . 3)) (XOR . (primary . 3)) 
(LEFT_PAREN .  618) (RIGHT_PAREN . ((primary . 3) (subtype_indication . 3))) 
(AMPERSAND . (primary . 3)) (BAR . (primary . 3)) (COMMA . ((primary . 3) 
(subtype_indication . 3))) (DOT .  237) (DOT_DOT . (primary . 3)) (EQUAL . 
(primary . 3)) (EQUAL_GREATER . ((primar [...]
-      ((default . error) (LOOP . (discrete_subtype_definition . 1)) 
(RIGHT_PAREN . (discrete_subtype_definition . 1)) (COMMA . 
(discrete_subtype_definition . 1)) (EQUAL_GREATER . 
(discrete_subtype_definition . 1)))
-      ((default . error) (DOT_DOT .  448))
-      ((default . error) (LOOP . (discrete_subtype_definition . 0)) 
(RIGHT_PAREN . (discrete_subtype_definition . 0)) (COMMA . 
(discrete_subtype_definition . 0)) (EQUAL_GREATER . 
(discrete_subtype_definition . 0)))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (LOOP . (iterator_specification . 4)) (LEFT_PAREN .  
235) (DOT .  237) (EQUAL_GREATER . (iterator_specification . 4)) (TICK_1 .  
239))
-      ((default . error) (NULL .  622))
-      ((default . error) (AND . (subtype_indication . 3)) (DO . 
(subtype_indication . 3)) (OF . (subtype_indication . 3)) (RANGE .  617) (WITH 
. (subtype_indication . 3)) (LEFT_PAREN .  618) (COLON_EQUAL . 
(subtype_indication . 3)) (DOT .  237) (SEMICOLON . (subtype_indication . 3)) 
(TICK_1 .  239))
-      ((default . error) (OF .  623))
-      ((default . error) (SEMICOLON .  624))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (SEMICOLON . 
(expression_opt . 1)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (AT .  626) (IDENTIFIER . (mod_clause_opt . 1)))
-      ((default . error) (SEMICOLON .  628))
-      ((default . error) (DO . (result_profile . 1)) (IS . (result_profile . 
1)) (RENAMES . (result_profile . 1)) (WITH . (result_profile . 1)) (RIGHT_PAREN 
. (result_profile . 1)) (COLON_EQUAL . (result_profile . 1)) (SEMICOLON . 
(result_profile . 1)))
-      ((default . error) (ACCESS .  555) (DO . (name_opt . 1)) (IS . (name_opt 
. 1)) (RENAMES . (name_opt . 1)) (WITH . (name_opt . 1)) (RIGHT_PAREN . 
(name_opt . 1)) (COLON_EQUAL . (name_opt . 1)) (SEMICOLON . (name_opt . 1)) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (AND . (name . 5)) (IN . (name . 5)) (MOD . (name . 
5)) (NOT . (name . 5)) (OR . (name . 5)) (RANGE . (name . 5)) (REM . (name . 
5)) (XOR . (name . 5)) (LEFT_PAREN . (name . 5)) (RIGHT_PAREN . (name . 5)) 
(AMPERSAND . (name . 5)) (BAR . (name . 5)) (COLON . (identifier_list . 1)) 
(COMMA . ((identifier_list . 1) (name . 5))) (DOT . (name . 5)) (DOT_DOT . 
(name . 5)) (EQUAL . (name . 5)) (EQUAL_GREATER . (name . 5)) (GREATER . (name 
. 5)) (GREATER_EQUAL . (name . 5 [...]
-      ((default . error) (COLON .  631) (COMMA .  234))
-      ((default . error) (RIGHT_PAREN . (parameter_specification_list . 1)) 
(SEMICOLON . (parameter_specification_list . 1)))
-      ((default . error) (RIGHT_PAREN .  632) (SEMICOLON .  633))
-      ((default . error) (DO . (parameter_and_result_profile . 0)) (IS . 
(parameter_and_result_profile . 0)) (RENAMES . (parameter_and_result_profile . 
0)) (WITH . (parameter_and_result_profile . 0)) (RIGHT_PAREN . 
(parameter_and_result_profile . 0)) (COLON_EQUAL . 
(parameter_and_result_profile . 0)) (SEMICOLON . (parameter_and_result_profile 
. 0)))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IS .  637) (WITH .  336) (SEMICOLON . 
(aspect_specification_opt . 1)))
-      ((default . error) (IS .  639) (LEFT_PAREN .  235) (DOT .  237) (TICK_1 
.  239))
-      ((default . error) (ABSTRACT .  640) (NULL .  641) (BOX .  642) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (SEMICOLON .  645))
-      ((default . error) (ACCESS . (mode_opt . 0)) (NOT . (mode_opt . 0)) (OUT 
.  646) (WITH . (mode_opt . 0)) (COLON_EQUAL . (mode_opt . 0)) (SEMICOLON . 
(mode_opt . 0)) (IDENTIFIER . (mode_opt . 0)) (STRING_LITERAL . (mode_opt . 0)) 
(CHARACTER_LITERAL . (mode_opt . 0)))
-      ((default . error) (ACCESS . (mode_opt . 2)) (NOT . (mode_opt . 2)) 
(WITH . (mode_opt . 2)) (COLON_EQUAL . (mode_opt . 2)) (SEMICOLON . (mode_opt . 
2)) (IDENTIFIER . (mode_opt . 2)) (STRING_LITERAL . (mode_opt . 2)) 
(CHARACTER_LITERAL . (mode_opt . 2)))
-      ((default . error) (ACCESS . (null_exclusion_opt . 1)) (NOT .  385) 
(IDENTIFIER . (null_exclusion_opt . 1)) (STRING_LITERAL . (null_exclusion_opt . 
1)) (CHARACTER_LITERAL . (null_exclusion_opt . 1)))
-      ((default . error) (ELSE .  649) (ELSIF .  650) (END .  651))
-      ((default . error) (COMMA .  380) (SEMICOLON .  654))
-      ((default . error) (ACCEPT . (with_clause . 1)) (ABORT . (with_clause . 
1)) (BEGIN . (with_clause . 1)) (CASE . (with_clause . 1)) (DECLARE . 
(with_clause . 1)) (DELAY . (with_clause . 1)) (ENTRY . (with_clause . 1)) 
(EXIT . (with_clause . 1)) (FOR . (with_clause . 1)) (FUNCTION . (with_clause . 
1)) (GENERIC . (with_clause . 1)) (GOTO . (with_clause . 1)) (IF . (with_clause 
. 1)) (LIMITED . (with_clause . 1)) (LOOP . (with_clause . 1)) (NOT . 
(with_clause . 1)) (NULL . (with_clause [...]
-      ((default . error) (SEPARATE .  655))
-      ((default . error) (IS .  656))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (WITH .  336) (LEFT_PAREN .  235) (DOT .  237) 
(SEMICOLON . (aspect_specification_opt . 1)) (TICK_1 .  239))
-      ((default . error) (IS . (aspect_specification_opt . 0)) (COMMA .  442) 
(SEMICOLON . (aspect_specification_opt . 0)))
-      ((default . error) (END . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) (OVERRIDING .  14) 
(PACKAGE .  15) (PRAGMA .  16) (PRIVATE . (declarative_part_opt . 1)) 
(PROCEDURE . (overriding_indicator_opt . 2)) (PROTECTED .  19) (SUBTYPE .  25) 
(TASK .  26) (TYPE .  27) (USE .  28) (IDENTIFIER .  185))
-      ((default . error) (RIGHT_PAREN .  660) (COMMA .  442))
-      ((default . error) (RIGHT_PAREN .  661))
-      ((default . error) (ACCEPT . (with_clause . 2)) (ABORT . (with_clause . 
2)) (BEGIN . (with_clause . 2)) (CASE . (with_clause . 2)) (DECLARE . 
(with_clause . 2)) (DELAY . (with_clause . 2)) (ENTRY . (with_clause . 2)) 
(EXIT . (with_clause . 2)) (FOR . (with_clause . 2)) (FUNCTION . (with_clause . 
2)) (GENERIC . (with_clause . 2)) (GOTO . (with_clause . 2)) (IF . (with_clause 
. 2)) (LIMITED . (with_clause . 2)) (LOOP . (with_clause . 2)) (NOT . 
(with_clause . 2)) (NULL . (with_clause [...]
-      ((default . error) (SEPARATE .  662))
-      ((default . error) (IS .  663))
-      ((default . error) (IS . (aspect_specification_opt . 1)) (WITH .  336))
-      ((default . error) (END . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NEW .  665) (NOT .  12) 
(OVERRIDING .  14) (PACKAGE .  15) (PRAGMA .  16) (PRIVATE . 
(declarative_part_opt . 1)) (PROCEDURE . (overriding_indicator_opt . 2)) 
(PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) (TYPE .  27) (USE .  28) 
(IDENTIFIER .  185))
-      ((default . error) (SEMICOLON .  668))
-      ((default . error) (SEMICOLON .  669))
-      ((default . error) (ACCESS . (constant_opt . 1)) (CONSTANT .  567) (DO . 
(constant_opt . 1)) (NOT . (constant_opt . 1)) (COLON_EQUAL . (constant_opt . 
1)) (SEMICOLON . (constant_opt . 1)) (IDENTIFIER . (constant_opt . 1)) 
(STRING_LITERAL . (constant_opt . 1)) (CHARACTER_LITERAL . (constant_opt . 1)))
-      ((default . error) (END .  671))
-      ((default . error) (FUNCTION . (overriding_indicator_opt . 2)) (NOT .  
12) (OVERRIDING .  14) (PACKAGE .  672) (PROCEDURE . (overriding_indicator_opt 
. 2)) (PROTECTED .  673) (TASK .  674))
-      ((default . error) (ACCEPT .  1) (DELAY .  4) (TERMINATE .  677))
-      ((default . error) (BEGIN . (block_label . 0)) (DECLARE . (block_label . 
0)) (FOR . (block_label . 0)) (LOOP . (block_label . 0)) (WHILE . (block_label 
. 0)))
-      ((default . error) (ACCEPT . (sequence_of_statements . 0)) (ABORT . 
(sequence_of_statements . 0)) (BEGIN . (sequence_of_statements . 0)) (CASE . 
(sequence_of_statements . 0)) (DECLARE . (sequence_of_statements . 0)) (DELAY . 
(sequence_of_statements . 0)) (ELSE . (sequence_of_statements . 0)) (ELSIF . 
(sequence_of_statements . 0)) (END . (sequence_of_statements . 0)) (EXCEPTION . 
(sequence_of_statements . 0)) (EXIT . (sequence_of_statements . 0)) (FOR . 
(sequence_of_statements . 0)) [...]
-      ((default . error) (END .  680))
-      ((default . error) (END .  681))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (ELSE . 
(sequence_of_statements_opt . 1)) (END . (sequence_of_statements_opt . 1)) 
(EXIT .  5) (FOR . (block_label_opt . 1)) (GOTO .  9) (IF .  10) (LOOP . 
(block_label_opt . 1)) (NULL .  13) (OR . (sequence_of_statements_opt . 1)) 
(PRAGMA .  16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) 
(WHILE . (block_label_opt . 1)) (LESS_LESS [...]
-      ((default . error) (ELSE . (select_alternative_list . 0)) (END . 
(select_alternative_list . 0)) (OR . (select_alternative_list . 0)))
-      ((default . error) (END .  683))
-      ((default . error) (SEMICOLON .  684))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 1)) 
(GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (PRAGMA .  
16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) (WHILE . 
(block_label_opt . 1)) (LESS_LESS .  31) (IDENTIFIER .  359) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (SEPARATE .  687))
-      ((default . error) (IS .  688))
-      ((default . error) (IS . (aspect_specification_opt . 1)) (WITH .  336) 
(SEMICOLON . (aspect_specification_opt . 1)))
-      ((default . error) (END . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NEW .  690) (NOT .  12) 
(OVERRIDING .  14) (PACKAGE .  15) (PRAGMA .  16) (PRIVATE . 
(declarative_part_opt . 1)) (PROCEDURE . (overriding_indicator_opt . 2)) 
(PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) (TYPE .  27) (USE .  28) 
(IDENTIFIER .  185))
-      ((default . error) (ACCEPT . (single_task_declaration . 2)) (ABORT . 
(single_task_declaration . 2)) (BEGIN . (single_task_declaration . 2)) (CASE . 
(single_task_declaration . 2)) (DECLARE . (single_task_declaration . 2)) (DELAY 
. (single_task_declaration . 2)) (END . (single_task_declaration . 2)) (ENTRY . 
(single_task_declaration . 2)) (EXIT . (single_task_declaration . 2)) (FOR . 
(single_task_declaration . 2)) (FUNCTION . (single_task_declaration . 2)) 
(GENERIC . (single_task_dec [...]
-      ((default . error) (RIGHT_PAREN .  693))
-      ((default . error) (RIGHT_PAREN . (discriminant_specification_list . 1)) 
(SEMICOLON . (discriminant_specification_list . 1)))
-      ((default . error) (RIGHT_PAREN .  694) (SEMICOLON .  695))
-      ((default . error) (COLON .  696) (COMMA .  234))
-      ((default . error) (ABSTRACT .  697) (ACCESS . (null_exclusion_opt . 1)) 
(ARRAY .  698) (DELTA .  699) (DIGITS .  700) (INTERFACE .  701) (LIMITED .  
702) (MOD .  703) (NEW . ((abstract_limited_synchronized_opt . 5) 
(abstract_limited_opt . 3))) (NOT .  385) (NULL . (abstract_tagged_limited_opt 
. 5)) (PRIVATE . (abstract_tagged_limited_opt . 5)) (PROTECTED .  705) (RANGE . 
 706) (RECORD . (abstract_tagged_limited_opt . 5)) (SYNCHRONIZED .  708) 
(TAGGED .  709) (TASK .  710) (LEFT_PA [...]
-      ((default . error) (ACCEPT . (incomplete_type_declaration . 1)) (ABORT . 
(incomplete_type_declaration . 1)) (BEGIN . (incomplete_type_declaration . 1)) 
(CASE . (incomplete_type_declaration . 1)) (DECLARE . 
(incomplete_type_declaration . 1)) (DELAY . (incomplete_type_declaration . 1)) 
(END . (incomplete_type_declaration . 1)) (ENTRY . (incomplete_type_declaration 
. 1)) (EXIT . (incomplete_type_declaration . 1)) (FOR . 
(incomplete_type_declaration . 1)) (FUNCTION . (incomplete_type_d [...]
-      ((default . error) (COMMA .  380) (SEMICOLON .  722))
-      ((default . error) (ACCEPT . (use_clause . 1)) (ABORT . (use_clause . 
1)) (BEGIN . (use_clause . 1)) (CASE . (use_clause . 1)) (DECLARE . (use_clause 
. 1)) (DELAY . (use_clause . 1)) (END . (use_clause . 1)) (ENTRY . (use_clause 
. 1)) (EXIT . (use_clause . 1)) (FOR . (use_clause . 1)) (FUNCTION . 
(use_clause . 1)) (GENERIC . (use_clause . 1)) (GOTO . (use_clause . 1)) (IF . 
(use_clause . 1)) (LIMITED . (use_clause . 1)) (LOOP . (use_clause . 1)) (NOT . 
(use_clause . 1)) (NULL . (us [...]
-      ((default . error) (LEFT_PAREN .  235) (COMMA . (name_list . 0)) (DOT .  
237) (SEMICOLON . (name_list . 0)) (TICK_1 .  239))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ACCESS . (null_exclusion_opt . 0)) (DO . 
(null_exclusion_opt . 0)) (IS . (null_exclusion_opt . 0)) (RENAMES . 
(null_exclusion_opt . 0)) (WITH . (null_exclusion_opt . 0)) (RIGHT_PAREN . 
(null_exclusion_opt . 0)) (COLON_EQUAL . (null_exclusion_opt . 0)) (SEMICOLON . 
(null_exclusion_opt . 0)) (IDENTIFIER . (null_exclusion_opt . 0)) 
(STRING_LITERAL . (null_exclusion_opt . 0)) (CHARACTER_LITERAL . 
(null_exclusion_opt . 0)))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ALL .  725) (CONSTANT .  726) (FUNCTION . 
(protected_opt . 1)) (PROCEDURE . (protected_opt . 1)) (PROTECTED .  727) 
(IDENTIFIER . (general_access_modifier_opt . 2)) (STRING_LITERAL . 
(general_access_modifier_opt . 2)) (CHARACTER_LITERAL . 
(general_access_modifier_opt . 2)))
-      ((default . error) (RENAMES .  730) (LEFT_PAREN .  235) (DOT .  237) 
(TICK_1 .  239))
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (END . (exception_handler_list_opt . 1)) (PRAGMA .  
16) (WHEN .  732))
-      ((default . error) (BEGIN . (declarations . 0)) (END . (declarations . 
0)) (ENTRY . (declarations . 0)) (FOR . (declarations . 0)) (FUNCTION . 
(declarations . 0)) (GENERIC . (declarations . 0)) (NOT . (declarations . 0)) 
(OVERRIDING . (declarations . 0)) (PACKAGE . (declarations . 0)) (PRAGMA . 
(declarations . 0)) (PRIVATE . (declarations . 0)) (PROCEDURE . (declarations . 
0)) (PROTECTED . (declarations . 0)) (SUBTYPE . (declarations . 0)) (TASK . 
(declarations . 0)) (TYPE . (decla [...]
-      ((default . error) (BEGIN . (declarations . 1)) (END . (declarations . 
1)) (ENTRY . (declarations . 1)) (FOR . (declarations . 1)) (FUNCTION . 
(declarations . 1)) (GENERIC . (declarations . 1)) (NOT . (declarations . 1)) 
(OVERRIDING . (declarations . 1)) (PACKAGE . (declarations . 1)) (PRAGMA . 
(declarations . 1)) (PRIVATE . (declarations . 1)) (PROCEDURE . (declarations . 
1)) (PROTECTED . (declarations . 1)) (SUBTYPE . (declarations . 1)) (TASK . 
(declarations . 1)) (TYPE . (decla [...]
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXCEPTION . (sequence_of_statements_opt . 
1)) (EXIT .  5) (FOR . (block_label_opt . 1)) (GOTO .  9) (IF .  10) (LOOP . 
(block_label_opt . 1)) (NULL .  13) (PRAGMA .  16) (RAISE .  20) (REQUEUE .  
21) (RETURN .  22) (SELECT .  24) (WHILE . (block_label_opt . 1)) (LESS_LESS .  
31) (IDENTIFIER .  359) (STRING [...]
-      ((default . error) (LOOP .  738))
-      ((default . error) (END .  739))
-      ((default . error) (ACCEPT . (generic_subprogram_declaration . 0)) 
(ABORT . (generic_subprogram_declaration . 0)) (BEGIN . 
(generic_subprogram_declaration . 0)) (CASE . (generic_subprogram_declaration . 
0)) (DECLARE . (generic_subprogram_declaration . 0)) (DELAY . 
(generic_subprogram_declaration . 0)) (END . (generic_subprogram_declaration . 
0)) (ENTRY . (generic_subprogram_declaration . 0)) (EXIT . 
(generic_subprogram_declaration . 0)) (FOR . (generic_subprogram_declaration . 
0))  [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (SEMICOLON . 
(expression_opt . 1)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT . (exception_declaration . 0)) (ABORT . 
(exception_declaration . 0)) (BEGIN . (exception_declaration . 0)) (CASE . 
(exception_declaration . 0)) (DECLARE . (exception_declaration . 0)) (DELAY . 
(exception_declaration . 0)) (END . (exception_declaration . 0)) (ENTRY . 
(exception_declaration . 0)) (EXIT . (exception_declaration . 0)) (FOR . 
(exception_declaration . 0)) (FUNCTION . (exception_declaration . 0)) (GENERIC 
. (exception_declaration . 0)) (GOTO . ( [...]
-      ((default . error) (ACCESS . (constant_opt . 0)) (ARRAY . (constant_opt 
. 0)) (DO . (constant_opt . 0)) (NOT . (constant_opt . 0)) (WITH . 
(constant_opt . 0)) (COLON_EQUAL . (constant_opt . 0)) (SEMICOLON . 
(constant_opt . 0)) (IDENTIFIER . (constant_opt . 0)) (STRING_LITERAL . 
(constant_opt . 0)) (CHARACTER_LITERAL . (constant_opt . 0)))
-      ((default . error) (ACCESS . (null_exclusion_opt . 1)) (ARRAY .  698) 
(NOT .  741) (IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  
34))
-      ((default . error) (ACCEPT . (actual_parameter_part . 0)) (ABORT . 
(actual_parameter_part . 0)) (AND . (actual_parameter_part . 0)) (BEGIN . 
(actual_parameter_part . 0)) (CASE . (actual_parameter_part . 0)) (DECLARE . 
(actual_parameter_part . 0)) (DELAY . (actual_parameter_part . 0)) (DIGITS . 
(actual_parameter_part . 0)) (DO . (actual_parameter_part . 0)) (ELSE . 
(actual_parameter_part . 0)) (ELSIF . (actual_parameter_part . 0)) (EXIT . 
(actual_parameter_part . 0)) (FOR . (actual_ [...]
-      ((default . error) (ACCEPT . (actual_parameter_part . 1)) (ABORT . 
(actual_parameter_part . 1)) (AND . (actual_parameter_part . 1)) (BEGIN . 
(actual_parameter_part . 1)) (CASE . (actual_parameter_part . 1)) (DECLARE . 
(actual_parameter_part . 1)) (DELAY . (actual_parameter_part . 1)) (DIGITS . 
(actual_parameter_part . 1)) (DO . (actual_parameter_part . 1)) (ELSE . 
(actual_parameter_part . 1)) (ELSIF . (actual_parameter_part . 1)) (EXIT . 
(actual_parameter_part . 1)) (FOR . (actual_ [...]
-      ((default . error) (ACCEPT . (name . 0)) (ABORT . (name . 0)) (AND . 
(name . 0)) (BEGIN . (name . 0)) (CASE . (name . 0)) (DECLARE . (name . 0)) 
(DELAY . (name . 0)) (DIGITS . (name . 0)) (DO . (name . 0)) (ELSE . (name . 
0)) (ELSIF . (name . 0)) (EXIT . (name . 0)) (FOR . (name . 0)) (GOTO . (name . 
0)) (IF . (name . 0)) (IN . (name . 0)) (IS . (name . 0)) (LOOP . (name . 0)) 
(MOD . (name . 0)) (NOT . (name . 0)) (NULL . (name . 0)) (OF . (name . 0)) (OR 
. (name . 0)) (PRAGMA . (n [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT . (assignment_statement . 0)) (ABORT . 
(assignment_statement . 0)) (BEGIN . (assignment_statement . 0)) (CASE . 
(assignment_statement . 0)) (DECLARE . (assignment_statement . 0)) (DELAY . 
(assignment_statement . 0)) (ELSE . (assignment_statement . 0)) (ELSIF . 
(assignment_statement . 0)) (END . (assignment_statement . 0)) (ENTRY . 
(assignment_statement . 0)) (EXCEPTION . (assignment_statement . 0)) (EXIT . 
(assignment_statement . 0)) (FOR . (assignment_st [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  473) (NULL .  124) 
(LEFT_PAREN .  126) (RIGHT_PAREN . (parameter_specification . 4)) (MINUS .  
127) (PLUS .  128) (SEMICOLON . (parameter_specification . 4)) (NUMERIC_LITERAL 
.  129) (IDENTIFIER .  491) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (NEW .  748))
-      ((default . error) (NEW .  749))
-      ((default . error) (ABS .  121) (CASE .  257) (FOR .  258) (IF .  259) 
(NEW .  122) (NOT .  260) (NULL .  124) (OTHERS .  262) (RAISE .  125) 
(LEFT_PAREN .  126) (RIGHT_PAREN . ((association_opt . 5) (expression_opt . 
1))) (BAR . (discrete_choice_list . 2)) (COMMA . (association_opt . 5)) 
(EQUAL_GREATER . (discrete_choice_list . 2)) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  263))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (WITH .  336) (LEFT_PAREN .  235) (DOT .  237) 
(SEMICOLON . (aspect_specification_opt . 1)) (TICK_1 .  239))
-      ((default . error) (BEGIN . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) (OVERRIDING .  14) 
(PACKAGE .  15) (PRAGMA .  16) (PROCEDURE . (overriding_indicator_opt . 2)) 
(PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) (TYPE .  27) (USE .  28) 
(IDENTIFIER .  185))
-      ((default . error) (ACCEPT . (subprogram_declaration . 0)) (ABORT . 
(subprogram_declaration . 0)) (BEGIN . (subprogram_declaration . 0)) (CASE . 
(subprogram_declaration . 0)) (DECLARE . (subprogram_declaration . 0)) (DELAY . 
(subprogram_declaration . 0)) (END . (subprogram_declaration . 0)) (ENTRY . 
(subprogram_declaration . 0)) (EXIT . (subprogram_declaration . 0)) (FOR . 
(subprogram_declaration . 0)) (FUNCTION . (subprogram_declaration . 0)) 
(GENERIC . (subprogram_declaration . 0 [...]
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXCEPTION . (sequence_of_statements_opt . 
1)) (EXIT .  5) (FOR . (block_label_opt . 1)) (GOTO .  9) (IF .  10) (LOOP . 
(block_label_opt . 1)) (NULL .  13) (PRAGMA .  16) (RAISE .  20) (REQUEUE .  
21) (RETURN .  22) (SELECT .  24) (WHILE . (block_label_opt . 1)) (LESS_LESS .  
31) (IDENTIFIER .  359) (STRING [...]
-      ((default . error) (ACCEPT . (accept_statement . 1)) (ABORT . 
(accept_statement . 1)) (BEGIN . (accept_statement . 1)) (CASE . 
(accept_statement . 1)) (DECLARE . (accept_statement . 1)) (DELAY . 
(accept_statement . 1)) (ELSE . (accept_statement . 1)) (ELSIF . 
(accept_statement . 1)) (END . (accept_statement . 1)) (ENTRY . 
(accept_statement . 1)) (EXCEPTION . (accept_statement . 1)) (EXIT . 
(accept_statement . 1)) (FOR . (accept_statement . 1)) (FUNCTION . 
(accept_statement . 1)) (G [...]
-      ((default . error) (AND . (raise_expression . 0)) (DIGITS . 
(raise_expression . 0)) (DO . (raise_expression . 0)) (ELSE . (raise_expression 
. 0)) (ELSIF . (raise_expression . 0)) (IS . (raise_expression . 0)) (LOOP . 
(raise_expression . 0)) (OR . (raise_expression . 0)) (RANGE . 
(raise_expression . 0)) (THEN . (raise_expression . 0)) (WITH . 
(raise_expression . 0)) (XOR . (raise_expression . 0)) (RIGHT_PAREN . 
(raise_expression . 0)) (BAR . (raise_expression . 0)) (COMMA . (raise_e [...]
-      ((default . error) (WHEN .  760))
-      ((default . error) (EQUAL_GREATER .  763))
-      ((default . error) (ABS .  121) (ELSE . (expression_opt . 1)) (ELSIF . 
(expression_opt . 1)) (NEW .  122) (NOT .  123) (NULL .  124) (RAISE .  125) 
(LEFT_PAREN .  126) (RIGHT_PAREN . (expression_opt . 1)) (MINUS .  127) (PLUS . 
 128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (LEFT_PAREN .  235) (BAR . (discrete_choice . 1)) 
(DOT .  237) (EQUAL_GREATER . (discrete_choice . 1)) (TICK_1 .  239))
-      ((default . error) (ACCEPT . (aggregate . 2)) (ABORT . (aggregate . 2)) 
(AND . (aggregate . 2)) (BEGIN . (aggregate . 2)) (CASE . (aggregate . 2)) 
(DECLARE . (aggregate . 2)) (DELAY . (aggregate . 2)) (DIGITS . (aggregate . 
2)) (DO . (aggregate . 2)) (ELSE . (aggregate . 2)) (ELSIF . (aggregate . 2)) 
(EXIT . (aggregate . 2)) (FOR . (aggregate . 2)) (GOTO . (aggregate . 2)) (IF . 
(aggregate . 2)) (IN . (aggregate . 2)) (IS . (aggregate . 2)) (LOOP . 
(aggregate . 2)) (MOD . (aggregat [...]
-      ((default . error) (IS . (association_opt . 1)) (RIGHT_PAREN . 
(association_opt . 1)) (COMMA . (association_opt . 1)) (SEMICOLON . 
(association_opt . 1)))
-      ((default . error) (IS . (association_opt . 0)) (RIGHT_PAREN . 
(association_opt . 0)) (COMMA . (association_opt . 0)) (SEMICOLON . 
(association_opt . 0)))
-      ((default . error) (IS . (association_list . 0)) (RIGHT_PAREN . 
(association_list . 0)) (COMMA . (association_list . 0)) (SEMICOLON . 
(association_list . 0)))
-      ((default . error) (BAR . (discrete_choice_list . 0)) (EQUAL_GREATER . 
(discrete_choice_list . 0)))
-      ((default . error) (BAR . (discrete_choice . 0)) (EQUAL_GREATER . 
(discrete_choice . 0)))
-      ((default . error) (IS . (association_opt . 3)) (RIGHT_PAREN . 
(association_opt . 3)) (COMMA . (association_opt . 3)) (SEMICOLON . 
(association_opt . 3)))
-      ((default . error) (IS . (association_opt . 2)) (RIGHT_PAREN . 
(association_opt . 2)) (COMMA . (association_opt . 2)) (SEMICOLON . 
(association_opt . 2)))
-      ((default . error) (AND . (primary . 1)) (IN . (primary . 1)) (MOD . 
(primary . 1)) (NOT . (primary . 1)) (OR . (primary . 1)) (RECORD .  765) (REM 
. (primary . 1)) (XOR . (primary . 1)) (RIGHT_PAREN . (primary . 1)) (AMPERSAND 
. (primary . 1)) (BAR . (primary . 1)) (COMMA . (primary . 1)) (DOT_DOT . 
(primary . 1)) (EQUAL . (primary . 1)) (EQUAL_GREATER . (primary . 1)) (GREATER 
. (primary . 1)) (GREATER_EQUAL . (primary . 1)) (LESS . (primary . 1)) 
(LESS_EQUAL . (primary . 1)) (MI [...]
-      ((default . error) (RIGHT_PAREN .  766) (COMMA .  442))
-      ((default . error) (AND . (range_g . 1)) (DIGITS . (range_g . 1)) (DO . 
(range_g . 1)) (ELSE . (range_g . 1)) (ELSIF . (range_g . 1)) (IS . (range_g . 
1)) (LOOP . (range_g . 1)) (OF . (range_g . 1)) (OR . (range_g . 1)) (RANGE . 
(range_g . 1)) (THEN . (range_g . 1)) (WITH . (range_g . 1)) (XOR . (range_g . 
1)) (LEFT_PAREN .  767) (RIGHT_PAREN . (range_g . 1)) (BAR . (range_g . 1)) 
(COLON_EQUAL . (range_g . 1)) (COMMA . (range_g . 1)) (EQUAL_GREATER . (range_g 
. 1)) (SEMICOLON . (ra [...]
-      ((default . error) (AND . (range_g . 2)) (DIGITS . (range_g . 2)) (DO . 
(range_g . 2)) (ELSE . (range_g . 2)) (ELSIF . (range_g . 2)) (IS . (range_g . 
2)) (LOOP . (range_g . 2)) (OF . (range_g . 2)) (OR . (range_g . 2)) (RANGE . 
(range_g . 2)) (THEN . (range_g . 2)) (WITH . (range_g . 2)) (XOR . (range_g . 
2)) (RIGHT_PAREN . (range_g . 2)) (BAR . (range_g . 2)) (COLON_EQUAL . (range_g 
. 2)) (COMMA . (range_g . 2)) (EQUAL_GREATER . (range_g . 2)) (SEMICOLON . 
(range_g . 2)))
-      ((default . error) (BAR .  444) (EQUAL_GREATER .  768))
-      ((default . error) (CASE .  769))
-      ((default . error) (END . (case_statement_alternative_list . 0)) (WHEN . 
(case_statement_alternative_list . 0)))
-      ((default . error) (AND . (relation_and_then_list . 0)) (DIGITS . 
(relation_and_then_list . 0)) (DO . (relation_and_then_list . 0)) (ELSE . 
(relation_and_then_list . 0)) (ELSIF . (relation_and_then_list . 0)) (IS . 
(relation_and_then_list . 0)) (LOOP . (relation_and_then_list . 0)) (OR . 
(relation_and_then_list . 0)) (RANGE . (relation_and_then_list . 0)) (THEN . 
(relation_and_then_list . 0)) (WITH . (relation_and_then_list . 0)) (XOR . 
(relation_and_then_list . 0)) (RIGHT_PAREN .  [...]
-      ((default . error) (AND . (relation_or_else_list . 0)) (DIGITS . 
(relation_or_else_list . 0)) (DO . (relation_or_else_list . 0)) (ELSE . 
(relation_or_else_list . 0)) (ELSIF . (relation_or_else_list . 0)) (IS . 
(relation_or_else_list . 0)) (LOOP . (relation_or_else_list . 0)) (OR . 
(relation_or_else_list . 0)) (RANGE . (relation_or_else_list . 0)) (THEN . 
(relation_or_else_list . 0)) (WITH . (relation_or_else_list . 0)) (XOR . 
(relation_or_else_list . 0)) (RIGHT_PAREN . (relation_or [...]
-      ((default . error) (AND . (relation_and_then_list . 1)) (DIGITS . 
(relation_and_then_list . 1)) (DO . (relation_and_then_list . 1)) (ELSE . 
(relation_and_then_list . 1)) (ELSIF . (relation_and_then_list . 1)) (IS . 
(relation_and_then_list . 1)) (LOOP . (relation_and_then_list . 1)) (OR . 
(relation_and_then_list . 1)) (RANGE . (relation_and_then_list . 1)) (THEN . 
(relation_and_then_list . 1)) (WITH . (relation_and_then_list . 1)) (XOR . 
(relation_and_then_list . 1)) (RIGHT_PAREN .  [...]
-      ((default . error) (AND . (relation_or_else_list . 1)) (DIGITS . 
(relation_or_else_list . 1)) (DO . (relation_or_else_list . 1)) (ELSE . 
(relation_or_else_list . 1)) (ELSIF . (relation_or_else_list . 1)) (IS . 
(relation_or_else_list . 1)) (LOOP . (relation_or_else_list . 1)) (OR . 
(relation_or_else_list . 1)) (RANGE . (relation_or_else_list . 1)) (THEN . 
(relation_or_else_list . 1)) (WITH . (relation_or_else_list . 1)) (XOR . 
(relation_or_else_list . 1)) (RIGHT_PAREN . (relation_or [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (AND . (relation . 0)) (DIGITS . (relation . 0)) (DO 
. (relation . 0)) (ELSE . (relation . 0)) (ELSIF . (relation . 0)) (IS . 
(relation . 0)) (LOOP . (relation . 0)) (OR . (relation . 0)) (RANGE . 
(relation . 0)) (THEN . (relation . 0)) (WITH . (relation . 0)) (XOR . 
(relation . 0)) (RIGHT_PAREN . (relation . 0)) (BAR . ( 612 (relation . 0))) 
(COMMA . (relation . 0)) (EQUAL_GREATER . (relation . 0)) (SEMICOLON . 
(relation . 0)))
-      ((default . error) (ACCEPT . (exit_statement . 0)) (ABORT . 
(exit_statement . 0)) (BEGIN . (exit_statement . 0)) (CASE . (exit_statement . 
0)) (DECLARE . (exit_statement . 0)) (DELAY . (exit_statement . 0)) (ELSE . 
(exit_statement . 0)) (ELSIF . (exit_statement . 0)) (END . (exit_statement . 
0)) (ENTRY . (exit_statement . 0)) (EXCEPTION . (exit_statement . 0)) (EXIT . 
(exit_statement . 0)) (FOR . (exit_statement . 0)) (FUNCTION . (exit_statement 
. 0)) (GENERIC . (exit_statement . 0 [...]
-      ((default . error) (MOD . (primary . 1)) (REM . (primary . 1)) 
(AMPERSAND . (primary . 1)) (DOT_DOT . (primary . 1)) (MINUS . (primary . 1)) 
(PLUS . (primary . 1)) (SLASH . (primary . 1)) (STAR . (primary . 1)) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (LOOP . (iterator_specification . 2)) (EQUAL_GREATER 
. (iterator_specification . 2)))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (CASE .  257) (FOR .  258) (IF .  259) 
(NEW .  122) (NOT .  773) (NULL .  124) (OTHERS .  262) (RAISE .  125) 
(LEFT_PAREN .  126) (RIGHT_PAREN . (association_opt . 5)) (BAR . 
(discrete_choice_list . 2)) (COMMA . (association_opt . 5)) (EQUAL_GREATER . 
(discrete_choice_list . 2)) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  
129) (IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  263))
-      ((default . error) (AND . (subtype_indication . 2)) (DO . 
(subtype_indication . 2)) (LOOP . (subtype_indication . 2)) (OF . 
(subtype_indication . 2)) (WITH . (subtype_indication . 2)) (RIGHT_PAREN . 
(subtype_indication . 2)) (COLON_EQUAL . (subtype_indication . 2)) (COMMA . 
(subtype_indication . 2)) (EQUAL_GREATER . (subtype_indication . 2)) (SEMICOLON 
. (subtype_indication . 2)))
-      ((default . error) (AND . (constraint . 1)) (DO . (constraint . 1)) 
(LOOP . (constraint . 1)) (OF . (constraint . 1)) (WITH . (constraint . 1)) 
(RIGHT_PAREN . (constraint . 1)) (COLON_EQUAL . (constraint . 1)) (COMMA . 
(constraint . 1)) (EQUAL_GREATER . (constraint . 1)) (SEMICOLON . (constraint . 
1)))
-      ((default . error) (LOOP . (iterator_specification . 3)) (LEFT_PAREN .  
235) (DOT .  237) (EQUAL_GREATER . (iterator_specification . 3)) (TICK_1 .  
239))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (REVERSE .  777) (IDENTIFIER .  119) (STRING_LITERAL 
.  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT . (aspect_clause . 0)) (ABORT . 
(aspect_clause . 0)) (BEGIN . (aspect_clause . 0)) (CASE . (aspect_clause . 0)) 
(DECLARE . (aspect_clause . 0)) (DELAY . (aspect_clause . 0)) (END . 
(aspect_clause . 0)) (ENTRY . (aspect_clause . 0)) (EXIT . (aspect_clause . 0)) 
(FOR . (aspect_clause . 0)) (FUNCTION . (aspect_clause . 0)) (GENERIC . 
(aspect_clause . 0)) (GOTO . (aspect_clause . 0)) (IF . (aspect_clause . 0)) 
(LIMITED . (aspect_clause . 0)) (LOOP . (aspect_c [...]
-      ((default . error) (SEMICOLON .  779))
-      ((default . error) (MOD .  780))
-      ((default . error) (IDENTIFIER .  781))
-      ((default . error) (ACCEPT . (enumeration_representation_clause . 0)) 
(ABORT . (enumeration_representation_clause . 0)) (BEGIN . 
(enumeration_representation_clause . 0)) (CASE . 
(enumeration_representation_clause . 0)) (DECLARE . 
(enumeration_representation_clause . 0)) (DELAY . 
(enumeration_representation_clause . 0)) (END . 
(enumeration_representation_clause . 0)) (ENTRY . 
(enumeration_representation_clause . 0)) (EXIT . 
(enumeration_representation_clause . 0)) (FOR . (enumeratio [...]
-      ((default . error) (DO . (name_opt . 0)) (IS . (name_opt . 0)) (RENAMES 
. (name_opt . 0)) (WITH . (name_opt . 0)) (LEFT_PAREN .  235) (RIGHT_PAREN . 
(name_opt . 0)) (COLON_EQUAL . (name_opt . 0)) (DOT .  237) (SEMICOLON . 
(name_opt . 0)) (TICK_1 .  239))
-      ((default . error) (DO . (result_profile . 0)) (IS . (result_profile . 
0)) (RENAMES . (result_profile . 0)) (WITH . (result_profile . 0)) (RIGHT_PAREN 
. (result_profile . 0)) (COLON_EQUAL . (result_profile . 0)) (SEMICOLON . 
(result_profile . 0)))
-      ((default . error) (ACCESS . (aliased_opt . 1)) (ALIASED .  400) (IN . 
(aliased_opt . 1)) (NOT . (aliased_opt . 1)) (OUT . (aliased_opt . 1)) 
(RIGHT_PAREN . (aliased_opt . 1)) (COLON_EQUAL . (aliased_opt . 1)) (SEMICOLON 
. (aliased_opt . 1)) (IDENTIFIER . (aliased_opt . 1)) (STRING_LITERAL . 
(aliased_opt . 1)) (CHARACTER_LITERAL . (aliased_opt . 1)))
-      ((default . error) (DO . (formal_part . 0)) (IS . (formal_part . 0)) 
(RENAMES . (formal_part . 0)) (RETURN . (formal_part . 0)) (WHEN . (formal_part 
. 0)) (WITH . (formal_part . 0)) (RIGHT_PAREN . (formal_part . 0)) (COLON_EQUAL 
. (formal_part . 0)) (SEMICOLON . (formal_part . 0)))
-      ((default . error) (RIGHT_PAREN . (parameter_specification . 4)) 
(SEMICOLON . (parameter_specification . 4)) (IDENTIFIER .  164))
-      ((default . error) (WITH .  336) (LEFT_PAREN .  235) (DOT .  237) 
(SEMICOLON . (aspect_specification_opt . 1)) (TICK_1 .  239))
-      ((default . error) (WITH .  336) (LEFT_PAREN .  235) (DOT .  237) 
(SEMICOLON . (aspect_specification_opt . 1)) (TICK_1 .  239))
-      ((default . error) (WITH .  336) (LEFT_PAREN .  235) (DOT .  237) 
(SEMICOLON . (aspect_specification_opt . 1)) (TICK_1 .  239))
-      ((default . error) (ABSTRACT .  789) (ACCESS . (null_exclusion_opt . 1)) 
(ARRAY .  698) (DELTA .  790) (DIGITS .  791) (INTERFACE .  701) (LIMITED .  
792) (MOD .  793) (NEW . (abstract_limited_synchronized_opt . 5)) (NOT .  385) 
(PRIVATE . (abstract_tagged_limited_opt . 5)) (PROTECTED .  705) (RANGE .  794) 
(SYNCHRONIZED .  708) (TAGGED .  795) (TASK .  710) (LEFT_PAREN .  796))
-      ((default . error) (SEMICOLON .  804))
-      ((default . error) (NEW .  805))
-      ((default . error) (NULL .  641) (WITH .  336) (BOX .  642) (SEMICOLON . 
(aspect_specification_opt . 1)) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (WITH . (subprogram_default . 2)) (SEMICOLON . 
(subprogram_default . 2)))
-      ((default . error) (WITH . (subprogram_default . 1)) (SEMICOLON . 
(subprogram_default . 1)))
-      ((default . error) (WITH . (subprogram_default . 0)) (LEFT_PAREN .  235) 
(DOT .  237) (SEMICOLON . (subprogram_default . 0)) (TICK_1 .  239))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (FUNCTION . (formal_subprogram_declaration . 3)) 
(PACKAGE . (formal_subprogram_declaration . 3)) (PRAGMA . 
(formal_subprogram_declaration . 3)) (PROCEDURE . 
(formal_subprogram_declaration . 3)) (TYPE . (formal_subprogram_declaration . 
3)) (USE . (formal_subprogram_declaration . 3)) (WITH . 
(formal_subprogram_declaration . 3)) (IDENTIFIER . 
(formal_subprogram_declaration . 3)))
-      ((default . error) (ACCESS . (mode_opt . 1)) (NOT . (mode_opt . 1)) 
(WITH . (mode_opt . 1)) (COLON_EQUAL . (mode_opt . 1)) (SEMICOLON . (mode_opt . 
1)) (IDENTIFIER . (mode_opt . 1)) (STRING_LITERAL . (mode_opt . 1)) 
(CHARACTER_LITERAL . (mode_opt . 1)))
-      ((default . error) (WITH .  336) (COLON_EQUAL .  809) (SEMICOLON . 
(aspect_specification_opt . 1)))
-      ((default . error) (ACCESS .  555) (IDENTIFIER .  119) (STRING_LITERAL . 
 33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 1)) 
(GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (PRAGMA .  
16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) (WHILE . 
(block_label_opt . 1)) (LESS_LESS .  31) (IDENTIFIER .  359) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (THEN . (expression_opt . 1)) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (IF .  814))
-      ((default . error) (ELSE . (elsif_statement_list . 1)) (ELSIF . 
(elsif_statement_list . 1)) (END . (elsif_statement_list . 1)))
-      ((default . error) (ELSE .  815) (ELSIF .  650) (END .  816))
-      ((default . error) (ACCEPT . (with_clause . 0)) (ABORT . (with_clause . 
0)) (BEGIN . (with_clause . 0)) (CASE . (with_clause . 0)) (DECLARE . 
(with_clause . 0)) (DELAY . (with_clause . 0)) (ENTRY . (with_clause . 0)) 
(EXIT . (with_clause . 0)) (FOR . (with_clause . 0)) (FUNCTION . (with_clause . 
0)) (GENERIC . (with_clause . 0)) (GOTO . (with_clause . 0)) (IF . (with_clause 
. 0)) (LIMITED . (with_clause . 0)) (LOOP . (with_clause . 0)) (NOT . 
(with_clause . 0)) (NULL . (with_clause [...]
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (BEGIN . (declarative_part_opt . 1)) (END . 
(declarative_part_opt . 1)) (ENTRY . (overriding_indicator_opt . 2)) (FOR .  
183) (FUNCTION . (overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) 
(OVERRIDING .  14) (PACKAGE .  15) (PRAGMA .  16) (PROCEDURE . 
(overriding_indicator_opt . 2)) (PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) 
(TYPE .  27) (USE .  28) (IDENTIFIER .  185))
-      ((default . error) (WITH .  336) (LEFT_PAREN .  235) (DOT .  237) 
(SEMICOLON . (aspect_specification_opt . 1)) (TICK_1 .  239))
-      ((default . error) (SEMICOLON .  821))
-      ((default . error) (END .  822) (PRIVATE .  823))
-      ((default . error) (SEMICOLON .  824))
-      ((default . error) (SEMICOLON .  825))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (END . (protected_operation_item_list_opt . 1)) 
(ENTRY .  827) (FOR .  183) (FUNCTION . (overriding_indicator_opt . 2)) (NOT .  
12) (OVERRIDING .  14) (PROCEDURE . (overriding_indicator_opt . 2)))
-      ((default . error) (IS .  838))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (END .  841) (PRIVATE .  842))
-      ((default . error) (SEMICOLON .  843))
-      ((default . error) (ACCEPT . (raise_statement . 0)) (ABORT . 
(raise_statement . 0)) (BEGIN . (raise_statement . 0)) (CASE . (raise_statement 
. 0)) (DECLARE . (raise_statement . 0)) (DELAY . (raise_statement . 0)) (ELSE . 
(raise_statement . 0)) (ELSIF . (raise_statement . 0)) (END . (raise_statement 
. 0)) (ENTRY . (raise_statement . 0)) (EXCEPTION . (raise_statement . 0)) (EXIT 
. (raise_statement . 0)) (FOR . (raise_statement . 0)) (FUNCTION . 
(raise_statement . 0)) (GENERIC . (rais [...]
-      ((default . error) (ACCEPT . (requeue_statement . 0)) (ABORT . 
(requeue_statement . 0)) (BEGIN . (requeue_statement . 0)) (CASE . 
(requeue_statement . 0)) (DECLARE . (requeue_statement . 0)) (DELAY . 
(requeue_statement . 0)) (ELSE . (requeue_statement . 0)) (ELSIF . 
(requeue_statement . 0)) (END . (requeue_statement . 0)) (ENTRY . 
(requeue_statement . 0)) (EXCEPTION . (requeue_statement . 0)) (EXIT . 
(requeue_statement . 0)) (FOR . (requeue_statement . 0)) (FUNCTION . 
(requeue_stat [...]
-      ((default . error) (ACCESS . (null_exclusion_opt . 1)) (NOT .  741) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (RETURN .  847))
-      ((default . error) (BODY .  848))
-      ((default . error) (BODY .  849))
-      ((default . error) (BODY .  850))
-      ((default . error) (FUNCTION .  7) (PROCEDURE .  18))
-      ((default . error) (ACCEPT . (subunit . 0)) (ABORT . (subunit . 0)) 
(BEGIN . (subunit . 0)) (CASE . (subunit . 0)) (DECLARE . (subunit . 0)) (DELAY 
. (subunit . 0)) (ENTRY . (subunit . 0)) (EXIT . (subunit . 0)) (FOR . (subunit 
. 0)) (FUNCTION . (subunit . 0)) (GENERIC . (subunit . 0)) (GOTO . (subunit . 
0)) (IF . (subunit . 0)) (LIMITED . (subunit . 0)) (LOOP . (subunit . 0)) (NOT 
. (subunit . 0)) (NULL . (subunit . 0)) (OVERRIDING . (subunit . 0)) (PACKAGE . 
(subunit . 0)) (PRAGM [...]
-      ((default . error) (SEMICOLON .  852))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (ELSE . 
(sequence_of_statements_opt . 1)) (END . (sequence_of_statements_opt . 1)) 
(EXIT .  5) (FOR . (block_label_opt . 1)) (GOTO .  9) (IF .  10) (LOOP . 
(block_label_opt . 1)) (NULL .  13) (OR . (sequence_of_statements_opt . 1)) 
(PRAGMA .  16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) 
(WHILE . (block_label_opt . 1)) (LESS_LESS [...]
-      ((default . error) (ELSE . (select_alternative . 2)) (END . 
(select_alternative . 2)) (OR . (select_alternative . 2)))
-      ((default . error) (SELECT .  854))
-      ((default . error) (SELECT .  855))
-      ((default . error) (ELSE . (delay_alternative . 0)) (END . 
(delay_alternative . 0)) (OR . (delay_alternative . 0)))
-      ((default . error) (SELECT .  856))
-      ((default . error) (ACCEPT . (selective_accept . 1)) (ABORT . 
(selective_accept . 1)) (BEGIN . (selective_accept . 1)) (CASE . 
(selective_accept . 1)) (DECLARE . (selective_accept . 1)) (DELAY . 
(selective_accept . 1)) (ELSE . (selective_accept . 1)) (ELSIF . 
(selective_accept . 1)) (END . (selective_accept . 1)) (ENTRY . 
(selective_accept . 1)) (EXCEPTION . (selective_accept . 1)) (EXIT . 
(selective_accept . 1)) (FOR . (selective_accept . 1)) (FUNCTION . 
(selective_accept . 1)) (G [...]
-      ((default . error) (END .  857))
-      ((default . error) (SEMICOLON .  858))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (BEGIN . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) (OVERRIDING .  14) 
(PACKAGE .  15) (PRAGMA .  16) (PROCEDURE . (overriding_indicator_opt . 2)) 
(PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) (TYPE .  27) (USE .  28) 
(IDENTIFIER .  185))
-      ((default . error) (IS .  861) (SEMICOLON .  862))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (END . (task_definition . 1)) (PRIVATE .  864))
-      ((default . error) (END .  865))
-      ((default . error) (IS . (discriminant_part_opt . 0)) (WITH . 
(discriminant_part_opt . 0)) (SEMICOLON . (discriminant_part_opt . 0)))
-      ((default . error) (IS . (discriminant_part_opt . 1)) (WITH . 
(discriminant_part_opt . 1)) (SEMICOLON . (discriminant_part_opt . 1)))
-      ((default . error) (RIGHT_PAREN . (discriminant_specification_opt . 4)) 
(SEMICOLON . (discriminant_specification_opt . 4)) (IDENTIFIER .  164))
-      ((default . error) (ACCESS . (null_exclusion_opt . 1)) (NOT .  867) 
(IDENTIFIER .  868) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (LIMITED .  873) (NEW . 
((abstract_limited_synchronized_opt . 2) (abstract_limited_opt . 2))) 
(SYNCHRONIZED .  874) (TAGGED .  875))
-      ((default . error) (LEFT_PAREN .  876))
-      ((default . error) (ABS .  121) (DIGITS . (expression_opt . 1)) (NEW .  
122) (NOT .  123) (NULL .  124) (RAISE .  125) (RANGE . (expression_opt . 1)) 
(WITH . (expression_opt . 1)) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) 
(SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (RANGE . (expression_opt . 1)) (WITH . (expression_opt . 1)) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (SEMICOLON . (expression_opt . 
1)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (WITH . (interface_type_definition . 8)) (SEMICOLON . 
(interface_type_definition . 8)))
-      ((default . error) (INTERFACE .  879) (NEW . 
((abstract_limited_synchronized_opt . 3) (abstract_limited_opt . 1))) (NULL . 
(abstract_tagged_limited_opt . 4)) (PRIVATE . (abstract_tagged_limited_opt . 
4)) (RECORD . (abstract_tagged_limited_opt . 4)))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (WITH . (expression_opt . 1)) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (RECORD .  881))
-      ((default . error) (INTERFACE .  882))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (CASE .  884) (END . (component_list_opt . 1)) (FOR . 
 183) (NULL .  885) (IDENTIFIER .  164))
-      ((default . error) (INTERFACE .  893) (NEW . 
(abstract_limited_synchronized_opt . 4)))
-      ((default . error) (LIMITED .  894) (NULL . (abstract_tagged_limited_opt 
. 3)) (PRIVATE . (abstract_tagged_limited_opt . 3)) (RECORD . 
(abstract_tagged_limited_opt . 3)) (SEMICOLON .  895))
-      ((default . error) (INTERFACE .  896))
-      ((default . error) (IDENTIFIER .  897) (CHARACTER_LITERAL .  898))
-      ((default . error) (NEW .  901))
-      ((default . error) (NEW .  902))
-      ((default . error) (NULL .  704) (PRIVATE .  903) (RECORD .  707))
-      ((default . error) (WITH . (type_definition . 8)) (SEMICOLON . 
(type_definition . 8)))
-      ((default . error) (WITH . (type_definition . 6)) (SEMICOLON . 
(type_definition . 6)))
-      ((default . error) (WITH . (type_definition . 9)) (SEMICOLON . 
(type_definition . 9)))
-      ((default . error) (WITH . (type_definition . 0)) (SEMICOLON . 
(type_definition . 0)))
-      ((default . error) (WITH . (type_definition . 10)) (SEMICOLON . 
(type_definition . 10)))
-      ((default . error) (ACCESS .  555))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (ACCEPT . (use_clause . 0)) (ABORT . (use_clause . 
0)) (BEGIN . (use_clause . 0)) (CASE . (use_clause . 0)) (DECLARE . (use_clause 
. 0)) (DELAY . (use_clause . 0)) (END . (use_clause . 0)) (ENTRY . (use_clause 
. 0)) (EXIT . (use_clause . 0)) (FOR . (use_clause . 0)) (FUNCTION . 
(use_clause . 0)) (GENERIC . (use_clause . 0)) (GOTO . (use_clause . 0)) (IF . 
(use_clause . 0)) (LIMITED . (use_clause . 0)) (LOOP . (use_clause . 0)) (NOT . 
(use_clause . 0)) (NULL . (us [...]
-      ((default . error) (WITH .  336) (LEFT_PAREN .  235) (DOT .  237) 
(SEMICOLON . (aspect_specification_opt . 1)) (TICK_1 .  239))
-      ((default . error) (WITH .  336) (LEFT_PAREN .  235) (DOT .  237) 
(SEMICOLON . (aspect_specification_opt . 1)) (TICK_1 .  239))
-      ((default . error) (IDENTIFIER . (general_access_modifier_opt . 0)) 
(STRING_LITERAL . (general_access_modifier_opt . 0)) (CHARACTER_LITERAL . 
(general_access_modifier_opt . 0)))
-      ((default . error) (IDENTIFIER . (general_access_modifier_opt . 1)) 
(STRING_LITERAL . (general_access_modifier_opt . 1)) (CHARACTER_LITERAL . 
(general_access_modifier_opt . 1)))
-      ((default . error) (FUNCTION . (protected_opt . 0)) (PROCEDURE . 
(protected_opt . 0)))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (FUNCTION .  909) (PROCEDURE .  910))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (SEMICOLON .  912))
-      ((default . error) (OTHERS .  913) (IDENTIFIER .  914) (STRING_LITERAL . 
 33) (CHARACTER_LITERAL .  34))
-      ((default . error) (END . (exception_handler_list . 1)) (WHEN . 
(exception_handler_list . 1)))
-      ((default . error) (END . (exception_handler_list_opt . 0)) (WHEN .  
732))
-      ((default . error) (END . (handled_sequence_of_statements . 0)))
-      ((default . error) (END . (exception_handler_list . 2)) (WHEN . 
(exception_handler_list . 2)))
-      ((default . error) (END .  919))
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (LOOP .  921))
-      ((default . error) (SEMICOLON .  922))
-      ((default . error) (NULL .  923))
-      ((default . error) (WITH .  336) (COLON_EQUAL .  924) (SEMICOLON . 
(aspect_specification_opt . 1)))
-      ((default . error) (WITH .  336) (COLON_EQUAL .  926) (SEMICOLON . 
(aspect_specification_opt . 1)))
-      ((default . error) (WITH .  336) (COLON_EQUAL .  928) (SEMICOLON . 
(aspect_specification_opt . 1)))
-      ((default . error) (RIGHT_PAREN . (range_list . 0)) (COMMA . (range_list 
. 0)))
-      ((default . error) (RIGHT_PAREN .  930))
-      ((default . error) (SEMICOLON .  931))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (RIGHT_PAREN .  934) (COMMA .  442))
-      ((default . error) (RIGHT_PAREN .  935))
-      ((default . error) (RIGHT_PAREN .  936))
-      ((default . error) (SEMICOLON .  937))
-      ((default . error) (SEMICOLON .  938))
-      ((default . error) (SEMICOLON .  939))
-      ((default . error) (SEMICOLON .  940))
-      ((default . error) (SEMICOLON .  941))
-      ((default . error) (BEGIN .  942))
-      ((default . error) (END .  943))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  260) (NULL .  124) 
(OTHERS .  262) (RAISE .  125) (LEFT_PAREN .  126) (BAR . (discrete_choice_list 
. 2)) (EQUAL_GREATER . (discrete_choice_list . 2)) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (RIGHT_PAREN . (case_expression_alternative_list . 
1)) (COMMA . (case_expression_alternative_list . 1)))
-      ((default . error) (RIGHT_PAREN . (case_expression . 0)) (COMMA .  945))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (RIGHT_PAREN . (expression_opt . 1)) (MINUS 
.  127) (PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ELSE .  947) (ELSIF .  948) (RIGHT_PAREN . 
(if_expression . 3)))
-      ((default . error) (RIGHT_PAREN .  951))
-      ((default . error) (ACCEPT . (aggregate . 1)) (ABORT . (aggregate . 1)) 
(AND . (aggregate . 1)) (BEGIN . (aggregate . 1)) (CASE . (aggregate . 1)) 
(DECLARE . (aggregate . 1)) (DELAY . (aggregate . 1)) (DIGITS . (aggregate . 
1)) (DO . (aggregate . 1)) (ELSE . (aggregate . 1)) (ELSIF . (aggregate . 1)) 
(EXIT . (aggregate . 1)) (FOR . (aggregate . 1)) (GOTO . (aggregate . 1)) (IF . 
(aggregate . 1)) (IN . (aggregate . 1)) (IS . (aggregate . 1)) (LOOP . 
(aggregate . 1)) (MOD . (aggregat [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (RIGHT_PAREN . (expression_opt . 1)) (MINUS 
.  127) (PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 1)) 
(GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (PRAGMA .  
16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) (WHEN . 
(sequence_of_statements_opt . 1)) (WHILE . (block_label_opt . 1)) (LESS_LESS .  
31) (IDENTIFIER .  359) (STRING_LITE [...]
-      ((default . error) (SEMICOLON .  954))
-      ((default . error) (AND . (membership_choice_list . 0)) (DIGITS . 
(membership_choice_list . 0)) (DO . (membership_choice_list . 0)) (ELSE . 
(membership_choice_list . 0)) (ELSIF . (membership_choice_list . 0)) (IS . 
(membership_choice_list . 0)) (LOOP . (membership_choice_list . 0)) (OR . 
(membership_choice_list . 0)) (RANGE . (membership_choice_list . 0)) (THEN . 
(membership_choice_list . 0)) (WITH . (membership_choice_list . 0)) (XOR . 
(membership_choice_list . 0)) (RIGHT_PAREN .  [...]
-      ((default . error) (AND . (subtype_indication . 1)) (DO . 
(subtype_indication . 1)) (LOOP . (subtype_indication . 1)) (OF . 
(subtype_indication . 1)) (RANGE .  617) (WITH . (subtype_indication . 1)) 
(LEFT_PAREN .  618) (RIGHT_PAREN . (subtype_indication . 1)) (COLON_EQUAL . 
(subtype_indication . 1)) (COMMA . (subtype_indication . 1)) (DOT .  237) 
(EQUAL_GREATER . (subtype_indication . 1)) (SEMICOLON . (subtype_indication . 
1)) (TICK_1 .  239))
-      ((default . error) (AND . (constraint . 0)) (DO . (constraint . 0)) 
(LOOP . (constraint . 0)) (OF . (constraint . 0)) (WITH . (constraint . 0)) 
(RIGHT_PAREN . (constraint . 0)) (COLON_EQUAL . (constraint . 0)) (COMMA . 
(constraint . 0)) (EQUAL_GREATER . (constraint . 0)) (SEMICOLON . (constraint . 
0)))
-      ((default . error) (NEW .  122) (NULL .  956) (LEFT_PAREN .  126) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (RIGHT_PAREN . (discrete_subtype_definition_list . 
1)) (COMMA . (discrete_subtype_definition_list . 1)))
-      ((default . error) (RIGHT_PAREN .  957) (COMMA .  958))
-      ((default . error) (RIGHT_PAREN . ((discrete_subtype_definition . 1) 
(range_list . 1))) (BAR . (discrete_choice . 2)) (COMMA . 
((discrete_subtype_definition . 1) (range_list . 1))) (EQUAL_GREATER . 
(discrete_choice . 2)))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (LOOP . (iterator_specification . 1)) (LEFT_PAREN .  
235) (DOT .  237) (EQUAL_GREATER . (iterator_specification . 1)) (TICK_1 .  
239))
-      ((default . error) (ACCEPT . (at_clause . 0)) (ABORT . (at_clause . 0)) 
(BEGIN . (at_clause . 0)) (CASE . (at_clause . 0)) (DECLARE . (at_clause . 0)) 
(DELAY . (at_clause . 0)) (END . (at_clause . 0)) (ENTRY . (at_clause . 0)) 
(EXIT . (at_clause . 0)) (FOR . (at_clause . 0)) (FUNCTION . (at_clause . 0)) 
(GENERIC . (at_clause . 0)) (GOTO . (at_clause . 0)) (IF . (at_clause . 0)) 
(LIMITED . (at_clause . 0)) (LOOP . (at_clause . 0)) (NOT . (at_clause . 0)) 
(NULL . (at_clause . 0)) (OV [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (SEMICOLON . 
(expression_opt . 1)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (AT .  961))
-      ((default . error) (END . (component_clause_list . 1)) (IDENTIFIER . 
(component_clause_list . 1)))
-      ((default . error) (END .  962) (IDENTIFIER .  781))
-      ((default . error) (ACCESS . (null_exclusion_opt . 1)) (IN .  503) (NOT 
. ( 385 (mode_opt . 3))) (OUT .  504) (IDENTIFIER . (mode_opt . 3)) 
(STRING_LITERAL . (mode_opt . 3)) (CHARACTER_LITERAL . (mode_opt . 3)))
-      ((default . error) (RIGHT_PAREN . (parameter_specification_list . 0)) 
(SEMICOLON . (parameter_specification_list . 0)))
-      ((default . error) (SEMICOLON .  966))
-      ((default . error) (SEMICOLON .  967))
-      ((default . error) (SEMICOLON .  968))
-      ((default . error) (LIMITED .  969) (NEW . 
(abstract_limited_synchronized_opt . 2)) (SYNCHRONIZED .  874) (TAGGED .  875))
-      ((default . error) (BOX .  970))
-      ((default . error) (BOX .  971))
-      ((default . error) (INTERFACE .  879) (NEW . 
(abstract_limited_synchronized_opt . 3)) (PRIVATE . 
(abstract_tagged_limited_opt . 4)))
-      ((default . error) (BOX .  972))
-      ((default . error) (BOX .  973))
-      ((default . error) (LIMITED .  894) (PRIVATE . 
(abstract_tagged_limited_opt . 3)) (WITH .  336) (SEMICOLON . 
(aspect_specification_opt . 1)))
-      ((default . error) (BOX .  975))
-      ((default . error) (NEW .  976))
-      ((default . error) (PRIVATE .  977))
-      ((default . error) (WITH . (formal_type_definition . 9)) (SEMICOLON . 
(formal_type_definition . 9)))
-      ((default . error) (WITH . (formal_type_definition . 8)) (SEMICOLON . 
(formal_type_definition . 8)))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (WITH . (formal_type_definition . 1)) (SEMICOLON . 
(formal_type_definition . 1)))
-      ((default . error) (WITH . (formal_type_definition . 10)) (SEMICOLON . 
(formal_type_definition . 10)))
-      ((default . error) (FUNCTION . (formal_type_declaration . 2)) (PACKAGE . 
(formal_type_declaration . 2)) (PRAGMA . (formal_type_declaration . 2)) 
(PROCEDURE . (formal_type_declaration . 2)) (TYPE . (formal_type_declaration . 
2)) (USE . (formal_type_declaration . 2)) (WITH . (formal_type_declaration . 
2)) (IDENTIFIER . (formal_type_declaration . 2)))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (SEMICOLON .  980))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (SEMICOLON .  982))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (WITH . (expression_opt . 1)) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (SEMICOLON .  984))
-      ((default . error) (WITH .  336) (LEFT_PAREN .  235) (COLON_EQUAL .  
985) (DOT .  237) (SEMICOLON . (aspect_specification_opt . 1)) (TICK_1 .  239))
-      ((default . error) (END .  987))
-      ((default . error) (THEN .  988))
-      ((default . error) (SEMICOLON .  989))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 1)) 
(GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (PRAGMA .  
16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) (WHILE . 
(block_label_opt . 1)) (LESS_LESS .  31) (IDENTIFIER .  359) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (IF .  991))
-      ((default . error) (ELSE . (elsif_statement_list . 0)) (ELSIF . 
(elsif_statement_list . 0)) (END . (elsif_statement_list . 0)))
-      ((default . error) (SEMICOLON .  992))
-      ((default . error) (BEGIN .  993) (END .  994))
-      ((default . error) (SEMICOLON .  995))
-      ((default . error) (ACCEPT . (package_renaming_declaration . 0)) (ABORT 
. (package_renaming_declaration . 0)) (BEGIN . (package_renaming_declaration . 
0)) (CASE . (package_renaming_declaration . 0)) (DECLARE . 
(package_renaming_declaration . 0)) (DELAY . (package_renaming_declaration . 
0)) (END . (package_renaming_declaration . 0)) (ENTRY . 
(package_renaming_declaration . 0)) (EXIT . (package_renaming_declaration . 0)) 
(FOR . (package_renaming_declaration . 0)) (FUNCTION . (package [...]
-      ((default . error) (SEMICOLON . (name_opt . 1)) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (END . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) (OVERRIDING .  14) 
(PACKAGE .  15) (PRAGMA .  16) (PROCEDURE . (overriding_indicator_opt . 2)) 
(PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) (TYPE .  27) (USE .  28) 
(IDENTIFIER .  185))
-      ((default . error) (ACCEPT . (pragma_g . 0)) (ABORT . (pragma_g . 0)) 
(BEGIN . (pragma_g . 0)) (CASE . (pragma_g . 0)) (DECLARE . (pragma_g . 0)) 
(DELAY . (pragma_g . 0)) (ELSE . (pragma_g . 0)) (ELSIF . (pragma_g . 0)) (END 
. (pragma_g . 0)) (ENTRY . (pragma_g . 0)) (EXCEPTION . (pragma_g . 0)) (EXIT . 
(pragma_g . 0)) (FOR . (pragma_g . 0)) (FUNCTION . (pragma_g . 0)) (GENERIC . 
(pragma_g . 0)) (GOTO . (pragma_g . 0)) (IF . (pragma_g . 0)) (LIMITED . 
(pragma_g . 0)) (LOOP . (pragm [...]
-      ((default . error) (ACCEPT . (pragma_g . 1)) (ABORT . (pragma_g . 1)) 
(BEGIN . (pragma_g . 1)) (CASE . (pragma_g . 1)) (DECLARE . (pragma_g . 1)) 
(DELAY . (pragma_g . 1)) (ELSE . (pragma_g . 1)) (ELSIF . (pragma_g . 1)) (END 
. (pragma_g . 1)) (ENTRY . (pragma_g . 1)) (EXCEPTION . (pragma_g . 1)) (EXIT . 
(pragma_g . 1)) (FOR . (pragma_g . 1)) (FUNCTION . (pragma_g . 1)) (GENERIC . 
(pragma_g . 1)) (GOTO . (pragma_g . 1)) (IF . (pragma_g . 1)) (LIMITED . 
(pragma_g . 1)) (LOOP . (pragm [...]
-      ((default . error) (SEMICOLON .  998))
-      ((default . error) (IDENTIFIER .  999))
-      ((default . error) (END . (protected_operation_item . 5)) (ENTRY . 
(protected_operation_item . 5)) (FOR . (protected_operation_item . 5)) 
(FUNCTION . (protected_operation_item . 5)) (NOT . (protected_operation_item . 
5)) (OVERRIDING . (protected_operation_item . 5)) (PROCEDURE . 
(protected_operation_item . 5)))
-      ((default . error) (END . (protected_operation_item . 2)) (ENTRY . 
(protected_operation_item . 2)) (FOR . (protected_operation_item . 2)) 
(FUNCTION . (protected_operation_item . 2)) (NOT . (protected_operation_item . 
2)) (OVERRIDING . (protected_operation_item . 2)) (PROCEDURE . 
(protected_operation_item . 2)))
-      ((default . error) (END . (protected_operation_item . 3)) (ENTRY . 
(protected_operation_item . 3)) (FOR . (protected_operation_item . 3)) 
(FUNCTION . (protected_operation_item . 3)) (NOT . (protected_operation_item . 
3)) (OVERRIDING . (protected_operation_item . 3)) (PROCEDURE . 
(protected_operation_item . 3)))
-      ((default . error) (END . (protected_operation_item . 4)) (ENTRY . 
(protected_operation_item . 4)) (FOR . (protected_operation_item . 4)) 
(FUNCTION . (protected_operation_item . 4)) (NOT . (protected_operation_item . 
4)) (OVERRIDING . (protected_operation_item . 4)) (PROCEDURE . 
(protected_operation_item . 4)))
-      ((default . error) (FUNCTION .  7) (PROCEDURE .  18))
-      ((default . error) (END . (protected_operation_item_list . 1)) (ENTRY . 
(protected_operation_item_list . 1)) (FOR . (protected_operation_item_list . 
1)) (FUNCTION . (protected_operation_item_list . 1)) (NOT . 
(protected_operation_item_list . 1)) (OVERRIDING . 
(protected_operation_item_list . 1)) (PROCEDURE . 
(protected_operation_item_list . 1)))
-      ((default . error) (END . (protected_operation_item_list_opt . 0)) 
(ENTRY .  827) (FOR .  183) (FUNCTION . (overriding_indicator_opt . 2)) (NOT .  
12) (OVERRIDING .  14) (PROCEDURE . (overriding_indicator_opt . 2)))
-      ((default . error) (END .  1002))
-      ((default . error) (END . (protected_operation_item . 1)) (ENTRY . 
(protected_operation_item . 1)) (FOR . (protected_operation_item . 1)) 
(FUNCTION . (protected_operation_item . 1)) (NOT . (protected_operation_item . 
1)) (OVERRIDING . (protected_operation_item . 1)) (PROCEDURE . 
(protected_operation_item . 1)))
-      ((default . error) (END . (protected_operation_item . 0)) (ENTRY . 
(protected_operation_item . 0)) (FOR . (protected_operation_item . 0)) 
(FUNCTION . (protected_operation_item . 0)) (NOT . (protected_operation_item . 
0)) (OVERRIDING . (protected_operation_item . 0)) (PROCEDURE . 
(protected_operation_item . 0)))
-      ((default . error) (END . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NEW .  1003) (NOT .  12) 
(OVERRIDING .  14) (PACKAGE .  15) (PRAGMA .  16) (PRIVATE . 
(declarative_part_opt . 1)) (PROCEDURE . (overriding_indicator_opt . 2)) 
(PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) (TYPE .  27) (USE .  28) 
(IDENTIFIER .  185))
-      ((default . error) (AND .  1005) (WITH .  1006))
-      ((default . error) (AND . (interface_list . 1)) (WITH . (interface_list 
. 1)) (LEFT_PAREN .  235) (DOT .  237) (SEMICOLON . (interface_list . 1)) 
(TICK_1 .  239))
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (END . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) (OVERRIDING .  14) 
(PACKAGE .  15) (PRAGMA .  16) (PROCEDURE . (overriding_indicator_opt . 2)) 
(PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) (TYPE .  27) (USE .  28) 
(IDENTIFIER .  185))
-      ((default . error) (ACCEPT . (single_protected_declaration . 1)) (ABORT 
. (single_protected_declaration . 1)) (BEGIN . (single_protected_declaration . 
1)) (CASE . (single_protected_declaration . 1)) (DECLARE . 
(single_protected_declaration . 1)) (DELAY . (single_protected_declaration . 
1)) (END . (single_protected_declaration . 1)) (ENTRY . 
(single_protected_declaration . 1)) (EXIT . (single_protected_declaration . 1)) 
(FOR . (single_protected_declaration . 1)) (FUNCTION . (single_ [...]
-      ((default . error) (DO . (return_subtype_indication . 1)) (COLON_EQUAL . 
(return_subtype_indication . 1)) (SEMICOLON . (return_subtype_indication . 1)))
-      ((default . error) (DO . (extended_return_object_declaration . 1)) 
(COLON_EQUAL .  1009) (SEMICOLON . (extended_return_object_declaration . 1)))
-      ((default . error) (DO . (return_subtype_indication . 0)) (COLON_EQUAL . 
(return_subtype_indication . 0)) (SEMICOLON . (return_subtype_indication . 0)))
-      ((default . error) (SEMICOLON .  1010))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  1012))
-      ((default . error) (IDENTIFIER .  1013))
-      ((default . error) (IS . (aspect_specification_opt . 1)) (WITH .  336))
-      ((default . error) (ELSE . (select_alternative . 1)) (END . 
(select_alternative . 1)) (OR . (select_alternative . 1)))
-      ((default . error) (ELSE . (select_alternative . 0)) (END . 
(select_alternative . 0)) (OR . (select_alternative . 0)))
-      ((default . error) (SEMICOLON .  1015))
-      ((default . error) (SEMICOLON .  1016))
-      ((default . error) (SEMICOLON .  1017))
-      ((default . error) (SELECT .  1018))
-      ((default . error) (ACCEPT . (subtype_declaration . 0)) (ABORT . 
(subtype_declaration . 0)) (BEGIN . (subtype_declaration . 0)) (CASE . 
(subtype_declaration . 0)) (DECLARE . (subtype_declaration . 0)) (DELAY . 
(subtype_declaration . 0)) (END . (subtype_declaration . 0)) (ENTRY . 
(subtype_declaration . 0)) (EXIT . (subtype_declaration . 0)) (FOR . 
(subtype_declaration . 0)) (FUNCTION . (subtype_declaration . 0)) (GENERIC . 
(subtype_declaration . 0)) (GOTO . (subtype_declaration . 0) [...]
-      ((default . error) (SEMICOLON .  1019))
-      ((default . error) (BEGIN .  1020))
-      ((default . error) (END . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NEW .  1021) (NOT .  12) 
(OVERRIDING .  14) (PACKAGE .  15) (PRAGMA .  16) (PRIVATE . 
(declarative_part_opt . 1)) (PROCEDURE . (overriding_indicator_opt . 2)) 
(PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) (TYPE .  27) (USE .  28) 
(IDENTIFIER .  185))
-      ((default . error) (ACCEPT . (task_type_declaration . 2)) (ABORT . 
(task_type_declaration . 2)) (BEGIN . (task_type_declaration . 2)) (CASE . 
(task_type_declaration . 2)) (DECLARE . (task_type_declaration . 2)) (DELAY . 
(task_type_declaration . 2)) (END . (task_type_declaration . 2)) (ENTRY . 
(task_type_declaration . 2)) (EXIT . (task_type_declaration . 2)) (FOR . 
(task_type_declaration . 2)) (FUNCTION . (task_type_declaration . 2)) (GENERIC 
. (task_type_declaration . 2)) (GOTO . ( [...]
-      ((default . error) (AND .  1005) (WITH .  1023))
-      ((default . error) (END . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) (OVERRIDING .  14) 
(PACKAGE .  15) (PRAGMA .  16) (PROCEDURE . (overriding_indicator_opt . 2)) 
(PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) (TYPE .  27) (USE .  28) 
(IDENTIFIER .  185))
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (RIGHT_PAREN . (discriminant_specification_list . 0)) 
(SEMICOLON . (discriminant_specification_list . 0)))
-      ((default . error) (NULL .  1026))
-      ((default . error) (LEFT_PAREN . (name . 5)) (RIGHT_PAREN . 
(null_exclusion_opt_name_type . 0)) (COLON_EQUAL . 
(null_exclusion_opt_name_type . 0)) (DOT . (name . 5)) (SEMICOLON . 
(null_exclusion_opt_name_type . 0)) (TICK_1 . (name . 5)))
-      ((default . error) (RIGHT_PAREN . (discriminant_specification_opt . 3)) 
(COLON_EQUAL .  1027) (SEMICOLON . (discriminant_specification_opt . 3)))
-      ((default . error) (LEFT_PAREN .  235) (DOT .  237) (TICK_1 .  239))
-      ((default . error) (RIGHT_PAREN . (discriminant_specification_opt . 2)) 
(COLON_EQUAL .  1028) (SEMICOLON . (discriminant_specification_opt . 2)))
-      ((default . error) (LEFT_PAREN . (name . 2)) (RIGHT_PAREN . 
(null_exclusion_opt_name_type . 1)) (COLON_EQUAL . 
(null_exclusion_opt_name_type . 1)) (DOT . (name . 2)) (SEMICOLON . 
(null_exclusion_opt_name_type . 1)) (TICK_1 . (name . 2)))
-      ((default . error) (NEW . ((abstract_limited_synchronized_opt . 0) 
(abstract_limited_opt . 0))))
-      ((default . error) (NEW . (abstract_limited_synchronized_opt . 1)))
-      ((default . error) (LIMITED .  1029) (NULL . 
(abstract_tagged_limited_opt . 1)) (PRIVATE . (abstract_tagged_limited_opt . 
1)) (RECORD . (abstract_tagged_limited_opt . 1)))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  473) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (DIGITS .  1034) (RANGE .  1035) (WITH . 
(real_range_specification_opt . 1)) (SEMICOLON . (real_range_specification_opt 
. 1)))
-      ((default . error) (RANGE .  1035) (WITH . (real_range_specification_opt 
. 1)) (SEMICOLON . (real_range_specification_opt . 1)))
-      ((default . error) (AND .  1038) (WITH . (interface_type_definition . 
4)) (SEMICOLON . (interface_type_definition . 4)))
-      ((default . error) (WITH . (type_definition . 2)) (SEMICOLON . 
(type_definition . 2)))
-      ((default . error) (WITH . (record_definition . 1)) (SEMICOLON . 
(record_definition . 1)))
-      ((default . error) (AND .  1039) (WITH . (interface_type_definition . 
6)) (SEMICOLON . (interface_type_definition . 6)))
-      ((default . error) (DOT_DOT .  1040))
-      ((default . error) (IS . (direct_name_opt . 1)) (IDENTIFIER .  1041) 
(STRING_LITERAL .  1042))
-      ((default . error) (SEMICOLON .  1045))
-      ((default . error) (CASE . (component_item . 1)) (END . (component_item 
. 1)) (FOR . (component_item . 1)) (WHEN . (component_item . 1)) (IDENTIFIER . 
(component_item . 1)))
-      ((default . error) (CASE . (component_item . 0)) (END . (component_item 
. 0)) (FOR . (component_item . 0)) (WHEN . (component_item . 0)) (IDENTIFIER . 
(component_item . 0)))
-      ((default . error) (CASE . (component_list . 2)) (END . (component_list 
. 2)) (FOR . (component_list . 2)) (WHEN . (component_list . 2)) (IDENTIFIER . 
(component_list . 2)))
-      ((default . error) (CASE .  884) (END . (component_list_opt . 0)) (FOR . 
 183) (WHEN . (component_list_opt . 0)) (IDENTIFIER .  164))
-      ((default . error) (END .  1048))
-      ((default . error) (COLON .  1049) (COMMA .  234))
-      ((default . error) (CASE . (component_list . 3)) (END . (component_list 
. 3)) (FOR . (component_list . 3)) (WHEN . (component_list . 3)) (IDENTIFIER . 
(component_list . 3)))
-      ((default . error) (AND .  1050) (WITH . (interface_type_definition . 
7)) (SEMICOLON . (interface_type_definition . 7)))
-      ((default . error) (NULL . (abstract_tagged_limited_opt . 2)) (PRIVATE . 
(abstract_tagged_limited_opt . 2)) (RECORD . (abstract_tagged_limited_opt . 2)))
-      ((default . error) (ACCEPT . (incomplete_type_declaration . 0)) (ABORT . 
(incomplete_type_declaration . 0)) (BEGIN . (incomplete_type_declaration . 0)) 
(CASE . (incomplete_type_declaration . 0)) (DECLARE . 
(incomplete_type_declaration . 0)) (DELAY . (incomplete_type_declaration . 0)) 
(END . (incomplete_type_declaration . 0)) (ENTRY . (incomplete_type_declaration 
. 0)) (EXIT . (incomplete_type_declaration . 0)) (FOR . 
(incomplete_type_declaration . 0)) (FUNCTION . (incomplete_type_d [...]
-      ((default . error) (AND .  1051) (WITH . (interface_type_definition . 
5)) (SEMICOLON . (interface_type_definition . 5)))
-      ((default . error) (RIGHT_PAREN . (enumeration_literal . 0)) (COMMA . 
(enumeration_literal . 0)))
-      ((default . error) (RIGHT_PAREN . (enumeration_literal . 1)) (COMMA . 
(enumeration_literal . 1)))
-      ((default . error) (RIGHT_PAREN . (enumeration_literal_list . 1)) (COMMA 
. (enumeration_literal_list . 1)))
-      ((default . error) (RIGHT_PAREN .  1052) (COMMA .  1053))
-      ((default . error) (NOT .  482) (IDENTIFIER .  119) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (WITH . (type_definition . 7)) (SEMICOLON . 
(type_definition . 7)))
-      ((default . error) (SEMICOLON .  1057))
-      ((default . error) (SEMICOLON .  1058))
-      ((default . error) (SEMICOLON .  1059))
-      ((default . error) (DO . (access_definition . 2)) (IS . 
(access_definition . 2)) (RENAMES . (access_definition . 2)) (WITH . 
(access_definition . 2)) (LEFT_PAREN .  235) (RIGHT_PAREN . (access_definition 
. 2)) (COLON_EQUAL . (access_definition . 2)) (DOT .  237) (SEMICOLON . 
(access_definition . 2)) (TICK_1 .  239))
-      ((default . error) (RETURN .  316) (LEFT_PAREN .  430))
-      ((default . error) (DO . (parameter_profile_opt . 1)) (IS . 
(parameter_profile_opt . 1)) (RENAMES . (parameter_profile_opt . 1)) (WITH . 
(parameter_profile_opt . 1)) (LEFT_PAREN .  430) (RIGHT_PAREN . 
(parameter_profile_opt . 1)) (COLON_EQUAL . (parameter_profile_opt . 1)) 
(SEMICOLON . (parameter_profile_opt . 1)))
-      ((default . error) (WITH .  336) (LEFT_PAREN .  235) (DOT .  237) 
(SEMICOLON . (aspect_specification_opt . 1)) (TICK_1 .  239))
-      ((default . error) (ACCEPT . (block_statement . 1)) (ABORT . 
(block_statement . 1)) (BEGIN . (block_statement . 1)) (CASE . (block_statement 
. 1)) (DECLARE . (block_statement . 1)) (DELAY . (block_statement . 1)) (ELSE . 
(block_statement . 1)) (ELSIF . (block_statement . 1)) (END . (block_statement 
. 1)) (ENTRY . (block_statement . 1)) (EXCEPTION . (block_statement . 1)) (EXIT 
. (block_statement . 1)) (FOR . (block_statement . 1)) (FUNCTION . 
(block_statement . 1)) (GENERIC . (bloc [...]
-      ((default . error) (BAR . (exception_choice . 1)) (EQUAL_GREATER . 
(exception_choice . 1)))
-      ((default . error) (LEFT_PAREN . (name . 5)) (BAR . (name . 5)) (COLON . 
 1063) (DOT . (name . 5)) (EQUAL_GREATER . (name . 5)) (TICK_1 . (name . 5)))
-      ((default . error) (BAR . (exception_choice_list . 1)) (EQUAL_GREATER . 
(exception_choice_list . 1)))
-      ((default . error) (BAR .  1064) (EQUAL_GREATER .  1065))
-      ((default . error) (LEFT_PAREN .  235) (BAR . (exception_choice . 0)) 
(DOT .  237) (EQUAL_GREATER . (exception_choice . 0)) (TICK_1 .  239))
-      ((default . error) (END . (exception_handler_list . 0)) (WHEN . 
(exception_handler_list . 0)))
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (SEMICOLON .  1067))
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (ACCEPT . (declaration . 9)) (ABORT . (declaration . 
9)) (BEGIN . (declaration . 9)) (CASE . (declaration . 9)) (DECLARE . 
(declaration . 9)) (DELAY . (declaration . 9)) (END . (declaration . 9)) (ENTRY 
. (declaration . 9)) (EXIT . (declaration . 9)) (FOR . (declaration . 9)) 
(FUNCTION . (declaration . 9)) (GENERIC . (declaration . 9)) (GOTO . 
(declaration . 9)) (IF . (declaration . 9)) (LIMITED . (declaration . 9)) (LOOP 
. (declaration . 9)) (NOT . (declaration  [...]
-      ((default . error) (ACCESS . (null_exclusion_opt . 0)) (IDENTIFIER .  
119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (WITH . (expression_opt . 1)) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (SEMICOLON .  1070))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (WITH . (expression_opt . 1)) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (SEMICOLON .  1072))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (WITH . (expression_opt . 1)) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (SEMICOLON .  1074))
-      ((default . error) (WITH . (parameter_profile_opt . 1)) (LEFT_PAREN .  
430) (SEMICOLON . (parameter_profile_opt . 1)))
-      ((default . error) (ACCEPT . (entry_declaration . 1)) (ABORT . 
(entry_declaration . 1)) (BEGIN . (entry_declaration . 1)) (CASE . 
(entry_declaration . 1)) (DECLARE . (entry_declaration . 1)) (DELAY . 
(entry_declaration . 1)) (END . (entry_declaration . 1)) (ENTRY . 
(entry_declaration . 1)) (EXIT . (entry_declaration . 1)) (FOR . 
(entry_declaration . 1)) (FUNCTION . (entry_declaration . 1)) (GENERIC . 
(entry_declaration . 1)) (GOTO . (entry_declaration . 1)) (IF . 
(entry_declaration [...]
-      ((default . error) (WITH .  336) (LEFT_PAREN .  235) (DOT .  237) 
(SEMICOLON . (aspect_specification_opt . 1)) (TICK_1 .  239))
-      ((default . error) (WITH .  336) (LEFT_PAREN .  235) (DOT .  237) 
(SEMICOLON . (aspect_specification_opt . 1)) (TICK_1 .  239))
-      ((default . error) (WITH . (paren_expression . 1)) (SEMICOLON . 
(paren_expression . 1)))
-      ((default . error) (WITH . (paren_expression . 2)) (SEMICOLON . 
(paren_expression . 2)))
-      ((default . error) (WITH . (paren_expression . 0)) (SEMICOLON . 
(paren_expression . 0)))
-      ((default . error) (ACCEPT . (expression_function_declaration . 0)) 
(ABORT . (expression_function_declaration . 0)) (BEGIN . 
(expression_function_declaration . 0)) (CASE . (expression_function_declaration 
. 0)) (DECLARE . (expression_function_declaration . 0)) (DELAY . 
(expression_function_declaration . 0)) (END . (expression_function_declaration 
. 0)) (ENTRY . (expression_function_declaration . 0)) (EXIT . 
(expression_function_declaration . 0)) (FOR . (expression_function_declarat 
[...]
-      ((default . error) (ACCEPT . (null_procedure_declaration . 0)) (ABORT . 
(null_procedure_declaration . 0)) (BEGIN . (null_procedure_declaration . 0)) 
(CASE . (null_procedure_declaration . 0)) (DECLARE . 
(null_procedure_declaration . 0)) (DELAY . (null_procedure_declaration . 0)) 
(END . (null_procedure_declaration . 0)) (ENTRY . (null_procedure_declaration . 
0)) (EXIT . (null_procedure_declaration . 0)) (FOR . 
(null_procedure_declaration . 0)) (FUNCTION . (null_procedure_declaration  [...]
-      ((default . error) (ACCEPT . (abstract_subprogram_declaration . 0)) 
(ABORT . (abstract_subprogram_declaration . 0)) (BEGIN . 
(abstract_subprogram_declaration . 0)) (CASE . (abstract_subprogram_declaration 
. 0)) (DECLARE . (abstract_subprogram_declaration . 0)) (DELAY . 
(abstract_subprogram_declaration . 0)) (END . (abstract_subprogram_declaration 
. 0)) (ENTRY . (abstract_subprogram_declaration . 0)) (EXIT . 
(abstract_subprogram_declaration . 0)) (FOR . (abstract_subprogram_declarat 
[...]
-      ((default . error) (ACCEPT . (subprogram_body_stub . 0)) (ABORT . 
(subprogram_body_stub . 0)) (BEGIN . (subprogram_body_stub . 0)) (CASE . 
(subprogram_body_stub . 0)) (DECLARE . (subprogram_body_stub . 0)) (DELAY . 
(subprogram_body_stub . 0)) (END . (subprogram_body_stub . 0)) (ENTRY . 
(subprogram_body_stub . 0)) (EXIT . (subprogram_body_stub . 0)) (FOR . 
(subprogram_body_stub . 0)) (FUNCTION . (subprogram_body_stub . 0)) (GENERIC . 
(subprogram_body_stub . 0)) (GOTO . (subprogram_b [...]
-      ((default . error) (ACCEPT . (subprogram_renaming_declaration . 0)) 
(ABORT . (subprogram_renaming_declaration . 0)) (BEGIN . 
(subprogram_renaming_declaration . 0)) (CASE . (subprogram_renaming_declaration 
. 0)) (DECLARE . (subprogram_renaming_declaration . 0)) (DELAY . 
(subprogram_renaming_declaration . 0)) (END . (subprogram_renaming_declaration 
. 0)) (ENTRY . (subprogram_renaming_declaration . 0)) (EXIT . 
(subprogram_renaming_declaration . 0)) (FOR . (subprogram_renaming_declarat 
[...]
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXCEPTION . (sequence_of_statements_opt . 
1)) (EXIT .  5) (FOR . (block_label_opt . 1)) (GOTO .  9) (IF .  10) (LOOP . 
(block_label_opt . 1)) (NULL .  13) (PRAGMA .  16) (RAISE .  20) (REQUEUE .  
21) (RETURN .  22) (SELECT .  24) (WHILE . (block_label_opt . 1)) (LESS_LESS .  
31) (IDENTIFIER .  359) (STRING [...]
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (BAR .  444) (EQUAL_GREATER .  1080))
-      ((default . error) (WHEN .  760))
-      ((default . error) (RIGHT_PAREN . (quantified_expression . 0)))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (RIGHT_PAREN . (expression_opt . 1)) (MINUS 
.  127) (PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (THEN . (expression_opt . 1)) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ELSE . (elsif_expression_list . 1)) (ELSIF . 
(elsif_expression_list . 1)) (RIGHT_PAREN . (elsif_expression_list . 1)))
-      ((default . error) (ELSE .  1084) (ELSIF .  948) (RIGHT_PAREN . 
(if_expression . 2)))
-      ((default . error) (ACCEPT . (aggregate . 0)) (ABORT . (aggregate . 0)) 
(AND . (aggregate . 0)) (BEGIN . (aggregate . 0)) (CASE . (aggregate . 0)) 
(DECLARE . (aggregate . 0)) (DELAY . (aggregate . 0)) (DIGITS . (aggregate . 
0)) (DO . (aggregate . 0)) (ELSE . (aggregate . 0)) (ELSIF . (aggregate . 0)) 
(EXIT . (aggregate . 0)) (FOR . (aggregate . 0)) (GOTO . (aggregate . 0)) (IF . 
(aggregate . 0)) (IN . (aggregate . 0)) (IS . (aggregate . 0)) (LOOP . 
(aggregate . 0)) (MOD . (aggregat [...]
-      ((default . error) (RIGHT_PAREN .  1086))
-      ((default . error) (END . (case_statement_alternative . 0)) (WHEN . 
(case_statement_alternative . 0)))
-      ((default . error) (ACCEPT . (case_statement . 0)) (ABORT . 
(case_statement . 0)) (BEGIN . (case_statement . 0)) (CASE . (case_statement . 
0)) (DECLARE . (case_statement . 0)) (DELAY . (case_statement . 0)) (ELSE . 
(case_statement . 0)) (ELSIF . (case_statement . 0)) (END . (case_statement . 
0)) (ENTRY . (case_statement . 0)) (EXCEPTION . (case_statement . 0)) (EXIT . 
(case_statement . 0)) (FOR . (case_statement . 0)) (FUNCTION . (case_statement 
. 0)) (GENERIC . (case_statement . 0 [...]
-      ((default . error) (AND . (subtype_indication . 0)) (DO . 
(subtype_indication . 0)) (LOOP . (subtype_indication . 0)) (OF . 
(subtype_indication . 0)) (WITH . (subtype_indication . 0)) (RIGHT_PAREN . 
(subtype_indication . 0)) (COLON_EQUAL . (subtype_indication . 0)) (COMMA . 
(subtype_indication . 0)) (EQUAL_GREATER . (subtype_indication . 0)) (SEMICOLON 
. (subtype_indication . 0)))
-      ((default . error) (AND . (primary . 1)) (IN . (primary . 1)) (MOD . 
(primary . 1)) (NOT . (primary . 1)) (OR . (primary . 1)) (REM . (primary . 1)) 
(XOR . (primary . 1)) (RIGHT_PAREN . (primary . 1)) (AMPERSAND . (primary . 1)) 
(BAR . (primary . 1)) (COMMA . (primary . 1)) (DOT_DOT . (primary . 1)) (EQUAL 
. (primary . 1)) (EQUAL_GREATER . (primary . 1)) (GREATER . (primary . 1)) 
(GREATER_EQUAL . (primary . 1)) (LESS . (primary . 1)) (LESS_EQUAL . (primary . 
1)) (MINUS . (primary . [...]
-      ((default . error) (AND . (index_constraint . 0)) (DO . 
(index_constraint . 0)) (LOOP . (index_constraint . 0)) (OF . (index_constraint 
. 0)) (WITH . (index_constraint . 0)) (RIGHT_PAREN . (index_constraint . 0)) 
(COLON_EQUAL . (index_constraint . 0)) (COMMA . (index_constraint . 0)) 
(EQUAL_GREATER . (index_constraint . 0)) (SEMICOLON . (index_constraint . 0)))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  473) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (LOOP . (iterator_specification . 0)) (LEFT_PAREN .  
235) (DOT .  237) (EQUAL_GREATER . (iterator_specification . 0)) (TICK_1 .  
239))
-      ((default . error) (SEMICOLON .  1089))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (RECORD .  1091))
-      ((default . error) (END . (component_clause_list . 0)) (IDENTIFIER . 
(component_clause_list . 0)))
-      ((default . error) (RIGHT_PAREN . (parameter_specification . 3)) 
(COLON_EQUAL .  1092) (SEMICOLON . (parameter_specification . 3)))
-      ((default . error) (NOT .  385) (IDENTIFIER . (null_exclusion_opt . 1)) 
(STRING_LITERAL . (null_exclusion_opt . 1)) (CHARACTER_LITERAL . 
(null_exclusion_opt . 1)))
-      ((default . error) (ACCEPT . (generic_renaming_declaration . 2)) (ABORT 
. (generic_renaming_declaration . 2)) (BEGIN . (generic_renaming_declaration . 
2)) (CASE . (generic_renaming_declaration . 2)) (DECLARE . 
(generic_renaming_declaration . 2)) (DELAY . (generic_renaming_declaration . 
2)) (END . (generic_renaming_declaration . 2)) (ENTRY . 
(generic_renaming_declaration . 2)) (EXIT . (generic_renaming_declaration . 2)) 
(FOR . (generic_renaming_declaration . 2)) (FUNCTION . (generic [...]
-      ((default . error) (ACCEPT . (generic_renaming_declaration . 0)) (ABORT 
. (generic_renaming_declaration . 0)) (BEGIN . (generic_renaming_declaration . 
0)) (CASE . (generic_renaming_declaration . 0)) (DECLARE . 
(generic_renaming_declaration . 0)) (DELAY . (generic_renaming_declaration . 
0)) (END . (generic_renaming_declaration . 0)) (ENTRY . 
(generic_renaming_declaration . 0)) (EXIT . (generic_renaming_declaration . 0)) 
(FOR . (generic_renaming_declaration . 0)) (FUNCTION . (generic [...]
-      ((default . error) (ACCEPT . (generic_renaming_declaration . 1)) (ABORT 
. (generic_renaming_declaration . 1)) (BEGIN . (generic_renaming_declaration . 
1)) (CASE . (generic_renaming_declaration . 1)) (DECLARE . 
(generic_renaming_declaration . 1)) (DELAY . (generic_renaming_declaration . 
1)) (END . (generic_renaming_declaration . 1)) (ENTRY . 
(generic_renaming_declaration . 1)) (EXIT . (generic_renaming_declaration . 1)) 
(FOR . (generic_renaming_declaration . 1)) (FUNCTION . (generic [...]
-      ((default . error) (NEW . (abstract_limited_synchronized_opt . 0)))
-      ((default . error) (DIGITS .  1094) (WITH . (formal_type_definition . 
7)) (SEMICOLON . (formal_type_definition . 7)))
-      ((default . error) (WITH . (formal_type_definition . 5)) (SEMICOLON . 
(formal_type_definition . 5)))
-      ((default . error) (WITH . (formal_type_definition . 4)) (SEMICOLON . 
(formal_type_definition . 4)))
-      ((default . error) (WITH . (formal_type_definition . 3)) (SEMICOLON . 
(formal_type_definition . 3)))
-      ((default . error) (SEMICOLON .  1095))
-      ((default . error) (RIGHT_PAREN .  1096))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (WITH . (formal_type_definition . 0)) (SEMICOLON . 
(formal_type_definition . 0)))
-      ((default . error) (SEMICOLON .  1098))
-      ((default . error) (WITH . (formal_package_actual_part . 1)) (LEFT_PAREN 
.  1099) (DOT .  237) (SEMICOLON . (formal_package_actual_part . 1)) (TICK_1 .  
239))
-      ((default . error) (FUNCTION . (formal_subprogram_declaration . 2)) 
(PACKAGE . (formal_subprogram_declaration . 2)) (PRAGMA . 
(formal_subprogram_declaration . 2)) (PROCEDURE . 
(formal_subprogram_declaration . 2)) (TYPE . (formal_subprogram_declaration . 
2)) (USE . (formal_subprogram_declaration . 2)) (WITH . 
(formal_subprogram_declaration . 2)) (IDENTIFIER . 
(formal_subprogram_declaration . 2)))
-      ((default . error) (SEMICOLON .  1101))
-      ((default . error) (FUNCTION . (formal_subprogram_declaration . 1)) 
(PACKAGE . (formal_subprogram_declaration . 1)) (PRAGMA . 
(formal_subprogram_declaration . 1)) (PROCEDURE . 
(formal_subprogram_declaration . 1)) (TYPE . (formal_subprogram_declaration . 
1)) (USE . (formal_subprogram_declaration . 1)) (WITH . 
(formal_subprogram_declaration . 1)) (IDENTIFIER . 
(formal_subprogram_declaration . 1)))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (FUNCTION . (formal_object_declaration . 3)) (PACKAGE 
. (formal_object_declaration . 3)) (PRAGMA . (formal_object_declaration . 3)) 
(PROCEDURE . (formal_object_declaration . 3)) (TYPE . 
(formal_object_declaration . 3)) (USE . (formal_object_declaration . 3)) (WITH 
. (formal_object_declaration . 3)) (IDENTIFIER . (formal_object_declaration . 
3)))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (WITH . (expression_opt . 1)) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (SEMICOLON .  1104))
-      ((default . error) (IF .  1105))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (ELSE . 
(sequence_of_statements_opt . 1)) (ELSIF . (sequence_of_statements_opt . 1)) 
(END . (sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 
1)) (GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (PRAGMA 
.  16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) (WHILE . 
(block_label_opt . 1)) (LESS_L [...]
-      ((default . error) (ACCEPT . (if_statement . 3)) (ABORT . (if_statement 
. 3)) (BEGIN . (if_statement . 3)) (CASE . (if_statement . 3)) (DECLARE . 
(if_statement . 3)) (DELAY . (if_statement . 3)) (ELSE . (if_statement . 3)) 
(ELSIF . (if_statement . 3)) (END . (if_statement . 3)) (ENTRY . (if_statement 
. 3)) (EXCEPTION . (if_statement . 3)) (EXIT . (if_statement . 3)) (FOR . 
(if_statement . 3)) (FUNCTION . (if_statement . 3)) (GENERIC . (if_statement . 
3)) (GOTO . (if_statement . 3)) [...]
-      ((default . error) (END .  1107))
-      ((default . error) (SEMICOLON .  1108))
-      ((default . error) (ACCEPT . (package_body_stub . 0)) (ABORT . 
(package_body_stub . 0)) (BEGIN . (package_body_stub . 0)) (CASE . 
(package_body_stub . 0)) (DECLARE . (package_body_stub . 0)) (DELAY . 
(package_body_stub . 0)) (END . (package_body_stub . 0)) (ENTRY . 
(package_body_stub . 0)) (EXIT . (package_body_stub . 0)) (FOR . 
(package_body_stub . 0)) (FUNCTION . (package_body_stub . 0)) (GENERIC . 
(package_body_stub . 0)) (GOTO . (package_body_stub . 0)) (IF . 
(package_body_stub [...]
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXCEPTION . (sequence_of_statements_opt . 
1)) (EXIT .  5) (FOR . (block_label_opt . 1)) (GOTO .  9) (IF .  10) (LOOP . 
(block_label_opt . 1)) (NULL .  13) (PRAGMA .  16) (RAISE .  20) (REQUEUE .  
21) (RETURN .  22) (SELECT .  24) (WHILE . (block_label_opt . 1)) (LESS_LESS .  
31) (IDENTIFIER .  359) (STRING [...]
-      ((default . error) (SEMICOLON . (name_opt . 1)) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT . (generic_instantiation . 0)) (ABORT . 
(generic_instantiation . 0)) (BEGIN . (generic_instantiation . 0)) (CASE . 
(generic_instantiation . 0)) (DECLARE . (generic_instantiation . 0)) (DELAY . 
(generic_instantiation . 0)) (END . (generic_instantiation . 0)) (ENTRY . 
(generic_instantiation . 0)) (EXIT . (generic_instantiation . 0)) (FOR . 
(generic_instantiation . 0)) (FUNCTION . (generic_instantiation . 0)) (GENERIC 
. (generic_instantiation . 0)) (GOTO . ( [...]
-      ((default . error) (SEMICOLON . (package_specification . 1)))
-      ((default . error) (END .  1111))
-      ((default . error) (ACCEPT . (protected_body_stub . 0)) (ABORT . 
(protected_body_stub . 0)) (BEGIN . (protected_body_stub . 0)) (CASE . 
(protected_body_stub . 0)) (DECLARE . (protected_body_stub . 0)) (DELAY . 
(protected_body_stub . 0)) (END . (protected_body_stub . 0)) (ENTRY . 
(protected_body_stub . 0)) (EXIT . (protected_body_stub . 0)) (FOR . 
(protected_body_stub . 0)) (FUNCTION . (protected_body_stub . 0)) (GENERIC . 
(protected_body_stub . 0)) (GOTO . (protected_body_stub . 0) [...]
-      ((default . error) (WHEN . (parameter_profile_opt . 1)) (LEFT_PAREN .  
1112))
-      ((default . error) (IS . (aspect_specification_opt . 1)) (WITH .  336) 
(SEMICOLON . (aspect_specification_opt . 1)))
-      ((default . error) (END . (protected_operation_item_list . 0)) (ENTRY . 
(protected_operation_item_list . 0)) (FOR . (protected_operation_item_list . 
0)) (FUNCTION . (protected_operation_item_list . 0)) (NOT . 
(protected_operation_item_list . 0)) (OVERRIDING . 
(protected_operation_item_list . 0)) (PROCEDURE . 
(protected_operation_item_list . 0)))
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (SEMICOLON .  1117))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (END . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) (OVERRIDING .  14) 
(PACKAGE .  15) (PRAGMA .  16) (PRIVATE . (declarative_part_opt . 1)) 
(PROCEDURE . (overriding_indicator_opt . 2)) (PROTECTED .  19) (SUBTYPE .  25) 
(TASK .  26) (TYPE .  27) (USE .  28) (IDENTIFIER .  185))
-      ((default . error) (SEMICOLON . (protected_definition . 1)))
-      ((default . error) (END .  1120))
-      ((default . error) (ABS .  121) (DO . (expression_opt . 1)) (NEW .  122) 
(NOT .  123) (NULL .  124) (RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT . (extended_return_statement . 0)) (ABORT . 
(extended_return_statement . 0)) (BEGIN . (extended_return_statement . 0)) 
(CASE . (extended_return_statement . 0)) (DECLARE . (extended_return_statement 
. 0)) (DELAY . (extended_return_statement . 0)) (ELSE . 
(extended_return_statement . 0)) (ELSIF . (extended_return_statement . 0)) (END 
. (extended_return_statement . 0)) (ENTRY . (extended_return_statement . 0)) 
(EXCEPTION . (extended_return_statement . 0)) (E [...]
-      ((default . error) (IS . (aspect_specification_opt . 1)) (WITH .  336) 
(LEFT_PAREN .  235) (DOT .  237) (TICK_1 .  239))
-      ((default . error) (IS . (aspect_specification_opt . 1)) (WITH .  336))
-      ((default . error) (IS . (aspect_specification_opt . 1)) (WITH .  336))
-      ((default . error) (IS .  584))
-      ((default . error) (ACCEPT . (conditional_entry_call . 0)) (ABORT . 
(conditional_entry_call . 0)) (BEGIN . (conditional_entry_call . 0)) (CASE . 
(conditional_entry_call . 0)) (DECLARE . (conditional_entry_call . 0)) (DELAY . 
(conditional_entry_call . 0)) (ELSE . (conditional_entry_call . 0)) (ELSIF . 
(conditional_entry_call . 0)) (END . (conditional_entry_call . 0)) (ENTRY . 
(conditional_entry_call . 0)) (EXCEPTION . (conditional_entry_call . 0)) (EXIT 
. (conditional_entry_call . 0 [...]
-      ((default . error) (ACCEPT . (timed_entry_call . 0)) (ABORT . 
(timed_entry_call . 0)) (BEGIN . (timed_entry_call . 0)) (CASE . 
(timed_entry_call . 0)) (DECLARE . (timed_entry_call . 0)) (DELAY . 
(timed_entry_call . 0)) (ELSE . (timed_entry_call . 0)) (ELSIF . 
(timed_entry_call . 0)) (END . (timed_entry_call . 0)) (ENTRY . 
(timed_entry_call . 0)) (EXCEPTION . (timed_entry_call . 0)) (EXIT . 
(timed_entry_call . 0)) (FOR . (timed_entry_call . 0)) (FUNCTION . 
(timed_entry_call . 0)) (G [...]
-      ((default . error) (ACCEPT . (selective_accept . 0)) (ABORT . 
(selective_accept . 0)) (BEGIN . (selective_accept . 0)) (CASE . 
(selective_accept . 0)) (DECLARE . (selective_accept . 0)) (DELAY . 
(selective_accept . 0)) (ELSE . (selective_accept . 0)) (ELSIF . 
(selective_accept . 0)) (END . (selective_accept . 0)) (ENTRY . 
(selective_accept . 0)) (EXCEPTION . (selective_accept . 0)) (EXIT . 
(selective_accept . 0)) (FOR . (selective_accept . 0)) (FUNCTION . 
(selective_accept . 0)) (G [...]
-      ((default . error) (SEMICOLON .  1122))
-      ((default . error) (ACCEPT . (task_body_stub . 0)) (ABORT . 
(task_body_stub . 0)) (BEGIN . (task_body_stub . 0)) (CASE . (task_body_stub . 
0)) (DECLARE . (task_body_stub . 0)) (DELAY . (task_body_stub . 0)) (END . 
(task_body_stub . 0)) (ENTRY . (task_body_stub . 0)) (EXIT . (task_body_stub . 
0)) (FOR . (task_body_stub . 0)) (FUNCTION . (task_body_stub . 0)) (GENERIC . 
(task_body_stub . 0)) (GOTO . (task_body_stub . 0)) (IF . (task_body_stub . 0)) 
(LIMITED . (task_body_stub . 0)) (L [...]
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXCEPTION . (sequence_of_statements_opt . 
1)) (EXIT .  5) (FOR . (block_label_opt . 1)) (GOTO .  9) (IF .  10) (LOOP . 
(block_label_opt . 1)) (NULL .  13) (PRAGMA .  16) (RAISE .  20) (REQUEUE .  
21) (RETURN .  22) (SELECT .  24) (WHILE . (block_label_opt . 1)) (LESS_LESS .  
31) (IDENTIFIER .  359) (STRING [...]
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (END .  1125))
-      ((default . error) (END . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) (OVERRIDING .  14) 
(PACKAGE .  15) (PRAGMA .  16) (PRIVATE . (declarative_part_opt . 1)) 
(PROCEDURE . (overriding_indicator_opt . 2)) (PROTECTED .  19) (SUBTYPE .  25) 
(TASK .  26) (TYPE .  27) (USE .  28) (IDENTIFIER .  185))
-      ((default . error) (END . (task_definition . 0)))
-      ((default . error) (SEMICOLON .  1127))
-      ((default . error) (ACCESS . (null_exclusion_opt . 0)) (IDENTIFIER .  
1128) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (RIGHT_PAREN . (expression_opt . 1)) (MINUS 
.  127) (PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  
129) (IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (RIGHT_PAREN . (expression_opt . 1)) (MINUS 
.  127) (PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  
129) (IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (NULL . (abstract_tagged_limited_opt . 0)) (PRIVATE . 
(abstract_tagged_limited_opt . 0)) (RECORD . (abstract_tagged_limited_opt . 0)))
-      ((default . error) (RIGHT_PAREN .  1132) (COMMA .  958))
-      ((default . error) (RIGHT_PAREN . (index_subtype_definition_list . 1)) 
(COMMA . (index_subtype_definition_list . 1)))
-      ((default . error) (RIGHT_PAREN .  1133) (COMMA .  1134))
-      ((default . error) (MOD . (primary . 3)) (RANGE .  1135) (REM . (primary 
. 3)) (LEFT_PAREN .  618) (RIGHT_PAREN . (subtype_indication . 3)) (AMPERSAND . 
(primary . 3)) (COMMA . (subtype_indication . 3)) (DOT .  237) (DOT_DOT . 
(primary . 3)) (MINUS . (primary . 3)) (PLUS . (primary . 3)) (SLASH . (primary 
. 3)) (STAR . (primary . 3)) (STAR_STAR . (primary . 3)) (TICK_1 .  239))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (RANGE . (expression_opt . 1)) (WITH . (expression_opt . 1)) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (SEMICOLON . (expression_opt . 
1)) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (WITH . (type_definition . 5)) (SEMICOLON . 
(type_definition . 5)))
-      ((default . error) (WITH . (type_definition . 3)) (SEMICOLON . 
(type_definition . 3)))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (IS . (direct_name . 0)))
-      ((default . error) (IS . (direct_name . 1)))
-      ((default . error) (IS . (direct_name_opt . 0)))
-      ((default . error) (IS .  1141))
-      ((default . error) (CASE . (component_list . 4)) (END . (component_list 
. 4)) (FOR . (component_list . 4)) (WHEN . (component_list . 4)) (IDENTIFIER . 
(component_list . 4)))
-      ((default . error) (CASE . (component_list . 0)) (END . (component_list 
. 0)) (FOR . (component_list . 0)) (WHEN . (component_list . 0)) (IDENTIFIER . 
(component_list . 0)))
-      ((default . error) (CASE . (component_list . 1)) (END . (component_list 
. 1)) (FOR . (component_list . 1)) (WHEN . (component_list . 1)) (IDENTIFIER . 
(component_list . 1)))
-      ((default . error) (RECORD .  1142))
-      ((default . error) (ACCESS . (null_exclusion_opt . 1)) (ALIASED .  1143) 
(NOT .  741) (IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  
34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (WITH . (enumeration_type_definition . 0)) (SEMICOLON 
. (enumeration_type_definition . 0)))
-      ((default . error) (IDENTIFIER .  897) (CHARACTER_LITERAL .  898))
-      ((default . error) (AND .  1150) (WITH . (and_interface_list_opt . 1)))
-      ((default . error) (AND .  1150) (RANGE .  617) (WITH . 
((and_interface_list_opt . 1) (constraint_opt . 1))) (LEFT_PAREN .  618) (DOT . 
 237) (SEMICOLON . (constraint_opt . 1)) (TICK_1 .  239))
-      ((default . error) (SEMICOLON .  1155))
-      ((default . error) (ACCEPT . (full_type_declaration . 0)) (ABORT . 
(full_type_declaration . 0)) (BEGIN . (full_type_declaration . 0)) (CASE . 
(full_type_declaration . 0)) (DECLARE . (full_type_declaration . 0)) (DELAY . 
(full_type_declaration . 0)) (END . (full_type_declaration . 0)) (ENTRY . 
(full_type_declaration . 0)) (EXIT . (full_type_declaration . 0)) (FOR . 
(full_type_declaration . 0)) (FUNCTION . (full_type_declaration . 0)) (GENERIC 
. (full_type_declaration . 0)) (GOTO . ( [...]
-      ((default . error) (ACCEPT . (object_renaming_declaration . 2)) (ABORT . 
(object_renaming_declaration . 2)) (BEGIN . (object_renaming_declaration . 2)) 
(CASE . (object_renaming_declaration . 2)) (DECLARE . 
(object_renaming_declaration . 2)) (DELAY . (object_renaming_declaration . 2)) 
(END . (object_renaming_declaration . 2)) (ENTRY . (object_renaming_declaration 
. 2)) (EXIT . (object_renaming_declaration . 2)) (FOR . 
(object_renaming_declaration . 2)) (FUNCTION . (object_renaming_d [...]
-      ((default . error) (ACCEPT . (object_renaming_declaration . 1)) (ABORT . 
(object_renaming_declaration . 1)) (BEGIN . (object_renaming_declaration . 1)) 
(CASE . (object_renaming_declaration . 1)) (DECLARE . 
(object_renaming_declaration . 1)) (DELAY . (object_renaming_declaration . 1)) 
(END . (object_renaming_declaration . 1)) (ENTRY . (object_renaming_declaration 
. 1)) (EXIT . (object_renaming_declaration . 1)) (FOR . 
(object_renaming_declaration . 1)) (FUNCTION . (object_renaming_d [...]
-      ((default . error) (DO . (access_definition . 1)) (IS . 
(access_definition . 1)) (RENAMES . (access_definition . 1)) (WITH . 
(access_definition . 1)) (RIGHT_PAREN . (access_definition . 1)) (COLON_EQUAL . 
(access_definition . 1)) (SEMICOLON . (access_definition . 1)))
-      ((default . error) (DO . (access_definition . 0)) (IS . 
(access_definition . 0)) (RENAMES . (access_definition . 0)) (WITH . 
(access_definition . 0)) (RIGHT_PAREN . (access_definition . 0)) (COLON_EQUAL . 
(access_definition . 0)) (SEMICOLON . (access_definition . 0)))
-      ((default . error) (SEMICOLON .  1156))
-      ((default . error) (OTHERS .  913) (IDENTIFIER .  119) (STRING_LITERAL . 
 33) (CHARACTER_LITERAL .  34))
-      ((default . error) (OTHERS .  913) (IDENTIFIER .  119) (STRING_LITERAL . 
 33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 1)) 
(GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (PRAGMA .  
16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) (WHEN . 
(sequence_of_statements_opt . 1)) (WHILE . (block_label_opt . 1)) (LESS_LESS .  
31) (IDENTIFIER .  359) (STRING_LITE [...]
-      ((default . error) (SEMICOLON .  1160))
-      ((default . error) (ACCEPT . (loop_statement . 1)) (ABORT . 
(loop_statement . 1)) (BEGIN . (loop_statement . 1)) (CASE . (loop_statement . 
1)) (DECLARE . (loop_statement . 1)) (DELAY . (loop_statement . 1)) (ELSE . 
(loop_statement . 1)) (ELSIF . (loop_statement . 1)) (END . (loop_statement . 
1)) (ENTRY . (loop_statement . 1)) (EXCEPTION . (loop_statement . 1)) (EXIT . 
(loop_statement . 1)) (FOR . (loop_statement . 1)) (FUNCTION . (loop_statement 
. 1)) (GENERIC . (loop_statement . 1 [...]
-      ((default . error) (SEMICOLON .  1161))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (ACCEPT . (object_declaration . 4)) (ABORT . 
(object_declaration . 4)) (BEGIN . (object_declaration . 4)) (CASE . 
(object_declaration . 4)) (DECLARE . (object_declaration . 4)) (DELAY . 
(object_declaration . 4)) (END . (object_declaration . 4)) (ENTRY . 
(object_declaration . 4)) (EXIT . (object_declaration . 4)) (FOR . 
(object_declaration . 4)) (FUNCTION . (object_declaration . 4)) (GENERIC . 
(object_declaration . 4)) (GOTO . (object_declaration . 4)) (IF . (obje [...]
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (ACCEPT . (object_declaration . 5)) (ABORT . 
(object_declaration . 5)) (BEGIN . (object_declaration . 5)) (CASE . 
(object_declaration . 5)) (DECLARE . (object_declaration . 5)) (DELAY . 
(object_declaration . 5)) (END . (object_declaration . 5)) (ENTRY . 
(object_declaration . 5)) (EXIT . (object_declaration . 5)) (FOR . 
(object_declaration . 5)) (FUNCTION . (object_declaration . 5)) (GENERIC . 
(object_declaration . 5)) (GOTO . (object_declaration . 5)) (IF . (obje [...]
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (ACCEPT . (object_declaration . 3)) (ABORT . 
(object_declaration . 3)) (BEGIN . (object_declaration . 3)) (CASE . 
(object_declaration . 3)) (DECLARE . (object_declaration . 3)) (DELAY . 
(object_declaration . 3)) (END . (object_declaration . 3)) (ENTRY . 
(object_declaration . 3)) (EXIT . (object_declaration . 3)) (FOR . 
(object_declaration . 3)) (FUNCTION . (object_declaration . 3)) (GENERIC . 
(object_declaration . 3)) (GOTO . (object_declaration . 3)) (IF . (obje [...]
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (SEMICOLON .  1166))
-      ((default . error) (SEMICOLON .  1167))
-      ((default . error) (END .  1168))
-      ((default . error) (SEMICOLON .  1169))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (RIGHT_PAREN . (expression_opt . 1)) (COMMA 
. (expression_opt . 1)) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (RIGHT_PAREN . (case_expression_alternative_list . 
0)) (COMMA . (case_expression_alternative_list . 0)))
-      ((default . error) (RIGHT_PAREN . (if_expression . 1)))
-      ((default . error) (THEN .  1171))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (RIGHT_PAREN . (expression_opt . 1)) (MINUS 
.  127) (PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ELSE . (elsif_expression_list . 0)) (ELSIF . 
(elsif_expression_list . 0)) (RIGHT_PAREN . (elsif_expression_list . 0)))
-      ((default . error) (AND . (range_g . 0)) (DIGITS . (range_g . 0)) (DO . 
(range_g . 0)) (ELSE . (range_g . 0)) (ELSIF . (range_g . 0)) (IS . (range_g . 
0)) (LOOP . (range_g . 0)) (OF . (range_g . 0)) (OR . (range_g . 0)) (RANGE . 
(range_g . 0)) (THEN . (range_g . 0)) (WITH . (range_g . 0)) (XOR . (range_g . 
0)) (RIGHT_PAREN . (range_g . 0)) (BAR . (range_g . 0)) (COLON_EQUAL . (range_g 
. 0)) (COMMA . (range_g . 0)) (EQUAL_GREATER . (range_g . 0)) (SEMICOLON . 
(range_g . 0)))
-      ((default . error) (RANGE .  617) (LEFT_PAREN .  618) (RIGHT_PAREN . 
(subtype_indication . 1)) (BAR . (discrete_choice . 1)) (COMMA . 
(subtype_indication . 1)) (DOT .  237) (EQUAL_GREATER . (discrete_choice . 1)) 
(TICK_1 .  239))
-      ((default . error) (RIGHT_PAREN . (discrete_subtype_definition_list . 
0)) (COMMA . (discrete_subtype_definition_list . 0)))
-      ((default . error) (IDENTIFIER . (mod_clause_opt . 0)))
-      ((default . error) (RANGE .  1173))
-      ((default . error) (SEMICOLON .  1174))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (RIGHT_PAREN . (expression_opt . 1)) (MINUS 
.  127) (PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  
129) (IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (BOX .  1177))
-      ((default . error) (FUNCTION . (formal_type_declaration . 1)) (PACKAGE . 
(formal_type_declaration . 1)) (PRAGMA . (formal_type_declaration . 1)) 
(PROCEDURE . (formal_type_declaration . 1)) (TYPE . (formal_type_declaration . 
1)) (USE . (formal_type_declaration . 1)) (WITH . (formal_type_declaration . 
1)) (IDENTIFIER . (formal_type_declaration . 1)))
-      ((default . error) (WITH . (formal_type_definition . 2)) (SEMICOLON . 
(formal_type_definition . 2)))
-      ((default . error) (AND .  1150) (WITH . (and_interface_list_opt . 1)) 
(LEFT_PAREN .  235) (DOT .  237) (SEMICOLON . (and_interface_list_opt . 1)) 
(TICK_1 .  239))
-      ((default . error) (FUNCTION . (formal_type_declaration . 0)) (PACKAGE . 
(formal_type_declaration . 0)) (PRAGMA . (formal_type_declaration . 0)) 
(PROCEDURE . (formal_type_declaration . 0)) (TYPE . (formal_type_declaration . 
0)) (USE . (formal_type_declaration . 0)) (WITH . (formal_type_declaration . 
0)) (IDENTIFIER . (formal_type_declaration . 0)))
-      ((default . error) (ABS .  121) (CASE .  257) (FOR .  258) (IF .  259) 
(NEW .  122) (NOT .  260) (NULL .  124) (OTHERS .  262) (RAISE .  125) 
(LEFT_PAREN .  126) (RIGHT_PAREN . (association_opt . 5)) (BAR . 
(discrete_choice_list . 2)) (BOX .  1179) (COMMA . (association_opt . 5)) 
(EQUAL_GREATER . (discrete_choice_list . 2)) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  263))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (FUNCTION . (formal_subprogram_declaration . 0)) 
(PACKAGE . (formal_subprogram_declaration . 0)) (PRAGMA . 
(formal_subprogram_declaration . 0)) (PROCEDURE . 
(formal_subprogram_declaration . 0)) (TYPE . (formal_subprogram_declaration . 
0)) (USE . (formal_subprogram_declaration . 0)) (WITH . 
(formal_subprogram_declaration . 0)) (IDENTIFIER . 
(formal_subprogram_declaration . 0)))
-      ((default . error) (SEMICOLON .  1181))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (FUNCTION . (formal_object_declaration . 2)) (PACKAGE 
. (formal_object_declaration . 2)) (PRAGMA . (formal_object_declaration . 2)) 
(PROCEDURE . (formal_object_declaration . 2)) (TYPE . 
(formal_object_declaration . 2)) (USE . (formal_object_declaration . 2)) (WITH 
. (formal_object_declaration . 2)) (IDENTIFIER . (formal_object_declaration . 
2)))
-      ((default . error) (SEMICOLON .  1183))
-      ((default . error) (ELSE . (elsif_statement_item . 0)) (ELSIF . 
(elsif_statement_item . 0)) (END . (elsif_statement_item . 0)))
-      ((default . error) (IF .  1184))
-      ((default . error) (ACCEPT . (if_statement . 2)) (ABORT . (if_statement 
. 2)) (BEGIN . (if_statement . 2)) (CASE . (if_statement . 2)) (DECLARE . 
(if_statement . 2)) (DELAY . (if_statement . 2)) (ELSE . (if_statement . 2)) 
(ELSIF . (if_statement . 2)) (END . (if_statement . 2)) (ENTRY . (if_statement 
. 2)) (EXCEPTION . (if_statement . 2)) (EXIT . (if_statement . 2)) (FOR . 
(if_statement . 2)) (FUNCTION . (if_statement . 2)) (GENERIC . (if_statement . 
2)) (GOTO . (if_statement . 2)) [...]
-      ((default . error) (END .  1185))
-      ((default . error) (SEMICOLON .  1186))
-      ((default . error) (SEMICOLON . (name_opt . 1)) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (FOR .  1188) (RIGHT_PAREN . (parameter_specification 
. 4)) (SEMICOLON . (parameter_specification . 4)) (IDENTIFIER .  164))
-      ((default . error) (WHEN .  1189))
-      ((default . error) (WHEN . (entry_body_formal_part . 1)))
-      ((default . error) (SEMICOLON .  1190))
-      ((default . error) (AND .  1005) (WITH .  1191))
-      ((default . error) (ACCEPT . (protected_type_declaration . 1)) (ABORT . 
(protected_type_declaration . 1)) (BEGIN . (protected_type_declaration . 1)) 
(CASE . (protected_type_declaration . 1)) (DECLARE . 
(protected_type_declaration . 1)) (DELAY . (protected_type_declaration . 1)) 
(END . (protected_type_declaration . 1)) (ENTRY . (protected_type_declaration . 
1)) (EXIT . (protected_type_declaration . 1)) (FOR . 
(protected_type_declaration . 1)) (FUNCTION . (protected_type_declaration  [...]
-      ((default . error) (AND . (interface_list . 0)) (WITH . (interface_list 
. 0)) (LEFT_PAREN .  235) (DOT .  237) (SEMICOLON . (interface_list . 0)) 
(TICK_1 .  239))
-      ((default . error) (SEMICOLON .  1192))
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (DO . (extended_return_object_declaration . 0)) 
(SEMICOLON . (extended_return_object_declaration . 0)))
-      ((default . error) (ACCEPT . (asynchronous_select . 0)) (ABORT . 
(asynchronous_select . 0)) (BEGIN . (asynchronous_select . 0)) (CASE . 
(asynchronous_select . 0)) (DECLARE . (asynchronous_select . 0)) (DELAY . 
(asynchronous_select . 0)) (ELSE . (asynchronous_select . 0)) (ELSIF . 
(asynchronous_select . 0)) (END . (asynchronous_select . 0)) (ENTRY . 
(asynchronous_select . 0)) (EXCEPTION . (asynchronous_select . 0)) (EXIT . 
(asynchronous_select . 0)) (FOR . (asynchronous_select . 0)) [...]
-      ((default . error) (END .  1194))
-      ((default . error) (AND .  1005) (WITH .  1195))
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (END .  1197))
-      ((default . error) (ACCEPT . (single_task_declaration . 1)) (ABORT . 
(single_task_declaration . 1)) (BEGIN . (single_task_declaration . 1)) (CASE . 
(single_task_declaration . 1)) (DECLARE . (single_task_declaration . 1)) (DELAY 
. (single_task_declaration . 1)) (END . (single_task_declaration . 1)) (ENTRY . 
(single_task_declaration . 1)) (EXIT . (single_task_declaration . 1)) (FOR . 
(single_task_declaration . 1)) (FUNCTION . (single_task_declaration . 1)) 
(GENERIC . (single_task_dec [...]
-      ((default . error) (LEFT_PAREN . (name . 5)) (RIGHT_PAREN . 
(null_exclusion_opt_name_type . 2)) (COLON_EQUAL . 
(null_exclusion_opt_name_type . 2)) (DOT . (name . 5)) (SEMICOLON . 
(null_exclusion_opt_name_type . 2)) (TICK_1 . (name . 5)))
-      ((default . error) (LEFT_PAREN . (name . 2)) (RIGHT_PAREN . 
(null_exclusion_opt_name_type . 3)) (COLON_EQUAL . 
(null_exclusion_opt_name_type . 3)) (DOT . (name . 2)) (SEMICOLON . 
(null_exclusion_opt_name_type . 3)) (TICK_1 . (name . 2)))
-      ((default . error) (RIGHT_PAREN . (discriminant_specification_opt . 1)) 
(SEMICOLON . (discriminant_specification_opt . 1)))
-      ((default . error) (RIGHT_PAREN . (discriminant_specification_opt . 0)) 
(SEMICOLON . (discriminant_specification_opt . 0)))
-      ((default . error) (OF .  1198))
-      ((default . error) (OF .  1199))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (BOX .  1202) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL 
.  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (RANGE .  1035) (WITH . (real_range_specification_opt 
. 1)) (SEMICOLON . (real_range_specification_opt . 1)))
-      ((default . error) (DOT_DOT .  1204))
-      ((default . error) (AND .  1005) (WITH . (interface_type_definition . 
0)) (SEMICOLON . (interface_type_definition . 0)))
-      ((default . error) (AND .  1005) (WITH . (interface_type_definition . 
2)) (SEMICOLON . (interface_type_definition . 2)))
-      ((default . error) (WITH . (type_definition . 1)) (SEMICOLON . 
(type_definition . 1)))
-      ((default . error) (WHEN .  1205))
-      ((default . error) (WITH . (record_definition . 0)) (SEMICOLON . 
(record_definition . 0)))
-      ((default . error) (ACCESS . (null_exclusion_opt . 1)) (NOT .  741) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (WITH . (component_definition . 3)) (COLON_EQUAL . 
(component_definition . 3)) (SEMICOLON . (component_definition . 3)))
-      ((default . error) (WITH .  336) (COLON_EQUAL .  1210) (SEMICOLON . 
(aspect_specification_opt . 1)))
-      ((default . error) (WITH . (component_definition . 1)) (COLON_EQUAL . 
(component_definition . 1)) (SEMICOLON . (component_definition . 1)))
-      ((default . error) (AND .  1005) (WITH . (interface_type_definition . 
3)) (SEMICOLON . (interface_type_definition . 3)))
-      ((default . error) (AND .  1005) (WITH . (interface_type_definition . 
1)) (SEMICOLON . (interface_type_definition . 1)))
-      ((default . error) (RIGHT_PAREN . (enumeration_literal_list . 0)) (COMMA 
. (enumeration_literal_list . 0)))
-      ((default . error) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (WITH .  1213))
-      ((default . error) (WITH .  1214))
-      ((default . error) (WITH . (constraint_opt . 0)) (SEMICOLON . 
(constraint_opt . 0)))
-      ((default . error) (WITH . (derived_type_definition . 1)) (SEMICOLON . 
(derived_type_definition . 1)))
-      ((default . error) (ACCEPT . (private_type_declaration . 0)) (ABORT . 
(private_type_declaration . 0)) (BEGIN . (private_type_declaration . 0)) (CASE 
. (private_type_declaration . 0)) (DECLARE . (private_type_declaration . 0)) 
(DELAY . (private_type_declaration . 0)) (END . (private_type_declaration . 0)) 
(ENTRY . (private_type_declaration . 0)) (EXIT . (private_type_declaration . 
0)) (FOR . (private_type_declaration . 0)) (FUNCTION . 
(private_type_declaration . 0)) (GENERIC . (priv [...]
-      ((default . error) (ACCEPT . (object_renaming_declaration . 0)) (ABORT . 
(object_renaming_declaration . 0)) (BEGIN . (object_renaming_declaration . 0)) 
(CASE . (object_renaming_declaration . 0)) (DECLARE . 
(object_renaming_declaration . 0)) (DELAY . (object_renaming_declaration . 0)) 
(END . (object_renaming_declaration . 0)) (ENTRY . (object_renaming_declaration 
. 0)) (EXIT . (object_renaming_declaration . 0)) (FOR . 
(object_renaming_declaration . 0)) (FUNCTION . (object_renaming_d [...]
-      ((default . error) (BAR .  1064) (EQUAL_GREATER .  1215))
-      ((default . error) (BAR . (exception_choice_list . 0)) (EQUAL_GREATER . 
(exception_choice_list . 0)))
-      ((default . error) (END . (exception_handler . 1)) (WHEN . 
(exception_handler . 1)))
-      ((default . error) (ACCEPT . (block_statement . 0)) (ABORT . 
(block_statement . 0)) (BEGIN . (block_statement . 0)) (CASE . (block_statement 
. 0)) (DECLARE . (block_statement . 0)) (DELAY . (block_statement . 0)) (ELSE . 
(block_statement . 0)) (ELSIF . (block_statement . 0)) (END . (block_statement 
. 0)) (ENTRY . (block_statement . 0)) (EXCEPTION . (block_statement . 0)) (EXIT 
. (block_statement . 0)) (FOR . (block_statement . 0)) (FUNCTION . 
(block_statement . 0)) (GENERIC . (bloc [...]
-      ((default . error) (ACCEPT . (loop_statement . 0)) (ABORT . 
(loop_statement . 0)) (BEGIN . (loop_statement . 0)) (CASE . (loop_statement . 
0)) (DECLARE . (loop_statement . 0)) (DELAY . (loop_statement . 0)) (ELSE . 
(loop_statement . 0)) (ELSIF . (loop_statement . 0)) (END . (loop_statement . 
0)) (ENTRY . (loop_statement . 0)) (EXCEPTION . (loop_statement . 0)) (EXIT . 
(loop_statement . 0)) (FOR . (loop_statement . 0)) (FUNCTION . (loop_statement 
. 0)) (GENERIC . (loop_statement . 0 [...]
-      ((default . error) (SEMICOLON .  1216))
-      ((default . error) (SEMICOLON .  1217))
-      ((default . error) (SEMICOLON .  1218))
-      ((default . error) (SEMICOLON .  1219))
-      ((default . error) (ACCEPT . (generic_instantiation . 2)) (ABORT . 
(generic_instantiation . 2)) (BEGIN . (generic_instantiation . 2)) (CASE . 
(generic_instantiation . 2)) (DECLARE . (generic_instantiation . 2)) (DELAY . 
(generic_instantiation . 2)) (END . (generic_instantiation . 2)) (ENTRY . 
(generic_instantiation . 2)) (EXIT . (generic_instantiation . 2)) (FOR . 
(generic_instantiation . 2)) (FUNCTION . (generic_instantiation . 2)) (GENERIC 
. (generic_instantiation . 2)) (GOTO . ( [...]
-      ((default . error) (ACCEPT . (generic_instantiation . 1)) (ABORT . 
(generic_instantiation . 1)) (BEGIN . (generic_instantiation . 1)) (CASE . 
(generic_instantiation . 1)) (DECLARE . (generic_instantiation . 1)) (DELAY . 
(generic_instantiation . 1)) (END . (generic_instantiation . 1)) (ENTRY . 
(generic_instantiation . 1)) (EXIT . (generic_instantiation . 1)) (FOR . 
(generic_instantiation . 1)) (FUNCTION . (generic_instantiation . 1)) (GENERIC 
. (generic_instantiation . 1)) (GOTO . ( [...]
-      ((default . error) (SEMICOLON . (name_opt . 1)) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT . (accept_statement . 0)) (ABORT . 
(accept_statement . 0)) (BEGIN . (accept_statement . 0)) (CASE . 
(accept_statement . 0)) (DECLARE . (accept_statement . 0)) (DELAY . 
(accept_statement . 0)) (ELSE . (accept_statement . 0)) (ELSIF . 
(accept_statement . 0)) (END . (accept_statement . 0)) (ENTRY . 
(accept_statement . 0)) (EXCEPTION . (accept_statement . 0)) (EXIT . 
(accept_statement . 0)) (FOR . (accept_statement . 0)) (FUNCTION . 
(accept_statement . 0)) (G [...]
-      ((default . error) (RIGHT_PAREN . (case_expression_alternative . 0)) 
(COMMA . (case_expression_alternative . 0)))
-      ((default . error) (ABS .  121) (ELSE . (expression_opt . 1)) (ELSIF . 
(expression_opt . 1)) (NEW .  122) (NOT .  123) (NULL .  124) (RAISE .  125) 
(LEFT_PAREN .  126) (RIGHT_PAREN . (expression_opt . 1)) (MINUS .  127) (PLUS . 
 128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (RIGHT_PAREN . (if_expression . 0)))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT . (record_representation_clause . 0)) (ABORT 
. (record_representation_clause . 0)) (BEGIN . (record_representation_clause . 
0)) (CASE . (record_representation_clause . 0)) (DECLARE . 
(record_representation_clause . 0)) (DELAY . (record_representation_clause . 
0)) (END . (record_representation_clause . 0)) (ENTRY . 
(record_representation_clause . 0)) (EXIT . (record_representation_clause . 0)) 
(FOR . (record_representation_clause . 0)) (FUNCTION . (record_ [...]
-      ((default . error) (RIGHT_PAREN . (parameter_specification . 2)) 
(SEMICOLON . (parameter_specification . 2)))
-      ((default . error) (LEFT_PAREN .  235) (RIGHT_PAREN . 
(parameter_specification . 1)) (COLON_EQUAL .  1223) (DOT .  237) (SEMICOLON . 
(parameter_specification . 1)) (TICK_1 .  239))
-      ((default . error) (WITH . (formal_type_definition . 6)) (SEMICOLON . 
(formal_type_definition . 6)))
-      ((default . error) (WITH . ( 1224 (formal_derived_type_definition . 1))) 
(SEMICOLON . (formal_derived_type_definition . 1)))
-      ((default . error) (RIGHT_PAREN .  1225))
-      ((default . error) (SEMICOLON .  1226))
-      ((default . error) (FUNCTION . (formal_object_declaration . 1)) (PACKAGE 
. (formal_object_declaration . 1)) (PRAGMA . (formal_object_declaration . 1)) 
(PROCEDURE . (formal_object_declaration . 1)) (TYPE . 
(formal_object_declaration . 1)) (USE . (formal_object_declaration . 1)) (WITH 
. (formal_object_declaration . 1)) (IDENTIFIER . (formal_object_declaration . 
1)))
-      ((default . error) (SEMICOLON .  1227))
-      ((default . error) (ACCEPT . (if_statement . 1)) (ABORT . (if_statement 
. 1)) (BEGIN . (if_statement . 1)) (CASE . (if_statement . 1)) (DECLARE . 
(if_statement . 1)) (DELAY . (if_statement . 1)) (ELSE . (if_statement . 1)) 
(ELSIF . (if_statement . 1)) (END . (if_statement . 1)) (ENTRY . (if_statement 
. 1)) (EXCEPTION . (if_statement . 1)) (EXIT . (if_statement . 1)) (FOR . 
(if_statement . 1)) (FUNCTION . (if_statement . 1)) (GENERIC . (if_statement . 
1)) (GOTO . (if_statement . 1)) [...]
-      ((default . error) (SEMICOLON .  1228))
-      ((default . error) (SEMICOLON . (name_opt . 1)) (IDENTIFIER .  119) 
(STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT . (package_body . 1)) (ABORT . (package_body 
. 1)) (BEGIN . (package_body . 1)) (CASE . (package_body . 1)) (DECLARE . 
(package_body . 1)) (DELAY . (package_body . 1)) (END . (package_body . 1)) 
(ENTRY . (package_body . 1)) (EXIT . (package_body . 1)) (FOR . (package_body . 
1)) (FUNCTION . (package_body . 1)) (GENERIC . (package_body . 1)) (GOTO . 
(package_body . 1)) (IF . (package_body . 1)) (LIMITED . (package_body . 1)) 
(LOOP . (package_body . 1)) (NOT [...]
-      ((default . error) (SEMICOLON . (package_specification . 0)))
-      ((default . error) (IDENTIFIER .  1230))
-      ((default . error) (ABS .  121) (IS . (expression_opt . 1)) (NEW .  122) 
(NOT .  123) (NULL .  124) (RAISE .  125) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  
33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ACCEPT . (protected_body . 0)) (ABORT . 
(protected_body . 0)) (BEGIN . (protected_body . 0)) (CASE . (protected_body . 
0)) (DECLARE . (protected_body . 0)) (DELAY . (protected_body . 0)) (END . 
(protected_body . 0)) (ENTRY . (protected_body . 0)) (EXIT . (protected_body . 
0)) (FOR . (protected_body . 0)) (FUNCTION . (protected_body . 0)) (GENERIC . 
(protected_body . 0)) (GOTO . (protected_body . 0)) (IF . (protected_body . 0)) 
(LIMITED . (protected_body . 0)) (L [...]
-      ((default . error) (END . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) (OVERRIDING .  14) 
(PACKAGE .  15) (PRAGMA .  16) (PRIVATE . (declarative_part_opt . 1)) 
(PROCEDURE . (overriding_indicator_opt . 2)) (PROTECTED .  19) (SUBTYPE .  25) 
(TASK .  26) (TYPE .  27) (USE .  28) (IDENTIFIER .  185))
-      ((default . error) (ACCEPT . (single_protected_declaration . 0)) (ABORT 
. (single_protected_declaration . 0)) (BEGIN . (single_protected_declaration . 
0)) (CASE . (single_protected_declaration . 0)) (DECLARE . 
(single_protected_declaration . 0)) (DELAY . (single_protected_declaration . 
0)) (END . (single_protected_declaration . 0)) (ENTRY . 
(single_protected_declaration . 0)) (EXIT . (single_protected_declaration . 0)) 
(FOR . (single_protected_declaration . 0)) (FUNCTION . (single_ [...]
-      ((default . error) (SEMICOLON . (protected_definition . 0)))
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (END . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) (OVERRIDING .  14) 
(PACKAGE .  15) (PRAGMA .  16) (PRIVATE . (declarative_part_opt . 1)) 
(PROCEDURE . (overriding_indicator_opt . 2)) (PROTECTED .  19) (SUBTYPE .  25) 
(TASK .  26) (TYPE .  27) (USE .  28) (IDENTIFIER .  185))
-      ((default . error) (SEMICOLON .  1235))
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (ACCESS . (null_exclusion_opt . 1)) (ALIASED .  1143) 
(NOT .  741) (IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  
34))
-      ((default . error) (ACCESS . (null_exclusion_opt . 1)) (ALIASED .  1143) 
(NOT .  741) (IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  
34))
-      ((default . error) (RIGHT_PAREN . (index_subtype_definition_list . 0)) 
(COMMA . (index_subtype_definition_list . 0)))
-      ((default . error) (RANGE .  1239) (LEFT_PAREN .  235) (DOT .  237) 
(TICK_1 .  239))
-      ((default . error) (RIGHT_PAREN . (index_subtype_definition . 0)) (COMMA 
. (index_subtype_definition . 0)))
-      ((default . error) (WITH . (type_definition . 4)) (SEMICOLON . 
(type_definition . 4)))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  260) (NULL .  124) 
(OTHERS .  262) (RAISE .  125) (LEFT_PAREN .  126) (BAR . (discrete_choice_list 
. 2)) (EQUAL_GREATER . (discrete_choice_list . 2)) (MINUS .  127) (PLUS .  128) 
(NUMERIC_LITERAL .  129) (IDENTIFIER .  119) (STRING_LITERAL .  33) 
(CHARACTER_LITERAL .  34))
-      ((default . error) (END .  1242) (WHEN .  1205))
-      ((default . error) (END . (variant_list . 1)) (WHEN . (variant_list . 
1)))
-      ((default . error) (WITH . (component_definition . 2)) (COLON_EQUAL . 
(component_definition . 2)) (SEMICOLON . (component_definition . 2)))
-      ((default . error) (WITH . (component_definition . 0)) (COLON_EQUAL . 
(component_definition . 0)) (SEMICOLON . (component_definition . 0)))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (WITH . (expression_opt . 1)) (LEFT_PAREN .  126) (MINUS .  127) 
(PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (SEMICOLON .  1245))
-      ((default . error) (AND .  1005) (WITH . (and_interface_list_opt . 0)) 
(SEMICOLON . (and_interface_list_opt . 0)))
-      ((default . error) (PRIVATE .  1246))
-      ((default . error) (NULL .  704) (RECORD .  707))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXIT .  5) (FOR . (block_label_opt . 1)) 
(GOTO .  9) (IF .  10) (LOOP . (block_label_opt . 1)) (NULL .  13) (PRAGMA .  
16) (RAISE .  20) (REQUEUE .  21) (RETURN .  22) (SELECT .  24) (WHEN . 
(sequence_of_statements_opt . 1)) (WHILE . (block_label_opt . 1)) (LESS_LESS .  
31) (IDENTIFIER .  359) (STRING_LITE [...]
-      ((default . error) (ACCEPT . (object_declaration . 1)) (ABORT . 
(object_declaration . 1)) (BEGIN . (object_declaration . 1)) (CASE . 
(object_declaration . 1)) (DECLARE . (object_declaration . 1)) (DELAY . 
(object_declaration . 1)) (END . (object_declaration . 1)) (ENTRY . 
(object_declaration . 1)) (EXIT . (object_declaration . 1)) (FOR . 
(object_declaration . 1)) (FUNCTION . (object_declaration . 1)) (GENERIC . 
(object_declaration . 1)) (GOTO . (object_declaration . 1)) (IF . (obje [...]
-      ((default . error) (ACCEPT . (object_declaration . 2)) (ABORT . 
(object_declaration . 2)) (BEGIN . (object_declaration . 2)) (CASE . 
(object_declaration . 2)) (DECLARE . (object_declaration . 2)) (DELAY . 
(object_declaration . 2)) (END . (object_declaration . 2)) (ENTRY . 
(object_declaration . 2)) (EXIT . (object_declaration . 2)) (FOR . 
(object_declaration . 2)) (FUNCTION . (object_declaration . 2)) (GENERIC . 
(object_declaration . 2)) (GOTO . (object_declaration . 2)) (IF . (obje [...]
-      ((default . error) (ACCEPT . (object_declaration . 0)) (ABORT . 
(object_declaration . 0)) (BEGIN . (object_declaration . 0)) (CASE . 
(object_declaration . 0)) (DECLARE . (object_declaration . 0)) (DELAY . 
(object_declaration . 0)) (END . (object_declaration . 0)) (ENTRY . 
(object_declaration . 0)) (EXIT . (object_declaration . 0)) (FOR . 
(object_declaration . 0)) (FUNCTION . (object_declaration . 0)) (GENERIC . 
(object_declaration . 0)) (GOTO . (object_declaration . 0)) (IF . (obje [...]
-      ((default . error) (ACCEPT . (entry_declaration . 0)) (ABORT . 
(entry_declaration . 0)) (BEGIN . (entry_declaration . 0)) (CASE . 
(entry_declaration . 0)) (DECLARE . (entry_declaration . 0)) (DELAY . 
(entry_declaration . 0)) (END . (entry_declaration . 0)) (ENTRY . 
(entry_declaration . 0)) (EXIT . (entry_declaration . 0)) (FOR . 
(entry_declaration . 0)) (FUNCTION . (entry_declaration . 0)) (GENERIC . 
(entry_declaration . 0)) (GOTO . (entry_declaration . 0)) (IF . 
(entry_declaration [...]
-      ((default . error) (SEMICOLON .  1249))
-      ((default . error) (ELSE . (elsif_expression_item . 0)) (ELSIF . 
(elsif_expression_item . 0)) (RIGHT_PAREN . (elsif_expression_item . 0)))
-      ((default . error) (DOT_DOT .  1250))
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(RAISE .  125) (LEFT_PAREN .  126) (RIGHT_PAREN . (expression_opt . 1)) (MINUS 
.  127) (PLUS .  128) (SEMICOLON . (expression_opt . 1)) (NUMERIC_LITERAL .  
129) (IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (PRIVATE .  1252))
-      ((default . error) (WITH . (formal_package_actual_part . 0)) (SEMICOLON 
. (formal_package_actual_part . 0)))
-      ((default . error) (FUNCTION . (formal_package_declaration . 0)) 
(PACKAGE . (formal_package_declaration . 0)) (PRAGMA . 
(formal_package_declaration . 0)) (PROCEDURE . (formal_package_declaration . 
0)) (TYPE . (formal_package_declaration . 0)) (USE . 
(formal_package_declaration . 0)) (WITH . (formal_package_declaration . 0)) 
(IDENTIFIER . (formal_package_declaration . 0)))
-      ((default . error) (FUNCTION . (formal_object_declaration . 0)) (PACKAGE 
. (formal_object_declaration . 0)) (PRAGMA . (formal_object_declaration . 0)) 
(PROCEDURE . (formal_object_declaration . 0)) (TYPE . 
(formal_object_declaration . 0)) (USE . (formal_object_declaration . 0)) (WITH 
. (formal_object_declaration . 0)) (IDENTIFIER . (formal_object_declaration . 
0)))
-      ((default . error) (ACCEPT . (if_statement . 0)) (ABORT . (if_statement 
. 0)) (BEGIN . (if_statement . 0)) (CASE . (if_statement . 0)) (DECLARE . 
(if_statement . 0)) (DELAY . (if_statement . 0)) (ELSE . (if_statement . 0)) 
(ELSIF . (if_statement . 0)) (END . (if_statement . 0)) (ENTRY . (if_statement 
. 0)) (EXCEPTION . (if_statement . 0)) (EXIT . (if_statement . 0)) (FOR . 
(if_statement . 0)) (FUNCTION . (if_statement . 0)) (GENERIC . (if_statement . 
0)) (GOTO . (if_statement . 0)) [...]
-      ((default . error) (SEMICOLON .  1253))
-      ((default . error) (IN .  1254))
-      ((default . error) (IS .  1255))
-      ((default . error) (SEMICOLON .  1256))
-      ((default . error) (SEMICOLON .  1257))
-      ((default . error) (END .  1258))
-      ((default . error) (ACCEPT . (task_type_declaration . 1)) (ABORT . 
(task_type_declaration . 1)) (BEGIN . (task_type_declaration . 1)) (CASE . 
(task_type_declaration . 1)) (DECLARE . (task_type_declaration . 1)) (DELAY . 
(task_type_declaration . 1)) (END . (task_type_declaration . 1)) (ENTRY . 
(task_type_declaration . 1)) (EXIT . (task_type_declaration . 1)) (FOR . 
(task_type_declaration . 1)) (FUNCTION . (task_type_declaration . 1)) (GENERIC 
. (task_type_declaration . 1)) (GOTO . ( [...]
-      ((default . error) (SEMICOLON .  1259))
-      ((default . error) (WITH . (array_type_definition . 1)) (COLON_EQUAL . 
(array_type_definition . 1)) (SEMICOLON . (array_type_definition . 1)))
-      ((default . error) (WITH . (array_type_definition . 0)) (COLON_EQUAL . 
(array_type_definition . 0)) (SEMICOLON . (array_type_definition . 0)))
-      ((default . error) (BOX .  1202))
-      ((default . error) (WITH . (real_range_specification_opt . 0)) 
(SEMICOLON . (real_range_specification_opt . 0)))
-      ((default . error) (BAR .  444) (EQUAL_GREATER .  1260))
-      ((default . error) (CASE .  1261))
-      ((default . error) (END . (variant_list . 0)) (WHEN . (variant_list . 
0)))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (CASE . (component_declaration . 1)) (END . 
(component_declaration . 1)) (FOR . (component_declaration . 1)) (WHEN . 
(component_declaration . 1)) (IDENTIFIER . (component_declaration . 1)))
-      ((default . error) (WITH .  336) (SEMICOLON . (aspect_specification_opt 
. 1)))
-      ((default . error) (WITH . (derived_type_definition . 0)) (SEMICOLON . 
(derived_type_definition . 0)))
-      ((default . error) (END . (exception_handler . 0)) (WHEN . 
(exception_handler . 0)))
-      ((default . error) (ACCEPT . (subprogram_body . 0)) (ABORT . 
(subprogram_body . 0)) (BEGIN . (subprogram_body . 0)) (CASE . (subprogram_body 
. 0)) (DECLARE . (subprogram_body . 0)) (DELAY . (subprogram_body . 0)) (END . 
(subprogram_body . 0)) (ENTRY . (subprogram_body . 0)) (EXIT . (subprogram_body 
. 0)) (FOR . (subprogram_body . 0)) (FUNCTION . (subprogram_body . 0)) (GENERIC 
. (subprogram_body . 0)) (GOTO . (subprogram_body . 0)) (IF . (subprogram_body 
. 0)) (LIMITED . (subprogra [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  123) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (RIGHT_PAREN . (parameter_specification . 0)) 
(SEMICOLON . (parameter_specification . 0)))
-      ((default . error) (WITH . (formal_derived_type_definition . 0)) 
(SEMICOLON . (formal_derived_type_definition . 0)))
-      ((default . error) (ACCEPT . (package_body . 0)) (ABORT . (package_body 
. 0)) (BEGIN . (package_body . 0)) (CASE . (package_body . 0)) (DECLARE . 
(package_body . 0)) (DELAY . (package_body . 0)) (END . (package_body . 0)) 
(ENTRY . (package_body . 0)) (EXIT . (package_body . 0)) (FOR . (package_body . 
0)) (FUNCTION . (package_body . 0)) (GENERIC . (package_body . 0)) (GOTO . 
(package_body . 0)) (IF . (package_body . 0)) (LIMITED . (package_body . 0)) 
(LOOP . (package_body . 0)) (NOT [...]
-      ((default . error) (ABS .  121) (NEW .  122) (NOT .  473) (NULL .  124) 
(LEFT_PAREN .  126) (MINUS .  127) (PLUS .  128) (NUMERIC_LITERAL .  129) 
(IDENTIFIER .  119) (STRING_LITERAL .  33) (CHARACTER_LITERAL .  34))
-      ((default . error) (BEGIN . (declarative_part_opt . 1)) (ENTRY . 
(overriding_indicator_opt . 2)) (FOR .  183) (FUNCTION . 
(overriding_indicator_opt . 2)) (GENERIC .  8) (NOT .  12) (OVERRIDING .  14) 
(PACKAGE .  15) (PRAGMA .  16) (PROCEDURE . (overriding_indicator_opt . 2)) 
(PROTECTED .  19) (SUBTYPE .  25) (TASK .  26) (TYPE .  27) (USE .  28) 
(IDENTIFIER .  185))
-      ((default . error) (ACCEPT . (protected_type_declaration . 0)) (ABORT . 
(protected_type_declaration . 0)) (BEGIN . (protected_type_declaration . 0)) 
(CASE . (protected_type_declaration . 0)) (DECLARE . 
(protected_type_declaration . 0)) (DELAY . (protected_type_declaration . 0)) 
(END . (protected_type_declaration . 0)) (ENTRY . (protected_type_declaration . 
0)) (EXIT . (protected_type_declaration . 0)) (FOR . 
(protected_type_declaration . 0)) (FUNCTION . (protected_type_declaration  [...]
-      ((default . error) (ACCEPT . (task_body . 0)) (ABORT . (task_body . 0)) 
(BEGIN . (task_body . 0)) (CASE . (task_body . 0)) (DECLARE . (task_body . 0)) 
(DELAY . (task_body . 0)) (END . (task_body . 0)) (ENTRY . (task_body . 0)) 
(EXIT . (task_body . 0)) (FOR . (task_body . 0)) (FUNCTION . (task_body . 0)) 
(GENERIC . (task_body . 0)) (GOTO . (task_body . 0)) (IF . (task_body . 0)) 
(LIMITED . (task_body . 0)) (LOOP . (task_body . 0)) (NOT . (task_body . 0)) 
(NULL . (task_body . 0)) (OV [...]
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (ACCEPT . (single_task_declaration . 0)) (ABORT . 
(single_task_declaration . 0)) (BEGIN . (single_task_declaration . 0)) (CASE . 
(single_task_declaration . 0)) (DECLARE . (single_task_declaration . 0)) (DELAY 
. (single_task_declaration . 0)) (END . (single_task_declaration . 0)) (ENTRY . 
(single_task_declaration . 0)) (EXIT . (single_task_declaration . 0)) (FOR . 
(single_task_declaration . 0)) (FUNCTION . (single_task_declaration . 0)) 
(GENERIC . (single_task_dec [...]
-      ((default . error) (CASE .  884) (END . (component_list_opt . 1)) (FOR . 
 183) (NULL .  885) (WHEN . (component_list_opt . 1)) (IDENTIFIER .  164))
-      ((default . error) (SEMICOLON .  1269))
-      ((default . error) (SEMICOLON .  1270))
-      ((default . error) (SEMICOLON .  1271))
-      ((default . error) (SEMICOLON .  1272))
-      ((default . error) (RIGHT_PAREN .  1273))
-      ((default . error) (BEGIN .  1274))
-      ((default . error) (SEMICOLON .  1275))
-      ((default . error) (END . (variant . 0)) (WHEN . (variant . 0)))
-      ((default . error) (CASE . (variant_part . 0)) (END . (variant_part . 
0)) (FOR . (variant_part . 0)) (WHEN . (variant_part . 0)) (IDENTIFIER . 
(variant_part . 0)))
-      ((default . error) (CASE . (component_declaration . 0)) (END . 
(component_declaration . 0)) (FOR . (component_declaration . 0)) (WHEN . 
(component_declaration . 0)) (IDENTIFIER . (component_declaration . 0)))
-      ((default . error) (ACCEPT . (private_extension_declaration . 0)) (ABORT 
. (private_extension_declaration . 0)) (BEGIN . (private_extension_declaration 
. 0)) (CASE . (private_extension_declaration . 0)) (DECLARE . 
(private_extension_declaration . 0)) (DELAY . (private_extension_declaration . 
0)) (END . (private_extension_declaration . 0)) (ENTRY . 
(private_extension_declaration . 0)) (EXIT . (private_extension_declaration . 
0)) (FOR . (private_extension_declaration . 0)) (FUNCTION  [...]
-      ((default . error) (END . (component_clause . 0)) (IDENTIFIER . 
(component_clause . 0)))
-      ((default . error) (WHEN . (parameter_profile_opt . 1)) (LEFT_PAREN .  
430))
-      ((default . error) (ACCEPT .  1) (ABORT .  2) (BEGIN . (block_label_opt 
. 1)) (CASE .  3) (DECLARE . (block_label_opt . 1)) (DELAY .  4) (END . 
(sequence_of_statements_opt . 1)) (EXCEPTION . (sequence_of_statements_opt . 
1)) (EXIT .  5) (FOR . (block_label_opt . 1)) (GOTO .  9) (IF .  10) (LOOP . 
(block_label_opt . 1)) (NULL .  13) (PRAGMA .  16) (RAISE .  20) (REQUEUE .  
21) (RETURN .  22) (SELECT .  24) (WHILE . (block_label_opt . 1)) (LESS_LESS .  
31) (IDENTIFIER .  359) (STRING [...]
-      ((default . error) (ACCEPT . (task_type_declaration . 0)) (ABORT . 
(task_type_declaration . 0)) (BEGIN . (task_type_declaration . 0)) (CASE . 
(task_type_declaration . 0)) (DECLARE . (task_type_declaration . 0)) (DELAY . 
(task_type_declaration . 0)) (END . (task_type_declaration . 0)) (ENTRY . 
(task_type_declaration . 0)) (EXIT . (task_type_declaration . 0)) (FOR . 
(task_type_declaration . 0)) (FUNCTION . (task_type_declaration . 0)) (GENERIC 
. (task_type_declaration . 0)) (GOTO . ( [...]
-      ((default . error) (WHEN . (entry_body_formal_part . 0)))
-      ((default . error) (END .  1278))
-      ((default . error) (SEMICOLON . (identifier_opt . 1)) (IDENTIFIER .  
149))
-      ((default . error) (SEMICOLON .  1280))
-      ((default . error) (END . (entry_body . 0)) (ENTRY . (entry_body . 0)) 
(FOR . (entry_body . 0)) (FUNCTION . (entry_body . 0)) (NOT . (entry_body . 0)) 
(OVERRIDING . (entry_body . 0)) (PROCEDURE . (entry_body . 0)))]
-     [((abstract_subprogram_declaration . 35)(accept_statement . 
36)(aspect_clause . 37)(assignment_statement . 38)(asynchronous_select . 
39)(at_clause . 40)(attribute_reference . 41)(block_label . 42)(block_label_opt 
. 43)(block_statement . 44)(body_g . 45)(body_stub . 46)(case_statement . 
47)(compilation_unit . 48)(compilation_unit_list . 49)(compound_statement . 
50)(conditional_entry_call . 51)(declaration . 52)(delay_statement . 
53)(entry_declaration . 54)(enumeration_representation_ [...]
-      nil
-      ((attribute_reference . 41)(name . 120)(qualified_expression . 
92)(selected_component . 97))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 132)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 148)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((identifier_opt . 150))
-      ((attribute_reference . 153)(direct_name . 154)(iterator_specification . 
155)(iterator_specification_opt . 156)(name . 157)(qualified_expression . 
92)(selected_component . 97))
-      ((attribute_reference . 41)(name . 158)(qualified_expression . 
92)(selected_component . 97))
-      ((formal_object_declaration . 165)(formal_subprogram_declaration . 
166)(formal_type_declaration . 167)(formal_package_declaration . 
168)(generic_formal_parameter_declarations . 
169)(generic_formal_parameter_declaration . 170)(identifier_list . 
171)(pragma_g . 172)(use_clause . 173))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 175)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 181)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 186)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renaming_declaration . 66)(generic_subprogram_declara [...]
-      ((attribute_reference . 41)(name . 187)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((attribute_reference . 41)(name . 192)(qualified_expression . 
92)(selected_component . 97))
-      ((attribute_reference . 41)(name . 193)(qualified_expression . 
92)(selected_component . 97))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 195)(extended_return_object_declaration . 
196)(extended_return_object_declaration_opt . 197)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(raise_expression . 
136)(relation_and_list . 137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list  
[...]
-      nil
-      ((accept_statement . 201)(attribute_reference . 41)(delay_alternative . 
202)(delay_statement . 203)(entry_call_alternative . 204)(name . 
205)(procedure_call_statement . 206)(qualified_expression . 
92)(selected_component . 97)(select_alternative . 207)(select_alternative_list 
. 208)(select_alternative_list_opt . 209)(triggering_alternative . 210))
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name_list . 218)(name . 
219)(qualified_expression . 92)(selected_component . 97))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 220)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((attribute_reference . 41)(name_list . 221)(name . 
219)(qualified_expression . 92)(selected_component . 97))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((iteration_scheme . 228))
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((abstract_subprogram_declaration . 35)(accept_statement . 
36)(aspect_clause . 37)(assignment_statement . 38)(asynchronous_select . 
39)(at_clause . 40)(attribute_reference . 41)(block_label . 42)(block_label_opt 
. 43)(block_statement . 44)(body_g . 45)(body_stub . 46)(case_statement . 
47)(compilation_unit . 229)(compound_statement . 50)(conditional_entry_call . 
51)(declaration . 52)(delay_statement . 53)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_decl [...]
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((function_specification . 61)(package_specification . 
231)(procedure_specification . 87)(subprogram_specification . 232))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      nil
-      nil
-      ((function_specification . 245)(procedure_specification . 
246)(subprogram_specification . 247))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((actual_parameter_part . 250)(actual_parameter_part_opt . 251))
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      ((aggregate . 130)(attribute_reference . 41)(name . 134)(primary . 
253)(qualified_expression . 92)(selected_component . 97))
-      ((attribute_reference . 41)(name . 254)(qualified_expression . 
92)(selected_component . 97))
-      ((aggregate . 130)(attribute_reference . 41)(name . 134)(primary . 
255)(qualified_expression . 92)(selected_component . 97))
-      nil
-      ((attribute_reference . 41)(name . 256)(qualified_expression . 
92)(selected_component . 97))
-      ((aggregate . 130)(association_opt . 264)(association_list . 
265)(attribute_reference . 41)(case_expression . 
266)(conditional_quantified_expression . 267)(discrete_choice . 
268)(discrete_choice_list . 269)(expression . 270)(expression_opt . 271)(factor 
. 133)(if_expression . 272)(name . 273)(primary . 135)(qualified_expression . 
92)(quantified_expression . 274)(raise_expression . 136)(range_g . 
275)(relation_and_list . 137)(relation_and_then_list . 138)(relation_or_list . 
139)(rel [...]
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((relational_operator . 295))
-      ((multiplying_operator . 300))
-      ((binary_adding_operator . 304))
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(selected_component . 97)(term . 
144)(term_list . 305))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 306)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      ((actual_parameter_part . 240)(formal_part . 
318)(parameter_and_result_profile . 319)(result_profile . 320)(tick . 241))
-      ((attribute_reference . 41)(name . 321)(qualified_expression . 
92)(selected_component . 97))
-      ((attribute_reference . 41)(name . 322)(qualified_expression . 
92)(selected_component . 97))
-      ((attribute_reference . 41)(name . 323)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((function_specification . 61)(procedure_specification . 
87)(subprogram_specification . 326))
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((formal_object_declaration . 165)(formal_subprogram_declaration . 
166)(formal_type_declaration . 167)(formal_package_declaration . 
168)(generic_formal_parameter_declaration . 327)(identifier_list . 
171)(pragma_g . 172)(use_clause . 173))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name_list . 332)(name . 
219)(qualified_expression . 92)(selected_component . 97))
-      nil
-      nil
-      ((attribute_reference . 41)(name . 333)(qualified_expression . 
92)(selected_component . 97))
-      ((actual_parameter_part . 240)(aspect_specification_opt . 337)(tick . 
241))
-      nil
-      ((attribute_reference . 153)(direct_name . 154)(name . 
157)(qualified_expression . 92)(selected_component . 97))
-      ((attribute_reference . 41)(name_list . 341)(name . 
219)(qualified_expression . 92)(selected_component . 97))
-      nil
-      nil
-      ((actual_parameter_part . 240)(formal_part . 343)(parameter_profile_opt 
. 344)(tick . 241))
-      nil
-      nil
-      ((aspect_specification_opt . 347))
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 356)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 358)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      nil
-      ((accept_statement . 36)(actual_parameter_part . 
240)(assignment_statement . 38)(asynchronous_select . 39)(attribute_reference . 
41)(block_label . 42)(block_label_opt . 43)(block_statement . 
44)(case_statement . 47)(compound_statement . 50)(conditional_entry_call . 
51)(delay_statement . 53)(exit_statement . 57)(extended_return_statement . 
59)(goto_label . 68)(if_statement . 70)(loop_statement . 72)(name . 
73)(pragma_g . 83)(procedure_call_statement . 86)(qualified_expression . 92)( 
[...]
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aspect_specification_opt . 375))
-      ((discriminant_part_opt . 377))
-      nil
-      ((attribute_reference . 41)(name_list . 379)(name . 
219)(qualified_expression . 92)(selected_component . 97))
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      nil
-      nil
-      ((access_definition . 386)(null_exclusion_opt . 387))
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 
68)(handled_sequence_of_statements . 388)(if_statement . 70)(loop_statement . 
72)(name . 73)(pragma_g . 83)(procedure_call_statement . 86)(qualified_expressi 
[...]
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 392)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      ((iterator_specification . 155)(iterator_specification_opt . 156))
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      nil
-      nil
-      ((attribute_reference . 41)(name . 397)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((aspect_specification_opt . 399))
-      ((aliased_opt . 403))
-      nil
-      ((aggregate . 130)(association_opt . 264)(association_list . 
405)(attribute_reference . 41)(case_expression . 
266)(conditional_quantified_expression . 406)(discrete_choice . 
268)(discrete_choice_list . 269)(expression . 407)(factor . 133)(if_expression 
. 272)(name . 273)(primary . 135)(qualified_expression . 
92)(quantified_expression . 274)(raise_expression . 136)(range_g . 
408)(range_list . 409)(relation_and_list . 137)(relation_and_then_list . 
138)(relation_or_list . 139)(relatio [...]
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 410)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      nil
-      nil
-      ((aggregate . 419)(attribute_reference . 41)(attribute_designator . 
420)(name . 421)(qualified_expression . 92)(selected_component . 97))
-      nil
-      ((attribute_reference . 41)(name . 423)(qualified_expression . 
92)(selected_component . 97))
-      ((attribute_reference . 41)(name . 424)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      nil
-      ((aspect_specification_opt . 429))
-      nil
-      ((aggregate . 130)(association_opt . 264)(association_list . 
405)(attribute_reference . 41)(case_expression . 
266)(conditional_quantified_expression . 406)(discrete_choice . 
268)(discrete_choice_list . 269)(expression . 407)(factor . 133)(if_expression 
. 272)(name . 273)(primary . 135)(qualified_expression . 
92)(quantified_expression . 274)(raise_expression . 136)(range_g . 
275)(relation_and_list . 137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 1 [...]
-      nil
-      ((formal_part . 343)(parameter_profile_opt . 431))
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 433)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((quantifier . 436))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 437)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((aggregate . 130)(attribute_reference . 41)(name . 134)(primary . 
255)(qualified_expression . 92)(selected_component . 97))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 447))
-      nil
-      nil
-      ((relational_operator . 295))
-      ((case_statement_alternative . 450)(case_statement_alternative_list . 
451))
-      ((aggregate . 130)(attribute_reference . 41)(name . 134)(primary . 
452)(qualified_expression . 92)(selected_component . 97))
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(raise_expression . 136)(relation 
. 453)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list 
. 145)(unary_adding_operator . 146))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(raise_expression . 136)(relation 
. 455)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list 
. 145)(unary_adding_operator . 146))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(raise_expression . 136)(relation 
. 457)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list 
. 145)(unary_adding_operator . 146))
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(raise_expression . 136)(relation 
. 459)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list 
. 145)(unary_adding_operator . 146))
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(raise_expression . 136)(relation 
. 461)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list 
. 145)(unary_adding_operator . 146))
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(raise_expression . 136)(relation 
. 462)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list 
. 145)(unary_adding_operator . 146))
-      ((aggregate . 130)(attribute_reference . 41)(factor . 
133)(membership_choice_list . 463)(membership_choice . 464)(name . 273)(primary 
. 135)(qualified_expression . 92)(range_g . 465)(selected_component . 
97)(simple_expression . 466)(term . 144)(term_list . 145)(unary_adding_operator 
. 146))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(selected_component . 
97)(simple_expression . 468)(term . 144)(term_list . 145)(unary_adding_operator 
. 146))
-      nil
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 469)(name . 
134)(primary . 135)(qualified_expression . 92)(selected_component . 97))
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(selected_component . 97)(term . 
470))
-      ((binary_adding_operator . 304))
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 472)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(discrete_subtype_definition 
. 475)(factor . 133)(name . 476)(primary . 135)(qualified_expression . 
92)(range_g . 477)(selected_component . 97)(simple_expression . 
478)(subtype_indication . 479)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((attribute_reference . 41)(name . 481)(qualified_expression . 
92)(selected_component . 97))
-      ((attribute_reference . 41)(name . 483)(qualified_expression . 
92)(selected_component . 97)(subtype_indication . 484))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 485)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((aggregate . 488))
-      ((access_definition . 489)(null_exclusion_opt . 490))
-      ((aggregate . 130)(association_opt . 264)(association_list . 
405)(attribute_reference . 41)(case_expression . 
266)(conditional_quantified_expression . 406)(discrete_choice . 
268)(discrete_choice_list . 269)(expression . 407)(factor . 
133)(identifier_list . 492)(if_expression . 272)(name . 
273)(parameter_specification . 493)(parameter_specification_list . 494)(primary 
. 135)(qualified_expression . 92)(quantified_expression . 274)(raise_expression 
. 136)(range_g . 408)(range_list . 4 [...]
-      ((result_profile . 495))
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      ((actual_parameter_part . 240)(tick . 241))
-      ((actual_parameter_part . 240)(tick . 241))
-      ((discriminant_part_opt . 499))
-      ((attribute_reference . 41)(name . 500)(qualified_expression . 
92)(selected_component . 97))
-      ((aspect_specification_opt . 502))
-      nil
-      ((mode_opt . 505))
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      ((attribute_reference . 41)(name_list . 507)(name . 
219)(qualified_expression . 92)(selected_component . 97))
-      nil
-      ((actual_parameter_part . 240)(aspect_specification_opt . 510)(tick . 
241))
-      nil
-      ((attribute_reference . 41)(name . 512)(qualified_expression . 
92)(selected_component . 97))
-      ((aggregate . 130)(association_opt . 264)(association_list . 
513)(attribute_reference . 41)(discrete_choice . 268)(discrete_choice_list . 
269)(expression . 407)(factor . 133)(name . 273)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(range_g . 
275)(relation_and_list . 137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 276)(term . 144)(term_li [...]
-      nil
-      ((aggregate . 130)(association_opt . 264)(association_list . 
515)(attribute_reference . 41)(case_expression . 
266)(conditional_quantified_expression . 516)(discrete_choice . 
268)(discrete_choice_list . 269)(expression . 407)(factor . 133)(if_expression 
. 272)(name . 273)(primary . 135)(qualified_expression . 
92)(quantified_expression . 274)(raise_expression . 136)(range_g . 
275)(relation_and_list . 137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 1 [...]
-      nil
-      nil
-      nil
-      ((access_definition . 386)(null_exclusion_opt . 387))
-      nil
-      nil
-      ((aspect_specification_opt . 519))
-      ((discriminant_part_opt . 520))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 522)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      nil
-      ((aliased_opt . 524))
-      nil
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 
68)(handled_sequence_of_statements . 525)(if_statement . 70)(loop_statement . 
72)(name . 73)(pragma_g . 83)(procedure_call_statement . 86)(qualified_expressi 
[...]
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      nil
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      nil
-      nil
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      ((delay_alternative . 531)(delay_statement . 532))
-      nil
-      nil
-      ((accept_statement . 201)(delay_alternative . 202)(delay_statement . 
532)(select_alternative . 533))
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      nil
-      nil
-      ((attribute_reference . 41)(name . 483)(qualified_expression . 
92)(selected_component . 97)(subtype_indication . 537))
-      ((aspect_specification_opt . 539))
-      ((discriminant_part_opt . 540))
-      nil
-      ((discriminant_specification_opt . 544)(discriminant_specification_list 
. 545)(identifier_list . 546))
-      nil
-      ((attribute_reference . 41)(name_list . 549)(name . 
219)(qualified_expression . 92)(selected_component . 97))
-      nil
-      ((attribute_reference . 41)(name . 551)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 556)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      nil
-      nil
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 559)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renaming_declaration . 66)(generic_subprogram_declara [...]
-      nil
-      nil
-      nil
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      ((actual_parameter_part . 240)(aspect_specification_opt . 337)(tick . 
241))
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((constant_opt . 568))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      ((formal_part . 343)(parameter_profile_opt . 575))
-      ((actual_parameter_part . 240)(formal_part . 
318)(parameter_and_result_profile . 319)(result_profile . 320)(tick . 241))
-      ((actual_parameter_part . 240)(formal_part . 343)(parameter_profile_opt 
. 344)(tick . 241))
-      ((paren_expression . 579))
-      nil
-      nil
-      ((attribute_reference . 41)(name . 583)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((identifier_list . 492)(parameter_specification . 
493)(parameter_specification_list . 494))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 588)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      nil
-      ((iterator_specification . 590))
-      nil
-      ((attribute_reference . 41)(name . 592)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 595)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((aggregate . 130)(association_opt . 596)(attribute_reference . 
41)(discrete_choice . 268)(discrete_choice_list . 269)(expression . 407)(factor 
. 133)(name . 273)(primary . 135)(qualified_expression . 92)(raise_expression . 
136)(range_g . 275)(relation_and_list . 137)(relation_and_then_list . 
138)(relation_or_list . 139)(relation_or_else_list . 140)(relation_xor_list . 
141)(relation . 142)(selected_component . 97)(simple_expression . 276)(term . 
144)(term_list . 145)(unary_adding_o [...]
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(discrete_choice . 
597)(expression . 598)(factor . 133)(name . 273)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(range_g . 
275)(relation_and_list . 137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 276)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 600)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((aggregate . 130)(association_opt . 264)(association_list . 
602)(attribute_reference . 41)(discrete_choice . 268)(discrete_choice_list . 
269)(expression . 407)(factor . 133)(name . 273)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(range_g . 
275)(relation_and_list . 137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 276)(term . 144)(term_li [...]
-      ((aggregate . 419)(attribute_reference . 41)(attribute_designator . 
420)(name . 421)(qualified_expression . 92)(selected_component . 97))
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(selected_component . 
97)(simple_expression . 604)(term . 144)(term_list . 145)(unary_adding_operator 
. 146))
-      ((aggregate . 130)(attribute_reference . 41)(discrete_choice . 
268)(discrete_choice_list . 605)(expression . 598)(factor . 133)(name . 
273)(primary . 135)(qualified_expression . 92)(raise_expression . 136)(range_g 
. 275)(relation_and_list . 137)(relation_and_then_list . 138)(relation_or_list 
. 139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 276)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((case_statement_alternative . 607))
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(raise_expression . 136)(relation 
. 608)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list 
. 145)(unary_adding_operator . 146))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(raise_expression . 136)(relation 
. 609)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list 
. 145)(unary_adding_operator . 146))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(raise_expression . 136)(relation 
. 610)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list 
. 145)(unary_adding_operator . 146))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(raise_expression . 136)(relation 
. 611)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list 
. 145)(unary_adding_operator . 146))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 
133)(membership_choice_list . 613)(membership_choice . 464)(name . 273)(primary 
. 135)(qualified_expression . 92)(range_g . 465)(selected_component . 
97)(simple_expression . 466)(term . 144)(term_list . 145)(unary_adding_operator 
. 146))
-      nil
-      nil
-      ((multiplying_operator . 300))
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(name . 134)(primary . 
255)(qualified_expression . 92)(selected_component . 97))
-      ((aggregate . 130)(attribute_reference . 41)(discrete_subtype_definition 
. 616)(factor . 133)(name . 476)(primary . 135)(qualified_expression . 
92)(range_g . 477)(selected_component . 97)(simple_expression . 
478)(subtype_indication . 479)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((actual_parameter_part . 240)(constraint . 619)(index_constraint . 
620)(tick . 447))
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 621)(qualified_expression . 
92)(selected_component . 97))
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      ((actual_parameter_part . 240)(constraint . 619)(index_constraint . 
620)(tick . 241))
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 625)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((mod_clause_opt . 627))
-      nil
-      nil
-      ((attribute_reference . 41)(name . 629)(name_opt . 
630)(qualified_expression . 92)(selected_component . 97))
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 634)(qualified_expression . 
92)(selected_component . 97))
-      ((attribute_reference . 41)(name . 635)(qualified_expression . 
92)(selected_component . 97))
-      ((attribute_reference . 41)(name . 636)(qualified_expression . 
92)(selected_component . 97))
-      ((aspect_specification_opt . 638))
-      ((actual_parameter_part . 240)(tick . 241))
-      ((attribute_reference . 41)(name . 643)(qualified_expression . 
92)(selected_component . 97)(subprogram_default . 644))
-      nil
-      nil
-      nil
-      ((access_definition . 647)(null_exclusion_opt . 648))
-      ((elsif_statement_item . 652)(elsif_statement_list . 653))
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 657)(qualified_expression . 
92)(selected_component . 97))
-      ((actual_parameter_part . 240)(aspect_specification_opt . 658)(tick . 
241))
-      nil
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 659)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aspect_specification_opt . 664))
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 666)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      nil
-      nil
-      ((constant_opt . 670))
-      nil
-      ((function_specification . 61)(overriding_indicator_opt . 
675)(package_body . 78)(procedure_specification . 87)(proper_body . 
676)(protected_body . 89)(subprogram_body . 105)(task_body . 111))
-      ((accept_statement . 678)(delay_alternative . 679)(delay_statement . 
532))
-      nil
-      nil
-      nil
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      nil
-      nil
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      ((aspect_specification_opt . 686))
-      nil
-      nil
-      ((aspect_specification_opt . 689))
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 691)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((abstract_limited_synchronized_opt . 712)(abstract_limited_opt . 
713)(abstract_tagged_limited_opt . 714)(access_definition . 
715)(array_type_definition . 716)(derived_type_definition . 
717)(enumeration_type_definition . 718)(interface_type_definition . 
719)(null_exclusion_opt . 720)(type_definition . 721))
-      nil
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      ((attribute_reference . 41)(name . 723)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((attribute_reference . 41)(name . 724)(qualified_expression . 
92)(selected_component . 97))
-      ((general_access_modifier_opt . 728)(protected_opt . 729))
-      ((actual_parameter_part . 240)(tick . 241))
-      ((identifier_opt . 731))
-      ((exception_handler . 733)(exception_handler_list . 
734)(exception_handler_list_opt . 735)(pragma_g . 736))
-      nil
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 
68)(handled_sequence_of_statements . 737)(if_statement . 70)(loop_statement . 
72)(name . 73)(pragma_g . 83)(procedure_call_statement . 86)(qualified_expressi 
[...]
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 740)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      ((access_definition . 742)(array_type_definition . 
743)(attribute_reference . 41)(name . 483)(null_exclusion_opt . 
720)(qualified_expression . 92)(selected_component . 97)(subtype_indication . 
744))
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
273)(primary . 135)(qualified_expression . 92)(range_g . 
745)(selected_component . 97)(simple_expression . 478)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(discrete_subtype_definition 
. 746)(factor . 133)(identifier_list . 492)(name . 476)(parameter_specification 
. 493)(parameter_specification_list . 494)(primary . 135)(qualified_expression 
. 92)(range_g . 477)(selected_component . 97)(simple_expression . 
478)(subtype_indication . 479)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((aspect_specification_opt . 747))
-      nil
-      nil
-      ((aggregate . 130)(association_opt . 264)(association_list . 
750)(attribute_reference . 41)(case_expression . 
266)(conditional_quantified_expression . 751)(discrete_choice . 
268)(discrete_choice_list . 269)(expression . 270)(expression_opt . 752)(factor 
. 133)(if_expression . 272)(name . 273)(primary . 135)(qualified_expression . 
92)(quantified_expression . 274)(raise_expression . 136)(range_g . 
275)(relation_and_list . 137)(relation_and_then_list . 138)(relation_or_list . 
139)(rel [...]
-      ((aspect_specification_opt . 753))
-      ((aspect_specification_opt . 754))
-      ((aspect_specification_opt . 755))
-      ((aspect_specification_opt . 756))
-      ((actual_parameter_part . 240)(aspect_specification_opt . 757)(tick . 
241))
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 758)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 
68)(handled_sequence_of_statements . 759)(if_statement . 70)(loop_statement . 
72)(name . 73)(pragma_g . 83)(procedure_call_statement . 86)(qualified_expressi 
[...]
-      nil
-      nil
-      ((case_expression_alternative . 761)(case_expression_alternative_list . 
762))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 764)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 
133)(membership_choice . 770)(name . 273)(primary . 135)(qualified_expression . 
92)(range_g . 465)(selected_component . 97)(simple_expression . 466)(term . 
144)(term_list . 145)(unary_adding_operator . 146))
-      nil
-      nil
-      ((attribute_reference . 41)(name . 771)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
273)(primary . 135)(qualified_expression . 92)(range_g . 
772)(selected_component . 97)(simple_expression . 478)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((aggregate . 130)(association_opt . 264)(association_list . 
405)(attribute_reference . 41)(case_expression . 
266)(conditional_quantified_expression . 406)(discrete_choice . 
268)(discrete_choice_list . 269)(discrete_subtype_definition . 
774)(discrete_subtype_definition_list . 775)(expression . 407)(factor . 
133)(if_expression . 272)(name . 476)(primary . 135)(qualified_expression . 
92)(quantified_expression . 274)(raise_expression . 136)(range_g . 
776)(range_list . 409)(relation_an [...]
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      ((attribute_reference . 41)(name . 771)(qualified_expression . 
92)(selected_component . 97))
-      ((attribute_reference . 41)(name . 778)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      nil
-      nil
-      ((component_clause . 782)(component_clause_list . 783))
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      ((aliased_opt . 784))
-      nil
-      ((identifier_list . 492)(parameter_specification . 785))
-      ((actual_parameter_part . 240)(aspect_specification_opt . 786)(tick . 
241))
-      ((actual_parameter_part . 240)(aspect_specification_opt . 787)(tick . 
241))
-      ((actual_parameter_part . 240)(aspect_specification_opt . 788)(tick . 
241))
-      ((abstract_limited_synchronized_opt . 797)(abstract_tagged_limited_opt . 
798)(access_definition . 799)(array_type_definition . 
800)(formal_type_definition . 801)(formal_derived_type_definition . 
802)(interface_type_definition . 803)(null_exclusion_opt . 720))
-      nil
-      nil
-      ((aspect_specification_opt . 806)(attribute_reference . 41)(name . 
643)(qualified_expression . 92)(selected_component . 97)(subprogram_default . 
807))
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      ((aspect_specification_opt . 808))
-      nil
-      nil
-      ((aspect_specification_opt . 810))
-      ((attribute_reference . 41)(name . 811)(qualified_expression . 
92)(selected_component . 97))
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 813)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      ((elsif_statement_item . 817))
-      nil
-      ((aspect_specification_opt . 818))
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 819)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      ((actual_parameter_part . 240)(aspect_specification_opt . 820)(tick . 
241))
-      nil
-      nil
-      nil
-      nil
-      ((aspect_specification_opt . 826))
-      ((aspect_clause . 828)(at_clause . 40)(entry_body . 
829)(enumeration_representation_clause . 55)(expression_function_declaration . 
830)(function_specification . 61)(null_procedure_declaration . 
831)(overriding_indicator_opt . 832)(procedure_specification . 
87)(protected_operation_item . 833)(protected_operation_item_list . 
834)(protected_operation_item_list_opt . 835)(record_representation_clause . 
94)(subprogram_body . 836)(subprogram_declaration . 837))
-      nil
-      ((attribute_reference . 41)(interface_list . 839)(name . 
840)(qualified_expression . 92)(selected_component . 97))
-      nil
-      nil
-      nil
-      nil
-      ((access_definition . 844)(attribute_reference . 41)(name . 
483)(null_exclusion_opt . 720)(qualified_expression . 
92)(return_subtype_indication . 845)(selected_component . 
97)(subtype_indication . 846))
-      nil
-      nil
-      nil
-      nil
-      ((function_specification . 61)(procedure_specification . 
87)(subprogram_specification . 851))
-      nil
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aspect_specification_opt . 859))
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 860)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      nil
-      ((attribute_reference . 41)(interface_list . 863)(name . 
840)(qualified_expression . 92)(selected_component . 97))
-      nil
-      nil
-      nil
-      nil
-      ((discriminant_specification_opt . 866)(identifier_list . 546))
-      ((access_definition . 869)(attribute_reference . 41)(name . 
870)(null_exclusion_opt . 720)(null_exclusion_opt_name_type . 
871)(qualified_expression . 92)(selected_component . 872))
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 877)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 878)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 880)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(selected_component . 
97)(simple_expression . 883)(term . 144)(term_list . 145)(unary_adding_operator 
. 146))
-      ((aspect_clause . 886)(at_clause . 40)(component_declaration . 
887)(component_item . 888)(component_list . 889)(component_list_opt . 
890)(enumeration_representation_clause . 55)(identifier_list . 
891)(record_representation_clause . 94)(variant_part . 892))
-      nil
-      nil
-      nil
-      ((enumeration_literal . 899)(enumeration_literal_list . 900))
-      nil
-      nil
-      ((record_definition . 904))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aspect_specification_opt . 905))
-      nil
-      ((actual_parameter_part . 240)(aspect_specification_opt . 906)(tick . 
241))
-      ((actual_parameter_part . 240)(aspect_specification_opt . 907)(tick . 
241))
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 908)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((attribute_reference . 41)(name . 911)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((attribute_reference . 41)(exception_choice . 
915)(exception_choice_list . 916)(name . 917)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((exception_handler . 918))
-      nil
-      nil
-      nil
-      ((identifier_opt . 920))
-      nil
-      nil
-      nil
-      ((aspect_specification_opt . 925))
-      ((aspect_specification_opt . 927))
-      ((aspect_specification_opt . 929))
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 932)(qualified_expression . 
92)(selected_component . 97))
-      ((attribute_reference . 41)(name . 933)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(discrete_choice . 
268)(discrete_choice_list . 944)(expression . 598)(factor . 133)(name . 
273)(primary . 135)(qualified_expression . 92)(raise_expression . 136)(range_g 
. 275)(relation_and_list . 137)(relation_and_then_list . 138)(relation_or_list 
. 139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 276)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 946)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((elsif_expression_item . 949)(elsif_expression_list . 950))
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 952)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      nil
-      nil
-      ((actual_parameter_part . 240)(constraint . 955)(index_constraint . 
620)(tick . 241))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(name . 134)(primary . 
255)(qualified_expression . 92)(selected_component . 97))
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 959)(qualified_expression . 
92)(selected_component . 97))
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 960)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      ((component_clause . 963))
-      ((access_definition . 964)(mode_opt . 965)(null_exclusion_opt . 720))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aspect_specification_opt . 974))
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aspect_specification_opt . 978))
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 979)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((aspect_specification_opt . 981))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 983)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((actual_parameter_part . 240)(aspect_specification_opt . 986)(tick . 
241))
-      nil
-      nil
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 629)(name_opt . 
996)(qualified_expression . 92)(selected_component . 97))
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 997)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((function_specification . 245)(procedure_specification . 
246)(subprogram_specification . 1000))
-      nil
-      ((aspect_clause . 828)(at_clause . 40)(entry_body . 
829)(enumeration_representation_clause . 55)(expression_function_declaration . 
830)(function_specification . 61)(null_procedure_declaration . 
831)(overriding_indicator_opt . 832)(procedure_specification . 
87)(protected_operation_item . 1001)(record_representation_clause . 
94)(subprogram_body . 836)(subprogram_declaration . 837))
-      nil
-      nil
-      nil
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 666)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      ((identifier_opt . 1007))
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 1008)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_rena [...]
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 1011)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      nil
-      ((aspect_specification_opt . 1014))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 691)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      nil
-      nil
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 1024)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_rena [...]
-      ((identifier_opt . 1025))
-      nil
-      nil
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(discrete_subtype_definition 
. 774)(discrete_subtype_definition_list . 1030)(factor . 
133)(index_subtype_definition . 1031)(index_subtype_definition_list . 
1032)(name . 1033)(primary . 135)(qualified_expression . 92)(range_g . 
477)(selected_component . 97)(simple_expression . 478)(subtype_indication . 
479)(term . 144)(term_list . 145)(unary_adding_operator . 146))
-      ((real_range_specification_opt . 1036))
-      ((real_range_specification_opt . 1037))
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((direct_name . 1043)(direct_name_opt . 1044))
-      nil
-      nil
-      nil
-      nil
-      ((aspect_clause . 886)(at_clause . 40)(component_declaration . 
887)(component_item . 1046)(enumeration_representation_clause . 
55)(identifier_list . 891)(record_representation_clause . 94)(variant_part . 
1047))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 483)(qualified_expression . 
92)(selected_component . 97)(subtype_indication . 1054))
-      ((attribute_reference . 41)(name . 1055)(qualified_expression . 
92)(selected_component . 97))
-      ((aspect_specification_opt . 1056))
-      nil
-      nil
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      ((formal_part . 318)(parameter_and_result_profile . 1060)(result_profile 
. 320))
-      ((formal_part . 343)(parameter_profile_opt . 1061))
-      ((actual_parameter_part . 240)(aspect_specification_opt . 1062)(tick . 
241))
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      ((identifier_opt . 1066))
-      nil
-      ((identifier_opt . 1068))
-      nil
-      ((attribute_reference . 41)(name . 771)(qualified_expression . 
92)(selected_component . 97))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1069)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1071)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1073)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((formal_part . 343)(parameter_profile_opt . 1075))
-      nil
-      ((actual_parameter_part . 240)(aspect_specification_opt . 1076)(tick . 
241))
-      ((actual_parameter_part . 240)(aspect_specification_opt . 1077)(tick . 
241))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 
68)(handled_sequence_of_statements . 1078)(if_statement . 70)(loop_statement . 
72)(name . 73)(pragma_g . 83)(procedure_call_statement . 86)(qualified_express 
[...]
-      ((identifier_opt . 1079))
-      nil
-      ((case_expression_alternative . 1081))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1082)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1083)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((elsif_expression_item . 1085))
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 1087)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(discrete_subtype_definition 
. 1088)(factor . 133)(name . 476)(primary . 135)(qualified_expression . 
92)(range_g . 477)(selected_component . 97)(simple_expression . 
478)(subtype_indication . 479)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(selected_component . 
97)(simple_expression . 1090)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      nil
-      ((null_exclusion_opt . 1093))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 1097)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      nil
-      ((actual_parameter_part . 240)(formal_package_actual_part . 1100)(tick . 
241))
-      nil
-      nil
-      nil
-      ((aspect_specification_opt . 1102))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1103)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      nil
-      nil
-      nil
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 
68)(handled_sequence_of_statements . 1109)(if_statement . 70)(loop_statement . 
72)(name . 73)(pragma_g . 83)(procedure_call_statement . 86)(qualified_express 
[...]
-      ((attribute_reference . 41)(name . 629)(name_opt . 
1110)(qualified_expression . 92)(selected_component . 97))
-      nil
-      nil
-      nil
-      nil
-      ((entry_body_formal_part . 1113)(formal_part . 
343)(parameter_profile_opt . 1114))
-      ((aspect_specification_opt . 429))
-      nil
-      ((identifier_opt . 1115))
-      ((attribute_reference . 41)(interface_list . 1116)(name . 
840)(qualified_expression . 92)(selected_component . 97))
-      nil
-      ((attribute_reference . 41)(name . 1118)(qualified_expression . 
92)(selected_component . 97))
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 666)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1121)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((actual_parameter_part . 240)(aspect_specification_opt . 510)(tick . 
241))
-      ((aspect_specification_opt . 519))
-      ((aspect_specification_opt . 539))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 
68)(handled_sequence_of_statements . 1123)(if_statement . 70)(loop_statement . 
72)(name . 73)(pragma_g . 83)(procedure_call_statement . 86)(qualified_express 
[...]
-      ((attribute_reference . 41)(interface_list . 1124)(name . 
840)(qualified_expression . 92)(selected_component . 97))
-      nil
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 691)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      nil
-      nil
-      ((attribute_reference . 41)(name . 870)(qualified_expression . 
92)(selected_component . 1129))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1130)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1131)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      nil
-      nil
-      ((actual_parameter_part . 240)(constraint . 619)(index_constraint . 
620)(tick . 447))
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1136)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(selected_component . 
97)(simple_expression . 1137)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      ((attribute_reference . 41)(interface_list . 1138)(name . 
840)(qualified_expression . 92)(selected_component . 97))
-      ((attribute_reference . 41)(interface_list . 1139)(name . 
840)(qualified_expression . 92)(selected_component . 97))
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(selected_component . 
97)(simple_expression . 1140)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((access_definition . 1144)(attribute_reference . 
41)(component_definition . 1145)(name . 483)(null_exclusion_opt . 
720)(qualified_expression . 92)(selected_component . 97)(subtype_indication . 
1146))
-      ((attribute_reference . 41)(interface_list . 1147)(name . 
840)(qualified_expression . 92)(selected_component . 97))
-      ((attribute_reference . 41)(interface_list . 1148)(name . 
840)(qualified_expression . 92)(selected_component . 97))
-      nil
-      ((enumeration_literal . 1149))
-      ((and_interface_list_opt . 1151))
-      ((actual_parameter_part . 240)(and_interface_list_opt . 1152)(constraint 
. 1153)(constraint_opt . 1154)(index_constraint . 620)(tick . 241))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(exception_choice . 
915)(exception_choice_list . 1157)(name . 917)(qualified_expression . 
92)(selected_component . 97))
-      ((attribute_reference . 41)(exception_choice . 1158)(name . 
917)(qualified_expression . 92)(selected_component . 97))
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      nil
-      nil
-      nil
-      ((aspect_specification_opt . 1162))
-      nil
-      ((aspect_specification_opt . 1163))
-      nil
-      ((aspect_specification_opt . 1164))
-      nil
-      ((aspect_specification_opt . 1165))
-      nil
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1170)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1172)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      ((actual_parameter_part . 240)(constraint . 955)(index_constraint . 
620)(tick . 241))
-      nil
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1175)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((attribute_reference . 41)(name . 1176)(qualified_expression . 
92)(selected_component . 97))
-      nil
-      nil
-      nil
-      ((actual_parameter_part . 240)(and_interface_list_opt . 1178)(tick . 
241))
-      nil
-      ((aggregate . 130)(association_opt . 264)(association_list . 
405)(attribute_reference . 41)(case_expression . 
266)(conditional_quantified_expression . 406)(discrete_choice . 
268)(discrete_choice_list . 269)(expression . 407)(factor . 133)(if_expression 
. 272)(name . 273)(primary . 135)(qualified_expression . 
92)(quantified_expression . 274)(raise_expression . 136)(range_g . 
408)(range_list . 409)(relation_and_list . 137)(relation_and_then_list . 
138)(relation_or_list . 139)(relatio [...]
-      ((aspect_specification_opt . 1180))
-      nil
-      nil
-      ((aspect_specification_opt . 1182))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 629)(name_opt . 
1187)(qualified_expression . 92)(selected_component . 97))
-      ((identifier_list . 492)(parameter_specification . 
493)(parameter_specification_list . 494))
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      ((identifier_opt . 1193))
-      nil
-      nil
-      nil
-      nil
-      ((identifier_opt . 1196))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(index_subtype_definition . 1200)(name . 
1201)(qualified_expression . 92)(selected_component . 97))
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
273)(primary . 135)(qualified_expression . 92)(range_g . 
772)(selected_component . 97)(simple_expression . 478)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((real_range_specification_opt . 1203))
-      nil
-      nil
-      nil
-      nil
-      ((variant_list . 1206)(variant . 1207))
-      nil
-      ((access_definition . 1208)(attribute_reference . 41)(name . 
483)(null_exclusion_opt . 720)(qualified_expression . 92)(selected_component . 
97)(subtype_indication . 1209))
-      nil
-      ((aspect_specification_opt . 1211))
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(interface_list . 1212)(name . 
840)(qualified_expression . 92)(selected_component . 97))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 629)(name_opt . 
1220)(qualified_expression . 92)(selected_component . 97))
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1221)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(selected_component . 
97)(simple_expression . 1222)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_reference . 41)(name . 629)(name_opt . 
1229)(qualified_expression . 92)(selected_component . 97))
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1231)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 666)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      nil
-      nil
-      ((identifier_opt . 1233))
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 691)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_renam [...]
-      nil
-      ((identifier_opt . 1236))
-      ((access_definition . 1144)(attribute_reference . 
41)(component_definition . 1237)(name . 483)(null_exclusion_opt . 
720)(qualified_expression . 92)(selected_component . 97)(subtype_indication . 
1146))
-      ((access_definition . 1144)(attribute_reference . 
41)(component_definition . 1238)(name . 483)(null_exclusion_opt . 
720)(qualified_expression . 92)(selected_component . 97)(subtype_indication . 
1146))
-      nil
-      ((actual_parameter_part . 240)(tick . 241))
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(selected_component . 
97)(simple_expression . 1240)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((aggregate . 130)(attribute_reference . 41)(discrete_choice . 
268)(discrete_choice_list . 1241)(expression . 598)(factor . 133)(name . 
273)(primary . 135)(qualified_expression . 92)(raise_expression . 136)(range_g 
. 275)(relation_and_list . 137)(relation_and_then_list . 138)(relation_or_list 
. 139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 276)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((variant . 1243))
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1244)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      nil
-      ((record_definition . 1247))
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 68)(if_statement . 
70)(loop_statement . 72)(name . 73)(pragma_g . 83)(procedure_call_statement . 
86)(qualified_expression . 92)(raise_statement . 93)(requeue [...]
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(expression . 
131)(expression_opt . 1251)(factor . 133)(name . 134)(primary . 
135)(qualified_expression . 92)(raise_expression . 136)(relation_and_list . 
137)(relation_and_then_list . 138)(relation_or_list . 
139)(relation_or_else_list . 140)(relation_xor_list . 141)(relation . 
142)(selected_component . 97)(simple_expression . 143)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aspect_specification_opt . 1262))
-      nil
-      ((aspect_specification_opt . 1263))
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(factor . 133)(name . 
134)(primary . 135)(qualified_expression . 92)(selected_component . 
97)(simple_expression . 1264)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      nil
-      nil
-      nil
-      ((aggregate . 130)(attribute_reference . 41)(discrete_subtype_definition 
. 1265)(factor . 133)(name . 476)(primary . 135)(qualified_expression . 
92)(range_g . 477)(selected_component . 97)(simple_expression . 
478)(subtype_indication . 479)(term . 144)(term_list . 
145)(unary_adding_operator . 146))
-      ((abstract_subprogram_declaration . 35)(aspect_clause . 37)(at_clause . 
40)(body_g . 45)(body_stub . 46)(declaration . 390)(declarations . 
391)(declarative_part_opt . 1266)(entry_declaration . 
54)(enumeration_representation_clause . 55)(exception_declaration . 
56)(expression_function_declaration . 58)(full_type_declaration . 
60)(function_specification . 61)(generic_declaration . 62)(generic_formal_part 
. 63)(generic_instantiation . 64)(generic_package_declaration . 
65)(generic_rena [...]
-      nil
-      nil
-      ((identifier_opt . 1267))
-      nil
-      ((aspect_clause . 886)(at_clause . 40)(component_declaration . 
887)(component_item . 888)(component_list . 889)(component_list_opt . 
1268)(enumeration_representation_clause . 55)(identifier_list . 
891)(record_representation_clause . 94)(variant_part . 892))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((formal_part . 343)(parameter_profile_opt . 1276))
-      ((accept_statement . 36)(assignment_statement . 38)(asynchronous_select 
. 39)(attribute_reference . 41)(block_label . 42)(block_label_opt . 
43)(block_statement . 44)(case_statement . 47)(compound_statement . 
50)(conditional_entry_call . 51)(delay_statement . 53)(exit_statement . 
57)(extended_return_statement . 59)(goto_label . 
68)(handled_sequence_of_statements . 1277)(if_statement . 70)(loop_statement . 
72)(name . 73)(pragma_g . 83)(procedure_call_statement . 86)(qualified_express 
[...]
-      nil
-      nil
-      nil
-      ((identifier_opt . 1279))
-      nil
-      nil]))
-  "Parser table.")
-
-(provide 'ada-lalr-elisp)
-;; end of file
diff --git a/packages/ada-mode/ada-mode.el b/packages/ada-mode/ada-mode.el
index 36a4c59..f51cd35 100644
--- a/packages/ada-mode/ada-mode.el
+++ b/packages/ada-mode/ada-mode.el
@@ -1,3111 +1,2866 @@
-;;; ada-mode.el --- major-mode for editing Ada sources  -*- lexical-binding:t 
-*-
-;;
-;; Copyright (C) 1994, 1995, 1997 - 2019  Free Software Foundation, Inc.
-;;
-;; Author: Stephen Leake <address@hidden>
-;; Maintainer: Stephen Leake <address@hidden>
-;; Keywords: languages
-;;  ada
-;; Version: 6.1.1
-;; package-requires: ((wisi "2.1.1") (cl-lib "1.0") (emacs "25.0"))
-;; url: http://www.nongnu.org/ada-mode/
-;;
-;; (Gnu ELPA requires single digits between dots in versions)
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-;;
-;;; Usage:
-;;
-;; Emacs should enter Ada mode automatically when you load an Ada
-;; file, based on the file extension.  The default extensions for Ada
-;; files are .ads, .adb; use ada-add-extensions to add other
-;; extensions.
-;;
-;; By default, ada-mode is configured to take full advantage of the
-;; GNAT compiler.  If you are using another compiler, you
-;; should load that compiler's ada-* file first; that will define
-;; ada-compiler as a feature, so ada-gnat.el will not be loaded.
-;;
-;; See the user guide (info "ada-mode"), built from ada-mode.texi.
-
-;;; Design:
-;;
-;; In order to support multiple compilers, we use indirect function
-;; calls for all operations that depend on the compiler.
-;;
-;; We also support a cross reference tool (also called xref tool) that
-;; is different from the compiler. For example, you can use a local
-;; GNAT compiler to generate and access cross-reference information,
-;; while using a cross-compiler for compiling the final executable.
-;;
-;; Other functions are lumped with the choice of xref tool; mapping
-;; Ada names to file names, creating package bodies; any tool function
-;; that does not create executable code.
-;;
-;; The indentation engine and skeleton tools are also called
-;; indirectly, to allow parallel development of new versions of these
-;; tools (inspired by experience with ada-smie and ada-wisi).
-;;
-;; We also support using different compilers for different projects;
-;; `ada-compiler' can be set in Ada mode project files.  Note that
-;; there is only one project active at a time; the most recently
-;; selected one. All Ada files are assumed to belong to this project
-;; (which is not correct, but works well in practice; the user is
-;; typically only concerned about files that belong to the current
-;; project).
-;;
-;; There are several styles of indirect calls:
-;;
-;; - scalar global variable set during load
-;;
-;;   Appropriate when the choice of implementation is fixed at load
-;;   time; it does not depend on the current Ada project. Used for
-;;   indentation and skeleton functions.
-;;
-;; - scalar global variable set during project select
-;;
-;;   Appropriate when the choice of implementation is determined by
-;;   the choice of compiler or xref tool, which is per-project.  The
-;;   user sets the compiler choice in the project file, but not the
-;;   lower-level redirect choice.
-;;
-;;   For example, `ada-file-name-from-ada-name' depends on the naming
-;;   convention used by the compiler. If the project file sets
-;;   ada_compiler to 'gnat (either directly or by default),
-;;   ada-gnat-select-prj sets `ada-file-name-from-ada-name' to
-;;   `ada-gnat-file-name-from-ada-name'.
-;;
-;; - scalar buffer-local variable set during project select or file open
-;;
-;;   Appropriate when choice of implementation is normally
-;;   per-project, but can be per-buffer.
-;;
-;;   For example, `ada-case-strict' will normally be set by the
-;;   project, but some files may deviate from the project standard (if
-;;   they are generated by -fdumpspec, for example). Those files set
-;;   `ada-case-strict' in a file local variable comment.
-;;
-;; - scalar buffer-local variable set by ada-mode or ada-mode-hook
-;;   function
-;;
-;;   Appropriate when the variable is a non-Ada mode variable, also
-;;   used by other modes, and choice should not affect those modes.
-;;
-;;   `indent-line-function', `comment-indent-function' use this style
-;;
-;; - alist global variable indexed by ada-compiler
-;;
-;;   Appropriate when the choice of implementation is determined by
-;;   the compiler, but the function is invoked during project parse,
-;;   so we can't depend on a value set by project select.
-;;
-;;   alist entries are set during load by the implementation elisp files.
-;;
-;;   `ada-prj-default-compiler-alist' uses this style.
-
-;;; History:
-;;
-;; The first Ada mode for GNU Emacs was written by V. Broman in
-;; 1985. He based his work on the already existing Modula-2 mode.
-;; This was distributed as ada.el in versions of Emacs prior to 19.29.
-;;
-;; Lynn Slater wrote an extensive Ada mode in 1989. It consisted of
-;; several files with support for dired commands and other nice
-;; things.
-;;
-;; The probably very first Ada mode (called electric-ada.el) was
-;; written by Steven D. Litvintchouk and Steven M. Rosen for the
-;; Gosling Emacs. L. Slater based his development on ada.el and
-;; electric-ada.el.
-;;
-;; A complete rewrite by Rolf Ebert <address@hidden> and Markus
-;; Heritsch <address@hidden> was done at
-;; some point.  Some ideas from the Ada mode mailing list have been
-;; added.  Some of the functionality of L. Slater's mode has not (yet)
-;; been recoded in this new mode.
-;;
-;; A complete rewrite for Emacs-20 / GNAT-3.11 was done by Emmanuel
-;; Briot <address@hidden> at Ada Core Technologies.
-;;
-;; A complete rewrite, to restructure the code more orthogonally, and
-;; to use wisi for the indentation engine, was done in 2012 - 2013 by
-;; Stephen Leake <address@hidden>.
-
-;;; Credits:
-;;
-;;   Many thanks to John McCabe <address@hidden> for sending so
-;;     many patches included in this package.
-;;   Christian Egli <address@hidden>:
-;;     ada-imenu-generic-expression
-;;   Many thanks also to the following persons that have contributed
-;;   to the ada-mode
-;;     Philippe Waroquiers (PW) <address@hidden> in particular,
-;;     address@hidden (John Woodruff)
-;;     address@hidden (Jesper Joergensen)
-;;     address@hidden (Scott Evans)
-;;     address@hidden (Cyrille Comar)
-;;     address@hidden
-;;    and others for their valuable hints.
-
-(require 'align)
-(require 'cl-lib)
-(require 'compile)
-(require 'find-file)
-(require 'wisi) ;; FIXME: rewrite to assume wisi
-
-(defun ada-mode-version ()
-  "Return Ada mode version."
-  (interactive)
-  (let ((version-string "6.1.1"))
-    ;; must match:
-    ;; ada-mode.texi
-    ;; README-ada-mode
-    ;; Version: above
-    (if (called-interactively-p 'interactive)
-       (message version-string)
-      version-string)))
-
-;;;;; User variables
-
-(defvar ada-mode-hook nil
-  "List of functions to call when Ada mode is invoked.
-This hook is executed after `ada-mode' is fully loaded, but
-before file local variables are processed.")
-
-(defgroup ada nil
-  "Major mode for editing Ada source code in Emacs."
-  :group 'languages)
-
-(defcustom ada-auto-case t
-  "Buffer-local value that may override project variable `auto_case'.
-Global value is default for project variable `auto_case'.
-t means automatically change case of preceding word while typing.
-not-upper-case means only change case if typed word is not all upper-case.
-Casing of Ada keywords is done according to `ada-case-keyword',
-identifiers are Mixed_Case."
-  :type  '(choice (const nil)
-                 (const t)
-                 (const not-upper-case))
-  :safe  (lambda (val) (memq val '(nil t not-upper-case))))
-(make-variable-buffer-local 'ada-auto-case)
-
-(defcustom ada-case-exception-file nil
-  "Default list of special casing exceptions dictionaries for identifiers.
-Override with `casing' project variable.
-
-New exceptions may be added interactively via `ada-case-create-exception'.
-If an exception is defined in multiple files, the first occurence is used.
-
-The file format is one word per line, that gives the casing to be
-used for that word in Ada source code.  If the line starts with
-the character *, then the exception will be used for partial
-words that either start at the beginning of a word or after a _
-character, and end either at the end of the word or at a _
-character.  Characters after the first word are ignored, and not
-preserved when the list is written back to the file."
-  :type  '(repeat (file))
-  :safe  #'listp)
-
-(defcustom ada-case-keyword 'lower-case
-  "Buffer-local value that may override project variable `case_keyword'.
-Global value is default for project variable `case_keyword'.
-Indicates how to adjust the case of Ada keywords."
-  :type '(choice (const lower-case)
-                (const upper-case))
-  ;; We'd like to specify that the value must be a function that takes
-  ;; one arg, but custom doesn't support that. ':safe' is supposed
-  ;; to be used to prevent user-provided functions from compromising
-  ;; security, so ":safe #'functionp" is not appropriate. So we
-  ;; use a symbol, and a cl-ecase in ada-case-keyword.
-  :safe (lambda (val) (memq val '(lower-case upper-case)))
-  )
-(make-variable-buffer-local 'ada-case-keyword)
-
-(defcustom ada-case-identifier 'mixed-case
-  "Buffer-local value that may override project variable `case_keyword'.
-Global value is default for project variable `case_keyword'.
-Indicates how to adjust the case of Ada keywords.
-Called with three args;
-start      - buffer pos of start of identifier
-end        - end of identifier
-force-case - if t, treat `ada-case-strict' as t"
-  :type '(choice (const mixed-case)
-                (const lower-case)
-                (const upper-case))
-  ;; see comment on :safe at ada-case-keyword
-  :safe (lambda (val) (memq val '(mixed-case lower-case upper-case)))
-  )
-;; we'd like to check that there are 3 args, since the previous
-;; release required 2 here. But there doesn't seem to be a way to
-;; access the arg count, which is only available for byte-compiled
-;; functions
-(make-variable-buffer-local 'ada-case-identifier)
-
-(defcustom ada-case-strict t
-  "Buffer-local value that may override project variable `case_strict'.
-Global value is default for project variable `case_strict'.
-If non-nil, force Mixed_Case for identifiers.
-Otherwise, allow UPPERCASE for identifiers."
-  :type 'boolean
-  :safe  #'booleanp)
-(make-variable-buffer-local 'ada-case-strict)
-
-(defcustom ada-language-version 'ada2012
-  "Ada language version; one of `ada83', `ada95', `ada2005', `ada2012'.
-Only affects the keywords to highlight, not which version the
-indentation parser accepts."
-  :type '(choice (const ada83)
-                (const ada95)
-                (const ada2005)
-                (const ada2012))
-  :safe  #'symbolp)
-(make-variable-buffer-local 'ada-language-version)
-
-(defcustom ada-fill-comment-prefix "-- "
-  "Comment fill prefix."
-  :type 'string)
-(make-variable-buffer-local 'ada-fill-comment-prefix)
-
-(defcustom ada-fill-comment-postfix " --"
-  "Comment fill postfix."
-  :type 'string)
-(make-variable-buffer-local 'ada-fill-comment-postfix)
-
-(defcustom ada-fill-comment-adaptive nil
-  "If non-nil, comments are filled to the same width (not including 
indentation),
-rather than to the same column."
-  :type 'boolean
-  :safe #'booleanp)
-
-(defcustom ada-prj-file-extensions '("adp" "prj")
-  "List of Emacs Ada mode project file extensions.
-Used when searching for a project file.
-Any file with one of these extensions will be parsed by 
`ada-prj-parse-file-1'."
-  :type 'list)
-
-(defcustom ada-prj-file-ext-extra nil
-  "List of secondary project file extensions.
-Used when searching for a project file that can be a primary or
-secondary project file (referenced from a primary).  The user
-must provide a parser for a file with one of these extensions."
-  :type 'list)
-
-(defcustom ada-prj-parse-hook nil
-  "Hook run at start of `ada-parse-prj-file'.
-Useful for setting `ada-xref-tool' and similar vars."
-  :type 'function
-  :group 'ada)
-
-(defcustom ada-xref-full-path nil
-  "If t, cross-references show the full path to source files; if
-nil, only the file name."
-  :type 'boolean
-  :safe #'booleanp)
-
-(defcustom ada-process-parse-exec "ada_mode_wisi_lr1_parse.exe"
-  ;; We use .exe even on Linux to simplify the Makefile
-  "Name of executable to use for external process Ada parser.
-There are two standard choices; ada_mode_wisi_lalr_parse.exe and
-ada_mode_wisi_lr1_parse.exe. The LR1 version (the default) is
-slower to load on first use, but gives better error recovery."
-  :type 'string
-  :group 'ada-indentation)
-
-(defcustom ada-process-parse-exec-opts nil
-  "List of process start options for `ada-process-parse-exec'."
-  :type 'string
-  :group 'ada-indentation)
-
-(defcustom ada-which-func-parse-size 30000
-  "Minimum size of the region surrounding point that is parsed for 
`which-function-mode'."
-  :type 'integer
-  :safe #'integerp)
-
-;;;;; end of user variables
-
-(defconst ada-symbol-end
-  ;; we can't just add \> here; that might match _ in a user modified 
ada-mode-syntax-table
-  "\\([ \t]+\\|$\\)"
-  "Regexp to add to symbol name in `ada-which-function'.")
-
-(defvar ada-compiler nil
-  "Default Ada compiler; can be overridden in project files.
-Values defined by compiler packages.")
-
-(defvar ada-xref-tool nil
-  "Default Ada cross reference tool; can be overridden in project files.
-Values defined by cross reference packages.")
-
-;;;; keymap and menus
-
-(defvar ada-ret-binding 'ada-indent-newline-indent)
-(defvar ada-lfd-binding 'newline-and-indent)
-
-(defun ada-case-activate-keys (map)
-  "Modify the key bindings for all the keys that should adjust casing."
-  ;; we could just put these in the keymap below, but this is easier.
-  (mapc (function
-        (lambda(key)
-          (define-key
-            map
-            (char-to-string key)
-            'ada-case-adjust-interactive)))
-       '( ?_ ?% ?& ?* ?\( ?\) ?- ?= ?+
-             ?| ?\; ?: ?' ?\" ?< ?, ?. ?> ?/ ?\n 32 ?\r ))
-  )
-
-(defvar ada-mode-map
-  (let ((map (make-sparse-keymap)))
-    ;; C-c <letter> are reserved for users
-
-    ;; global-map has C-x ` 'next-error
-    (define-key map [return]    'ada-case-adjust-interactive)
-    (define-key map "\C-c`"     'ada-show-secondary-error)
-    (define-key map "\C-c;"      (lambda () (error "use M-; instead"))) ; 
comment-dwim
-    (define-key map "\C-c<"     'ada-goto-declaration-start)
-    (define-key map "\C-c>"     'ada-goto-declaration-end)
-    (define-key map "\C-c\M-`"          'ada-fix-compiler-error)
-    (define-key map "\C-c\C-a"          'ada-align)
-    (define-key map "\C-c\C-b"          'ada-make-subprogram-body)
-    (define-key map "\C-c\C-c"   'ada-build-make)
-    (define-key map "\C-c\C-d"          'ada-goto-declaration)
-    (define-key map "\C-c\M-d"          'ada-show-declaration-parents)
-    (define-key map "\C-c\C-e"          'ada-expand)
-    (define-key map "\C-c\C-f"          'ada-show-parse-error)
-    (define-key map "\C-c\C-i"          'ada-indent-statement)
-    (define-key map "\C-c\C-l"          'ada-show-local-references)
-    (define-key map "\C-c\C-m"   'ada-build-set-make)
-    (define-key map "\C-c\C-n"          'forward-sexp)
-    (define-key map "\C-c\M-n"          'ada-next-placeholder)
-    (define-key map "\C-c\C-o"          'ada-find-other-file)
-    (define-key map "\C-c\M-o"          'ada-find-other-file-noset)
-    (define-key map "\C-c\C-p"          'backward-sexp)
-    (define-key map "\C-c\M-p"          'ada-prev-placeholder)
-    (define-key map "\C-c\C-q"          'ada-xref-refresh)
-    (define-key map "\C-c\C-r"          'ada-show-references)
-    (define-key map "\C-c\M-r"          'ada-build-run)
-    (define-key map "\C-c\C-s"   'ada-goto-previous-pos)
-    (define-key map "\C-c\C-v"   'ada-build-check)
-    (define-key map "\C-c\C-w"          'ada-case-adjust-at-point)
-    (define-key map "\C-c\C-x"   'ada-show-overriding)
-    (define-key map "\C-c\M-x"   'ada-show-overridden)
-    (define-key map "\C-c\C-y"          'ada-case-create-exception)
-    (define-key map "\C-c\C-\M-y" 'ada-case-create-partial-exception)
-    (define-key map [C-down-mouse-3] 'ada-popup-menu)
-
-    (ada-case-activate-keys map)
-
-    map
-  )  "Local keymap used for Ada mode.")
-
-(defvar ada-mode-menu (make-sparse-keymap "Ada"))
-(easy-menu-define ada-mode-menu ada-mode-map "Menu keymap for Ada mode"
-  '("Ada"
-    ("Help"
-     ["Ada Mode"             (info "ada-mode") t]
-     ["Ada Reference Manual" (info "arm2012") t]
-     ["Key bindings"         describe-bindings t]
-     )
-    ["Customize"                  (customize-group 'ada)    t]
-    ("Project files"
-     ["Find and select project ..."   ada-build-prompt-select-prj-file t]
-     ["Select project ..."            ada-prj-select                   t]
-     ["Show project"                  ada-prj-show                     t]
-     ["Show project file search path" ada-prj-show-prj-path            t]
-     ["Show source file search path"  ada-prj-show-src-path            t]
-     ["Delete project ..."            ada-prj-delete                   t]
-    )
-    ("Build"
-     ["Next compilation error"     next-error                t]
-     ["Show secondary error"       ada-show-secondary-error  t]
-     ["Fix compilation error"      ada-fix-compiler-error    t]
-     ["Show last parse error"      ada-show-parse-error      t]
-     ["Check syntax"               ada-build-check       t]
-     ["Show main"                  ada-build-show-main   t]
-     ["Build"                      ada-build-make        t]
-     ["Set main and Build"         ada-build-set-make    t]
-     ["Run"                        ada-build-run         t]
-     )
-    ("Navigate"
-     ["Other file"                    ada-find-other-file          t]
-     ["Other file don't find decl"    ada-find-other-file-noset    t]
-     ["Find file in project"          ada-find-file                t]
-     ["Goto declaration/body"         ada-goto-declaration         t]
-     ["Goto next statement keyword"   forward-sexp   t]
-     ["Goto prev statement keyword"   backward-sexp   t]
-     ["Goto declarative region start" ada-goto-declarative-region-start   t]
-     ["Goto declaration start"        ada-goto-declaration-start   t]
-     ["Goto declaration end"          ada-goto-declaration-end     t]
-     ["Show parent declarations"      ada-show-declaration-parents t]
-     ["Show references"               ada-show-references          t]
-     ["Show overriding"               ada-show-overriding          t]
-     ["Show overridden"               ada-show-overridden          t]
-     ["Goto secondary error"          ada-show-secondary-error     t]
-     ["Goto prev position"            ada-goto-previous-pos        t]
-     ["Next placeholder"              ada-next-placeholder    t]
-     ["Previous placeholder"          ada-prev-placeholder    t]
-     )
-    ("Edit"
-     ["Expand skeleton"             ada-expand              t]
-     ["Indent line or selection"    indent-for-tab-command  t]
-     ["Indent current statement"    ada-indent-statement    t]
-     ["Indent lines in file"        (indent-region (point-min) (point-max))  t]
-     ["Align"                       ada-align               t]
-     ["Comment/uncomment selection" comment-dwim            t]
-     ["Fill comment paragraph"         ada-fill-comment-paragraph           t]
-     ["Fill comment paragraph justify" (ada-fill-comment-paragraph 'full)   t]
-     ["Fill comment paragraph postfix" (ada-fill-comment-paragraph 'full t) t]
-     ["Make body for subprogram"    ada-make-subprogram-body     t]
-     )
-    ("Casing"
-     ["Create full exception"       ada-case-create-exception t]
-     ["Create partial exception"    ada-case-create-partial-exception t]
-     ["Adjust case at point"        ada-case-adjust-at-point  t]
-     ["Adjust case region"          ada-case-adjust-region    t]
-     ["Adjust case buffer"          ada-case-adjust-buffer    t]
-     ["Show casing files list"      ada-case-show-files       t]
-     )
-    ("Misc"
-     ["Show last parse error"         ada-show-parse-error         t]
-     ["Show xref tool buffer"         ada-show-xref-tool-buffer    t]
-     ["Refresh cross reference cache" ada-xref-refresh             t]
-     ["Reset parser"                  ada-reset-parser             t]
-     )))
-
-(defun ada-project-menu-compute ()
-  "Return an easy-menu menu for `ada-project-menu-install'.
-Menu displays currently parsed Ada mode projects."
-  (let (menu)
-    (dolist (item ada-prj-alist)
-      (push
-       (vector
-       (if (equal (car item) ada-prj-current-file)
-           ;; current project
-           (concat (car item) "  *")
-         (car item))
-       `(lambda () (interactive) (ada-select-prj-file ,(car item)))
-       t)
-       menu)
-      )
-    (nreverse menu)))
-
-(defun ada-project-menu-install ()
-  "Install the Ada project menu as a submenu."
-  (when (eq major-mode 'ada-mode)
-    (lookup-key ada-mode-map [menu-bar Ada]) ;; map to put menu in
-    [ada-prj-select]          ;; key to insert (a menu entry)
-    (easy-menu-binding
-     (easy-menu-create-menu
-      "Select Project"
-      (ada-project-menu-compute)));; binding
-    nil;; after
-
-    ;; IMPROVEME: this doesn’t work for ’after’; "Select Project" is at end
-    ;; (lookup-key ada-mode-map [menu-bar Ada Build])
-    ))
-
-(easy-menu-define ada-context-menu nil
-  "Context menu keymap for Ada mode"
-  '("Ada"
-    ["Goto declaration/body"         ada-goto-declaration         t]
-    ["Show parent declarations"      ada-show-declaration-parents t]
-    ["Goto declarative region start" ada-goto-declarative-region-start   t]
-    ["Goto declaration start"        ada-goto-declaration-start   t]
-    ["Goto declaration end"          ada-goto-declaration-end     t]
-    ["Show parent declarations"      ada-show-declaration-parents t]
-    ["Show references"               ada-show-references          t]
-    ["Show overriding"               ada-show-overriding          t]
-    ["Show overridden"               ada-show-overridden          t]
-    ["Goto next statement keyword"   forward-sexp   t]
-    ["Goto prev statement keyword"   backward-sexp   t]
-
-    ["-"                nil nil]
-
-    ["Align"                       ada-align                  t]
-    ["Comment/uncomment selection" comment-dwim               t]
-    ["Fill comment paragraph"         ada-fill-comment-paragraph           
(ada-in-comment-p)]
-    ["Fill comment paragraph justify" (ada-fill-comment-paragraph 'full)   
(ada-in-comment-p)]
-    ["Fill comment paragraph postfix" (ada-fill-comment-paragraph 'full t) 
(ada-in-comment-p)]
-    ["Adjust case at point"        ada-case-adjust-at-point   (not 
(use-region-p))]
-    ["Adjust case region"          ada-case-adjust-region     (use-region-p)]
-    ["Create full case exception"    ada-case-create-exception         t]
-    ["Create partial case exception" ada-case-create-partial-exception t]
-    ["Indent current statement"    ada-indent-statement       t]
-    ["Expand skeleton"               ada-expand                        t]
-    ["Make body for subprogram"    ada-make-subprogram-body   t]
-    ))
-
-(defun ada-popup-menu ()
-  "Pops up `ada-context-menu'.
-When a function from the menu is called, point is where the mouse
-button was clicked."
-  (interactive)
-
-  (mouse-set-point last-input-event)
-  (popup-menu ada-context-menu)
-  )
-
-(defun ada-indent-newline-indent ()
-  "insert a newline, indent the old and new lines."
-  (interactive "*")
-  ;; point may be in the middle of a word, so insert newline first,
-  ;; then go back and indent.
-  (insert "\n")
-  (unless (and (wisi-partial-parse-p (line-beginning-position) 
(line-end-position))
-              (save-excursion (progn (forward-char -1)(looking-back 
"begin\\|else" (line-beginning-position)))))
-    ;; Partial parse may think 'begin' is just the start of a
-    ;; statement, when it's actually part of a larger declaration. So
-    ;; don't indent 'begin'. Similarly for 'else'; error recovery will
-    ;; probably insert 'if then' immediately before it
-    (forward-char -1)
-    (funcall indent-line-function)
-    (forward-char 1))
-  (funcall indent-line-function))
-
-(defvar ada-indent-statement nil
-  ;; indentation function
-  "Function to indent the statement/declaration point is in or after.
-Function is called with no arguments.")
-
-(defun ada-indent-statement ()
-  "Indent current statement."
-  (interactive)
-  (when ada-indent-statement
-    (funcall ada-indent-statement)))
-
-(defvar ada-expand nil
-  ;; skeleton function
-  "Function to call to expand tokens (ie insert skeletons).")
-
-(defun ada-expand ()
-  "Expand previous word into a statement skeleton."
-  (interactive)
-  (when ada-expand
-    (funcall ada-expand)))
-
-(defvar ada-next-placeholder nil
-  ;; skeleton function
-  "Function to call to goto next placeholder.")
-
-(defun ada-next-placeholder ()
-  "Goto next placeholder.
-Placeholders are defined by the skeleton backend."
-  (interactive)
-  (when ada-next-placeholder
-    (funcall ada-next-placeholder)))
-
-(defvar ada-prev-placeholder nil
-  ;; skeleton function
-  "Function to call to goto previous placeholder.")
-
-(defun ada-prev-placeholder ()
-  "Goto previous placeholder.
-Placeholders are defined by the skeleton backend."
-  (interactive)
-  (when ada-prev-placeholder
-    (funcall ada-prev-placeholder)))
-
-;;;; abbrev, align
-
-(defvar ada-mode-abbrev-table nil
-  "Local abbrev table for Ada mode.")
-
-(defvar ada-align-rules
-  '((ada-declaration-assign
-     (regexp  . "[^:]\\(\\s-*\\)\\(:\\)[^:]")
-     (valid   . (lambda () (ada-align-valid)))
-     (repeat . t)
-     (modes   . '(ada-mode)))
-    (ada-associate
-     (regexp  . "[^=]\\(\\s-*\\)\\(=>\\)")
-     (valid   . (lambda () (ada-align-valid)))
-     (modes   . '(ada-mode)))
-    (ada-comment
-     (regexp  . "\\(\\s-*\\)--")
-     (valid   . (lambda () (ada-align-valid)))
-     (modes   . '(ada-mode)))
-    (ada-use
-     (regexp  . "\\(\\s-*\\)\\<\\(use\\s-\\)")
-     (valid   . (lambda () (ada-align-valid)))
-     (modes   . '(ada-mode)))
-    (ada-at
-     (regexp . "\\(\\s-+\\)\\(at\\)\\_>")
-     (valid   . (lambda () (ada-align-valid)))
-     (modes . '(ada-mode))))
-  "Rules to use to align different lines.")
-
-(defun ada-align-valid ()
-  "See use in `ada-align-rules'."
-  (save-excursion
-    ;; we don't put "when (match-beginning n)" here; missing a match
-    ;; is a bug in the regexp.
-    (goto-char (or (match-beginning 2) (match-beginning 1)))
-    (not (ada-in-string-or-comment-p))))
-
-(defconst ada-align-region-separate
-  (eval-when-compile
-    (concat
-     "^\\s-*\\($\\|\\("
-     "begin\\|"
-     "declare\\|"
-     "else\\|"
-     "end\\|"
-     "exception\\|"
-     "for\\|"
-     "function\\|"
-     "generic\\|"
-     "if\\|"
-     "is\\|"
-     "procedure\\|"
-     "private\\|"
-     "record\\|"
-     "return\\|"
-     "type\\|"
-     "when"
-     "\\)\\_>\\)"))
-  "See the variable `align-region-separate' for more information.")
-
-(defun ada-align ()
-  "If region is active, apply `align'. If not, attempt to align
-current construct."
-  (interactive)
-  (if (use-region-p)
-      (progn
-        (align (region-beginning) (region-end))
-        (deactivate-mark))
-
-    ;; else see if we are in a construct we know how to align
-    (let ((parse-result (syntax-ppss)))
-      (cond
-       ((ada-in-paramlist-p parse-result)
-        (ada-format-paramlist))
-
-       ((and
-        (ada-in-paren-p parse-result)
-        (ada-in-case-expression))
-       ;; align '=>'
-       (let ((begin (nth 1 parse-result))
-             (end   (scan-lists (point) 1 1)))
-         (align begin end 'entire)))
-
-       (t
-       (align-current))
-       ))))
-
-(defvar ada-in-paramlist-p nil
-  ;; Supplied by indentation engine parser
-  "Function to return t if point is inside the parameter-list of a subprogram 
declaration.
-Function is called with one optional argument; syntax-ppss result.")
-
-(defun ada-in-paramlist-p (&optional parse-result)
-  "Return t if point is inside the parameter-list of a subprogram declaration."
-  (when ada-in-paramlist-p
-    (funcall ada-in-paramlist-p parse-result)))
-
-(defun ada-format-paramlist ()
-  "Reformat the parameter list point is in."
-  (interactive)
-  (condition-case nil
-      (ada-goto-open-paren)
-    (error
-     (user-error "Not in parameter list")))
-  (funcall indent-line-function); so new list is indented properly
-
-  ;; indent-line-function may have found errors to correct. Repairing
-  ;; all errors from here to end of buffer is annoying to the
-  ;; user. But we have to handle a missing param list closing
-  ;; paren. See test/format_paramlist.adb Check_One.
-  ;;
-  ;; FIXME: either make this indirect, or make all other wisi- indirects 
direct.
-  (save-excursion
-    (let ((beg (point))
-         end)
-      (condition-case-unless-debug nil
-         (setq end (progn (forward-sexp) (point)))
-       (error
-        ;; Right paren missing. ada-wisi-goto-open paren ensures parse
-        ;; succeeded.
-        (let* ((cache (wisi-get-cache (point)))
-               (subr-cache (wisi-goto-containing cache)))
-          (setq end (wisi-cache-next subr-cache)))))
-
-      (wisi-repair-errors beg end)))
-
-  ;; Recompute ’end’ after repair errors; closing paren is now there.
-
-  (let* ((begin (point))
-        (delend (copy-marker (progn (forward-sexp) (point)))); just after 
matching closing paren
-        (end (copy-marker
-              (progn (backward-char) (forward-comment (- (point))) (point)))); 
end of last parameter-declaration
-        (multi-line (> end (save-excursion (goto-char begin) 
(line-end-position))))
-        (paramlist (ada-scan-paramlist (1+ begin) end)))
-
-    (when paramlist
-      ;; delete the original parameter-list
-      (delete-region begin delend)
-
-      ;; insert the new parameter-list
-      (goto-char begin)
-      (if multi-line
-         (ada-insert-paramlist-multi-line paramlist)
-       (ada-insert-paramlist-single-line paramlist)))
-    ))
-
-(defvar ada-scan-paramlist nil
-  ;; Supplied by indentation engine parser
-  "Function to scan a region, return a list of subprogram parameter 
declarations (in inverse declaration order).
-Function is called with two args BEGIN END (the region).
-Each parameter declaration is represented by a list
-((identifier ...) aliased-p in-p out-p not-null-p access-p constant-p 
protected-p type default)."
-  ;; Summary of Ada syntax for a parameter specification:
-  ;; ... : [aliased] {[in] | out | in out | [null_exclusion] access [constant 
| protected]} ...
-  )
-
-(defun ada-scan-paramlist (begin end)
-  (when ada-scan-paramlist
-    (funcall ada-scan-paramlist begin end)))
-
-(defun ada-insert-paramlist-multi-line (paramlist)
-  "Insert a multi-line formatted PARAMLIST in the buffer."
-  (let ((i (length paramlist))
-       param
-       j
-       len
-       (ident-len 0)
-       (type-len 0)
-       (aliased-p nil)
-       (in-p nil)
-       (out-p nil)
-       (not-null-p nil)
-       (access-p nil)
-       ident-col
-       colon-col
-       in-col
-       out-col
-       type-col
-       default-col)
-
-    ;; accumulate info across all params
-    (while (not (zerop i))
-      (setq i (1- i))
-      (setq param (nth i paramlist))
-
-      ;; identifier list
-      (setq len 0
-           j   0)
-      (mapc (lambda (ident)
-             (setq j (1+ j))
-             (setq len (+ len (length ident))))
-           (nth 0 param))
-      (setq len (+ len (* 2 (1- j)))); space for commas
-      (setq ident-len (max ident-len len))
-
-      ;; we align the defaults after the types that have defaults, not after 
all types.
-      ;; "constant", "protected" are treated as part of 'type'
-      (when (nth 9 param)
-       (setq type-len
-             (max type-len
-                  (+ (length (nth 8 param))
-                     (if (nth 6 param) 10 0); "constant "
-                     (if (nth 7 param) 10 0); protected
-                     ))))
-
-      (setq aliased-p (or aliased-p (nth 1 param)))
-      (setq in-p (or in-p (nth 2 param)))
-      (setq out-p (or out-p (nth 3 param)))
-      (setq not-null-p (or not-null-p (nth 4 param)))
-      (setq access-p (or access-p (nth 5 param)))
-      )
-
-    (let ((space-before-p (save-excursion (skip-chars-backward " \t") (not 
(bolp))))
-         (space-after-p (save-excursion (skip-chars-forward " \t") (not (or (= 
(char-after) ?\;) (eolp))))))
-      (when space-before-p
-       ;; paramlist starts on same line as subprogram identifier; clean
-       ;; up whitespace. Allow for code on same line as closing paren
-       ;; ('return' or ';').
-       (skip-syntax-forward " ")
-       (delete-char (- (skip-syntax-backward " ")))
-       (if space-after-p
-           (progn
-             (insert "  ")
-             (forward-char -1))
-         (insert " "))
-       ))
-
-    (insert "(")
-
-    ;; compute columns.
-    (setq ident-col (current-column))
-    (setq colon-col (+ ident-col ident-len 1))
-    (setq in-col
-         (+ colon-col (if aliased-p 10 2))); ": aliased ..."
-    (setq out-col (+ in-col (if in-p 3 0))); ": [aliased] in "
-    (setq type-col
-         (+ in-col
-            (cond
-             ;; 'not null' without access is part of the type
-             ((and not-null-p access-p) 16); ": [aliased] not null access "
-             (access-p 7);         ": [aliased] access "
-             ((and in-p out-p) 7); ": [aliased] in out "
-             (in-p 3);             ": [aliased] in "
-             (out-p 4);            ": [aliased] out "
-             (t 0))));             ": [aliased] "
-
-    (setq default-col (+ 1 type-col type-len))
-
-    (setq i (length paramlist))
-    (while (not (zerop i))
-      (setq i (1- i))
-      (setq param (nth i paramlist))
-
-      ;; insert identifiers, space and colon
-      (mapc (lambda (ident)
-             (insert ident)
-             (insert ", "))
-           (nth 0 param))
-      (delete-char -2); last ", "
-      (indent-to colon-col)
-      (insert ": ")
-
-      (when (nth 1 param)
-       (insert "aliased "))
-
-      (indent-to in-col)
-      (when (nth 2 param)
-       (insert "in "))
-
-      (when (nth 3 param)
-       (indent-to out-col)
-       (insert "out "))
-
-      (when (and (nth 4 param) ;; not null
-                (nth 5 param)) ;; access
-       (insert "not null access"))
-
-      (when (and (not (nth 4 param)) ;; not null
-                (nth 5 param)) ;; access
-       (insert "access"))
-
-      (indent-to type-col)
-
-      (when (and (nth 4 param) ;; not null
-                (not (nth 5 param))) ;; access
-       (insert "not null "))
-
-      (when (nth 6 param)
-       (insert "constant "))
-
-      (when (nth 7 param)
-       (insert "protected "))
-
-      (insert (nth 8 param)); type
-
-      (when (nth 9 param); default
-       (indent-to default-col)
-       (insert ":= ")
-       (insert (nth 9 param)))
-
-      (if (zerop i)
-         (insert ")")
-       (insert ";")
-       (newline)
-       (indent-to ident-col))
-      )
-    ))
-
-(defun ada-insert-paramlist-single-line (paramlist)
-  "Insert a single-line formatted PARAMLIST in the buffer."
-  ;; point is properly indented
-  (let ((i (length paramlist))
-       param)
-
-    ;; clean up whitespace
-    (delete-char (- (skip-syntax-forward " ")))
-    (insert "(")
-
-    (setq i (length paramlist))
-    (while (not (zerop i))
-      (setq i (1- i))
-      (setq param (nth i paramlist))
-
-      ;; insert identifiers, space and colon
-      (mapc (lambda (ident)
-             (insert ident)
-             (insert ", "))
-           (nth 0 param))
-      (delete-char -2); last ", "
-
-      (insert " : ")
-
-      (when (nth 1 param)
-       (insert "aliased "))
-
-      (when (nth 2 param)
-       (insert "in "))
-
-      (when (nth 3 param)
-       (insert "out "))
-
-      (when (nth 4 param)
-       (insert "not null "))
-
-      (when (nth 5 param)
-       (insert "access "))
-
-      (when (nth 6 param)
-       (insert "constant "))
-      (when (nth 7 param)
-       (insert "protected "))
-      (insert (nth 8 param)); type
-
-      (when (nth 9 param); default
-       (insert " := ")
-       (insert (nth 9 param)))
-
-      (if (zerop i)
-         (if (= (char-after) ?\;)
-             (insert ")")
-           (insert ") "))
-       (insert "; "))
-      )
-    ))
-
-(defvar ada-reset-parser nil
-  ;; Supplied by indentation engine parser
-  "Function to reset parser, to clear confused state."
-  )
-
-(defun ada-reset-parser ()
-  "See variable ’ada-reset-parser’."
-  (interactive)
-  (when ada-reset-parser
-    (funcall ada-reset-parser)))
-
-(defvar ada-show-parse-error nil
-  ;; Supplied by indentation engine parser
-  "Function to show last error reported by indentation parser."
-  )
-
-(defun ada-show-parse-error ()
-  (interactive)
-  (when ada-show-parse-error
-    (funcall ada-show-parse-error)))
-
-;;;; auto-casing
-
-(defvar ada-case-full-exceptions '()
-  "Alist of words (entities) that have special casing, built from
-project file casing file list full word exceptions. Indexed by
-properly cased word; value is t.")
-
-(defvar ada-case-partial-exceptions '()
-  "Alist of partial words that have special casing, built from
-project casing files list partial word exceptions. Indexed by
-properly cased word; value is t.")
-
-(defun ada-case-show-files ()
-  "Show current casing files list."
-  (interactive)
-  (if (ada-prj-get 'casing)
-      (progn
-       (pop-to-buffer (get-buffer-create "*casing files*"))
-       (erase-buffer)
-       (dolist (file (ada-prj-get 'casing))
-         (insert (format "%s\n" file))))
-    (message "no casing files")
-    ))
-
-(defun ada-case-save-exceptions (full-exceptions partial-exceptions file-name)
-  "Save FULL-EXCEPTIONS, PARTIAL-EXCEPTIONS to the file FILE-NAME."
-  (with-temp-file (expand-file-name file-name)
-    (mapc (lambda (x) (insert (car x) "\n"))
-         (sort (copy-sequence full-exceptions)
-               (lambda(a b) (string< (car a) (car b)))))
-    (mapc (lambda (x) (insert "*" (car x) "\n"))
-         (sort (copy-sequence partial-exceptions)
-               (lambda(a b) (string< (car a) (car b)))))
-    ))
-
-(defun ada-case-read-exceptions (file-name)
-  "Read the content of the casing exception file FILE-NAME.
-Return (cons full-exceptions partial-exceptions)."
-  (setq file-name (expand-file-name (substitute-in-file-name file-name)))
-  (if (file-readable-p file-name)
-      (let (full-exceptions partial-exceptions word)
-       (with-temp-buffer
-         (insert-file-contents file-name)
-         (while (not (eobp))
-
-           (setq word (buffer-substring-no-properties
-                       (point) (save-excursion (skip-syntax-forward "w_") 
(point))))
-
-           (if (char-equal (string-to-char word) ?*)
-               ;; partial word exception
-               (progn
-                 (setq word (substring word 1))
-                 (unless (assoc-string word partial-exceptions t)
-                   (push (cons word t) partial-exceptions)))
-
-             ;; full word exception
-             (unless (assoc-string word full-exceptions t)
-               (push (cons word t) full-exceptions)))
-
-           (forward-line 1))
-         )
-       (cons full-exceptions partial-exceptions))
-
-    ;; else file not readable; might be a new project with no
-    ;; exceptions yet, so just return empty pair
-    (message "'%s' is not a readable file." file-name)
-    '(nil . nil)
-    ))
-
-(defun ada-case-merge-exceptions (result new)
-  "Merge NEW exeptions into RESULT.
-An item in both lists has the RESULT value."
-  (dolist (item new)
-    (unless (assoc-string (car item) result t)
-      (push item result)))
-  result)
-
-(defun ada-case-merge-all-exceptions (exceptions)
-  "Merge EXCEPTIONS into `ada-case-full-exceptions', 
`ada-case-partial-exceptions'."
-  (setq ada-case-full-exceptions (ada-case-merge-exceptions 
ada-case-full-exceptions (car exceptions)))
-  (setq ada-case-partial-exceptions (ada-case-merge-exceptions 
ada-case-partial-exceptions (cdr exceptions))))
-
-(defun ada-case-read-all-exceptions ()
-  "Read case exceptions from all files in project casing files,
-replacing current values of `ada-case-full-exceptions', 
`ada-case-partial-exceptions'."
-  (interactive)
-  (setq ada-case-full-exceptions '()
-       ada-case-partial-exceptions '())
-
-  (when (ada-prj-get 'casing)
-    (dolist (file (ada-prj-get 'casing))
-      (ada-case-merge-all-exceptions (ada-case-read-exceptions file))))
-  )
-
-(defun ada-case-add-exception (word exceptions)
-  "Add case exception WORD to EXCEPTIONS, replacing current entry, if any."
-  (if (assoc-string word exceptions t)
-      (setcar (assoc-string word exceptions t) word)
-    (push (cons word t) exceptions))
-  exceptions)
-
-(defun ada-case-create-exception (&optional word file-name partial)
-  "Define WORD as an exception for the casing system, save it in FILE-NAME.
-If PARTIAL is non-nil, create a partial word exception.  WORD
-defaults to the active region, or the word at point.  User is
-prompted to choose a file from project variable casing if it is a
-list."
-  (interactive)
-  (let ((casing (ada-prj-get 'casing)))
-    (setq file-name
-         (cond
-          (file-name file-name)
-
-          ((< 1 (length casing))
-           (completing-read "case exception file: " casing
-                            nil ;; predicate
-                            t   ;; require-match
-                            nil ;; initial-input
-                            nil ;; hist
-                            (car casing) ;; default
-                            ))
-          ((= 1 (length casing))
-           (car casing))
-
-          (t
-           (if ada-prj-current-file
-               (error "No exception file specified; set `casing' in project 
file.")
-             ;; IMPROVEME: could prompt, but then need to write to actual 
project file
-             ;;        (let ((temp
-             ;;               (read-file-name
-             ;;                "No exception file specified; adding to 
project. file: ")))
-             ;;          (message "remember to add %s to project file" temp)
-             ;;          (ada-prj-put 'casing temp)
-             ;;          temp)
-             (error "No exception file specified, and no project active. See 
variable `ada-case-exception-file'.")))
-          )))
-
-  (unless word
-    (if (use-region-p)
-       (progn
-         (setq word (buffer-substring-no-properties (region-beginning) 
(region-end)))
-         (deactivate-mark))
-      (save-excursion
-       (let ((syntax (if partial "w" "w_")))
-         (skip-syntax-backward syntax)
-         (setq word
-               (buffer-substring-no-properties
-                (point)
-                (progn (skip-syntax-forward syntax) (point))
-                ))))))
-
-  (let* ((exceptions (ada-case-read-exceptions file-name))
-        (full-exceptions (car exceptions))
-        (partial-exceptions (cdr exceptions)))
-
-    (cond
-     ((null partial)
-      (setq ada-case-full-exceptions (ada-case-add-exception word 
ada-case-full-exceptions))
-      (setq full-exceptions (ada-case-add-exception word full-exceptions)))
-
-     (t
-      (setq ada-case-partial-exceptions (ada-case-add-exception word 
ada-case-partial-exceptions))
-      (setq partial-exceptions (ada-case-add-exception word 
partial-exceptions)))
-     )
-    (ada-case-save-exceptions full-exceptions partial-exceptions file-name)
-    (message "created %s case exception '%s' in file '%s'"
-            (if partial "partial" "full")
-            word
-            file-name)
-    ))
-
-(defun ada-case-create-partial-exception ()
-  "Define active region or word at point as a partial word exception.
-User is prompted to choose a file from project variable casing if it is a 
list."
-  (interactive)
-  (ada-case-create-exception nil nil t))
-
-(defun ada-in-based-numeric-literal-p ()
-  "Return t if point is after a prefix of a based numeric literal."
-  (looking-back "\\([0-9]+#[0-9a-fA-F_]+\\)" (line-beginning-position)))
-
-(defvar ada-keywords nil
-  "List of Ada keywords for current `ada-language-version'.")
-
-(defun ada-after-keyword-p ()
-  "Return non-nil if point is after an element of `ada-keywords'."
-  (let ((word (buffer-substring-no-properties
-              (save-excursion (skip-syntax-backward "w_") (point))
-              (point))))
-    (member (downcase word) ada-keywords)))
-
-(defun ada-case-keyword (beg end)
-  (cl-ecase ada-case-keyword
-    (lower-case (downcase-region beg end))
-    (upper-case (upcase-region beg end))
-    ))
-
-(defun ada-case-identifier (start end force-case-strict)
-  (cl-ecase ada-case-identifier
-    (mixed-case (ada-mixed-case start end force-case-strict))
-    (lower-case (downcase-region start end))
-    (upper-case (upcase-region start end))
-    ))
-
-(defun ada-mixed-case (start end force-case-strict)
-  "Adjust case of region START END to Mixed_Case."
-  (let ((done nil)
-       next)
-    (if (or force-case-strict ada-case-strict)
-       (downcase-region start end))
-    (goto-char start)
-    (while (not done)
-      (setq next
-           (or
-            (save-excursion (when (search-forward "_" end t) (point-marker)))
-            (copy-marker (1+ end))))
-
-      ;; upcase first char
-      (upcase-region (point) (1+ (point)))
-
-      (goto-char next)
-      (if (< (point) end)
-         (setq start (point))
-       (setq done t))
-      )))
-
-(defun ada-case-adjust-identifier (&optional force-case)
-  "Adjust case of the previous word as an identifier.
-Uses `ada-case-identifier', with exceptions defined in
-`ada-case-full-exceptions', `ada-case-partial-exceptions'."
-  (interactive)
-  (save-excursion
-    (let ((end   (point-marker))
-         (start (progn (skip-syntax-backward "w_") (point)))
-         match
-         next
-         (done nil))
-
-      (if (setq match (assoc-string (buffer-substring-no-properties start end) 
ada-case-full-exceptions t))
-         ;; full word exception
-         (progn
-           ;; 'save-excursion' puts a marker at 'end'; if we do
-           ;; 'delete-region' first, it moves that marker to 'start',
-           ;; then 'insert' inserts replacement text after the
-           ;; marker, defeating 'save-excursion'. So we do 'insert' first.
-           (insert (car match))
-           (delete-region (point) end))
-
-       ;; else apply ada-case-identifier
-       (ada-case-identifier start end force-case)
-
-       ;; apply partial-exceptions
-       (goto-char start)
-       (while (not done)
-         (setq next
-               (or
-                (save-excursion (when (search-forward "_" end t) 
(point-marker)))
-                (copy-marker (1+ end))))
-
-         (when (setq match (assoc-string (buffer-substring-no-properties start 
(1- next))
-                                       ada-case-partial-exceptions t))
-           ;; see comment above at 'full word exception' for why
-           ;; we do insert first.
-           (insert (car match))
-           (delete-region (point) (1- next)))
-
-         (goto-char next)
-         (if (< (point) end)
-             (setq start (point))
-           (setq done t))
-          )))))
-
-(defun ada-case-adjust-keyword ()
-  "Adjust the case of the previous word as a keyword.
-`word' here is allowed to be underscore-separated (GPR external_as_list)."
-  (save-excursion
-    (let ((end   (point-marker))
-         (start (progn (skip-syntax-backward "w_") (point))))
-      (ada-case-keyword start end)
-    )))
-
-(defun ada-case-adjust (&optional typed-char in-comment)
-  "Adjust the case of the word before point.
-When invoked interactively, TYPED-CHAR must be
-`last-command-event', and it must not have been inserted yet.
-If IN-COMMENT is non-nil, adjust case of words in comments and strings as code,
-and treat `ada-case-strict' as t in code.."
-  (when (not (bobp))
-    (when (save-excursion
-           (forward-char -1); back to last character in word
-           (and (not (bobp))
-                (eq (char-syntax (char-after)) ?w); it can be capitalized
-
-                (not (and (eq typed-char ?')
-                          (eq (char-before (point)) ?'))); character literal
-
-                (or in-comment
-                    (not (ada-in-string-or-comment-p)))
-                ;; we sometimes want to capitialize an Ada identifier
-                ;; referenced in a comment, via
-                ;; ada-case-adjust-at-point.
-
-                (not (ada-in-based-numeric-literal-p))
-                ;; don't adjust case on hex digits
-                ))
-
-      ;; The indentation engine may trigger a reparse on
-      ;; non-whitespace changes, but we know we don't need to reparse
-      ;; for this change (assuming the user has not abused case
-      ;; exceptions!).
-      (let ((inhibit-modification-hooks t))
-       (cond
-        ;; Some attributes are also keywords, but captialized as
-        ;; attributes. So check for attribute first.
-        ((and
-          (not in-comment)
-          (save-excursion
-            (skip-syntax-backward "w_")
-            (eq (char-before) ?')))
-         (ada-case-adjust-identifier in-comment))
-
-        ((and
-          (not in-comment)
-          (not (eq typed-char ?_))
-          (ada-after-keyword-p))
-         (ada-case-adjust-keyword))
-
-        (t (ada-case-adjust-identifier in-comment))
-        ))
-      )))
-
-(defun ada-case-adjust-at-point (&optional in-comment)
-  "If ’ada-auto-case’ is non-nil, adjust case of word at point, move to end of 
word.
-With prefix arg, adjust case as code even if in comment or string;
-otherwise, capitalize words in comments and strings.
-If ’ada-auto-case’ is nil, capitalize current word."
-  (interactive "P")
-  (cond
-   ((or (null ada-auto-case)
-       (and (not in-comment)
-            (ada-in-string-or-comment-p)))
-    (skip-syntax-backward "w_")
-    (capitalize-word 1))
-
-   (t
-    (when
-       (and (not (eobp))
-            ;; we use '(syntax-after (point))' here, not '(char-syntax
-            ;; (char-after))', because the latter does not respect
-            ;; ada-syntax-propertize.
-            (memq (syntax-class (syntax-after (point))) '(2 3)))
-      (skip-syntax-forward "w_"))
-    (ada-case-adjust nil in-comment))
-   ))
-
-(defun ada-case-adjust-region (begin end)
-  "Adjust case of all words in region BEGIN END."
-  (interactive "r")
-  (narrow-to-region begin end)
-  (save-excursion
-    (goto-char begin)
-    (while (not (eobp))
-      (forward-comment (point-max))
-      (skip-syntax-forward "^w_")
-      (skip-syntax-forward "w_")
-      (ada-case-adjust)))
-  (widen))
-
-(defun ada-case-adjust-buffer ()
-  "Adjust case of current buffer."
-  (interactive)
-  (ada-case-adjust-region (point-min) (point-max)))
-
-(defun ada-case-adjust-interactive (arg)
-  "If `ada-auto-case' is non-nil, adjust the case of the previous word, and 
process the character just typed.
-To be bound to keys that should cause auto-casing.
-ARG is the prefix the user entered with \\[universal-argument]."
-  (interactive "P")
-
-  ;; character typed has not been inserted yet
-  (let ((lastk last-command-event)
-       (do-adjust nil))
-    (cond
-     ((null ada-auto-case))
-     ((eq ada-auto-case 'not-upper-case)
-      (save-excursion
-       (let* ((begin (progn (skip-syntax-backward "w_") (point)))
-              (end  (progn (skip-syntax-forward "w_") (point)))
-              (word (buffer-substring-no-properties begin end)))
-         (setq do-adjust (not (string-equal word (upcase word)))))))
-     (t
-      (setq do-adjust t)))
-
-    (cond
-     ((eq lastk ?\n)
-        (when do-adjust
-         (ada-case-adjust lastk))
-       (funcall ada-lfd-binding))
-
-     ((memq lastk '(?\r return))
-      (when do-adjust
-       (ada-case-adjust lastk))
-      (funcall ada-ret-binding))
-
-     (t
-      (when do-adjust
-       (ada-case-adjust lastk))
-      (self-insert-command (prefix-numeric-value arg)))
-     )))
-
-;;;; project files
-
-;; An Emacs Ada mode project file can specify several things:
-;;
-;; - a compiler-specific project file
-;;
-;; - compiler-specific environment variables
-;;
-;; - other compiler-specific things (see the compiler support elisp code)
-;;
-;; - a list of source directories (in addition to those specified in the 
compiler project file)
-;;
-;; - a casing exception file
-;;
-;; All of the data used by Emacs Ada mode functions specified in a
-;; project file is stored in a property list. The property list is
-;; stored in an alist indexed by the project file name, so multiple
-;; project files can be selected without re-parsing them (some
-;; compiler project files can take a long time to parse).
-
-(defvar ada-prj-alist nil
-  "Alist holding currently parsed Emacs Ada project files. Indexed by absolute 
project file name.")
-
-(defvar ada-prj-current-file nil
-  "Current Emacs Ada project file.")
-
-(defvar ada-prj-current-project nil
-  "Current Emacs Ada mode project; a plist.")
-
-(defun ada-prj-get (prop &optional plist)
-  "Return value of PROP in PLIST.
-Optional PLIST defaults to `ada-prj-current-project'."
-  (let ((prj (or plist ada-prj-current-project)))
-    (if prj
-       (plist-get prj prop)
-
-      ;; no project, just use default vars
-      ;; must match code in ada-prj-default, except for src_dir.
-      (cl-case prop
-       (ada_compiler    ada-compiler)
-       (auto_case       ada-auto-case)
-       (case_keyword    ada-case-keyword)
-       (case_identifier ada-case-identifier)
-       (case_strict     ada-case-strict)
-       (casing          (if (listp ada-case-exception-file)
-                            ada-case-exception-file
-                          (list ada-case-exception-file)))
-       (path_sep        path-separator)
-       (proc_env        (cl-copy-list process-environment))
-       (src_dir         (list (directory-file-name default-directory)))
-        (obj_dir         (list (directory-file-name default-directory)))
-       (xref_tool       ada-xref-tool)
-       ))))
-
-(defun ada-prj-put (prop val &optional plist)
-  "Set value of PROP in PLIST to VAL.
-Optional PLIST defaults to `ada-prj-current-project'."
-  (plist-put (or plist ada-prj-current-project) prop val))
-
-(defun ada-require-project-file ()
-  (unless ada-prj-current-file
-    (error "no Emacs Ada project file specified")))
-
-(defvar ada-prj-default-list nil
-  ;; project file parse
-  "List of functions to add default project variables. Called
-with one argument; the default project properties
-list. `default-directory' is set to the directory containing the
-project file. Function should add to the properties list and
-return it.")
-
-(defvar ada-prj-default-compiler-alist nil
-  ;; project file parse
-  "Compiler-specific function to set default project variables.
-Indexed by ada-compiler.  Called with one argument; the default
-project properties list. Function should add to the properties
-list and return it.")
-
-(defvar ada-prj-default-xref-alist nil
-  ;; project file parse
-  "Xref-tool-specific function to set default project variables.
-Indexed by ada-xref-tool.  Called with one argument; the default
-project properties list. Function should add to the properties
-list and return it.")
-
-(defun ada-prj-default (&optional src-dir)
-  "Return the default project properties list.
-If SRC-DIR is non-nil, use it as the default for src_dir.
-Include properties set via `ada-prj-default-compiler-alist',
-`ada-prj-default-xref-alist'."
-
-  (let (project func)
-    (setq
-     project
-     (list
-      ;; variable name alphabetical order
-      'ada_compiler    ada-compiler
-      'auto_case       ada-auto-case
-      'case_keyword    ada-case-keyword
-      'case_identifier ada-case-identifier
-      'case_strict     ada-case-strict
-      'casing          (if (listp ada-case-exception-file)
-                          ada-case-exception-file
-                        (list ada-case-exception-file))
-      'path_sep        path-separator;; prj variable so users can override it 
for their compiler
-      'proc_env        (cl-copy-list process-environment)
-      'src_dir         (if src-dir (list src-dir) nil)
-      'xref_tool       ada-xref-tool
-      ))
-
-    (cl-dolist (func ada-prj-default-list)
-      (setq project (funcall func project)))
-
-    (setq func (cdr (assq ada-compiler ada-prj-default-compiler-alist)))
-    (when func (setq project (funcall func project)))
-    (setq func (cdr (assq ada-xref-tool ada-prj-default-xref-alist)))
-    (when func (setq project (funcall func project)))
-    project))
-
-(defvar ada-prj-parser-alist
-  (mapcar
-   (lambda (ext) (cons ext #'ada-prj-parse-file-1))
-   ada-prj-file-extensions)
-  ;; project file parse
-  "Alist of parsers for project files, indexed by file extension.
-Default provides the minimal Ada mode parser; compiler support
-code may add other parsers.  Parser is called with two arguments;
-the project file name and the current project property
-list. Parser must modify or add to the property list and return it.")
-
-;; This autoloaded because it is often used in Makefiles, and thus
-;; will be the first ada-mode function executed.
-;;;###autoload
-(defun ada-parse-prj-file (prj-file)
-  "Read Emacs Ada or compiler-specific project file PRJ-FILE, set project 
properties in `ada-prj-alist'."
-  ;; Not called ada-prj-parse-file for Ada mode 4.01 compatibility
-  (setq prj-file (expand-file-name prj-file))
-
-  (unless (file-readable-p prj-file)
-    (error "Project file '%s' is not readable" prj-file))
-
-  (run-hooks `ada-prj-parse-hook)
-
-  (let* ((default-directory (file-name-directory prj-file))
-        (project (ada-prj-default))
-        (parser (cdr (assoc (file-name-extension prj-file) 
ada-prj-parser-alist))))
-
-    (if parser
-       ;; parser may reference the "current project", so bind that now.
-       (let ((ada-prj-current-project project)
-             (ada-prj-current-file prj-file))
-         (setq project (funcall parser prj-file project)))
-      (error "no project file parser defined for '%s'" prj-file))
-
-    ;; Store the project properties
-    (if (assoc prj-file ada-prj-alist)
-       (setcdr (assoc prj-file ada-prj-alist) project)
-      (add-to-list 'ada-prj-alist (cons prj-file project)))
-
-    ;; return t for interactive use
-    t))
-
-(defun ada-prj-reparse-select-current ()
-  "Reparse the current project file, re-select it.
-Useful when the project file has been edited."
-  (interactive)
-  (ada-parse-prj-file ada-prj-current-file)
-  (ada-select-prj-file ada-prj-current-file))
-
-(defun ada-reset-comp-prj ()
-  "Reset compilation and project vars affected by a change in compiler version.
-Useful when experimenting with an upgraded compiler."
-  (interactive)
-  (when (buffer-live-p "*compilation*")
-    (with-current-buffer "*compilation*"
-      (setq compilation-environment nil)))
-  (setq ada-prj-alist nil)
-  (setq ada-prj-current-project nil)
-  )
-
-(defvar ada-prj-parse-one-compiler nil
-  ;; project file parse
-  "Compiler-specific function to process one Ada project property.
-Indexed by project variable ada_compiler.
-Called with three arguments; the property name, property value,
-and project properties list. Function should add to or modify the
-properties list and return it, or return nil if the name is not
-recognized.")
-
-(defvar ada-prj-parse-one-xref nil
-  ;; project file parse
-  "Xref-tool-specific function to process one Ada project property.
-Indexed by project variable xref_tool.
-Called with three arguments; the property name, property value,
-and project properties list. Function should add to or modify the
-properties list and return it, or return nil if the name is not
-recognized.")
-
-(defvar ada-prj-parse-final-compiler nil
-  ;; project file parse
-  "Alist of compiler-specific functions to finish processing Ada project 
properties.
-Indexed by project variable ada_compiler.
-Called with one argument; the project properties list. Function
-should add to or modify the list and return it.")
-
-(defvar ada-prj-parse-final-xref nil
-  ;; project file parse
-  "Alist of xref-tool-specific functions to finish processing Ada project 
properties.
-Indexed by project variable xref_tool.
-Called with one argument; the project properties list. Function
-should add to or modify the list and return it.")
-
-(defun ada-prj-parse-file-1 (prj-file project)
-  "Parse the Ada mode project file PRJ-FILE, set project properties in PROJECT.
-Return new value of PROJECT."
-  (let (;; fields that are lists or that otherwise require special processing
-       casing src_dir obj_dir
-       tmp-prj
-       (parse-one-compiler (cdr (assoc ada-compiler 
ada-prj-parse-one-compiler)))
-       (parse-final-compiler (cdr (assoc ada-compiler 
ada-prj-parse-final-compiler)))
-       (parse-one-xref (cdr (assoc ada-xref-tool ada-prj-parse-one-xref)))
-       (parse-final-xref (cdr (assoc ada-xref-tool ada-prj-parse-final-xref))))
-
-    (with-current-buffer (find-file-noselect prj-file)
-      (goto-char (point-min))
-
-      ;; process each line
-      (while (not (eobp))
-
-       ;; ignore lines that don't have the format "name=value", put
-       ;; 'name', 'value' in match-string.
-       (when (looking-at "^\\([^=\n]+\\)=\\(.*\\)")
-         (cond
-          ;; variable name alphabetical order
-
-          ((string= (match-string 1) "ada_compiler")
-           (let ((comp (intern (match-string 2))))
-             (setq project (plist-put project 'ada_compiler comp))
-             (setq parse-one-compiler (cdr (assq comp 
ada-prj-parse-one-compiler)))
-             (setq parse-final-compiler (cdr (assq comp 
ada-prj-parse-final-compiler)))))
-
-          ((string= (match-string 1) "auto_case")
-           (setq project (plist-put project 'auto_case (intern (match-string 
2)))))
-
-          ((string= (match-string 1) "case_keyword")
-           (setq project (plist-put project 'case_keyword (intern 
(match-string 2)))))
-
-          ((string= (match-string 1) "case_identifier")
-           (setq project (plist-put project 'case_identifier (intern 
(match-string 2)))))
-
-          ((string= (match-string 1) "case_strict")
-           (setq project (plist-put project 'case_strict (intern (match-string 
2)))))
-
-          ((string= (match-string 1) "casing")
-            (cl-pushnew (expand-file-name
-                         (substitute-in-file-name (match-string 2)))
-                        casing :test #'equal))
-
-          ((string= (match-string 1) "el_file")
-           (let ((file (expand-file-name (substitute-in-file-name 
(match-string 2)))))
-             (setq project (plist-put project 'el_file file))
-             ;; eval now as well as in select, since it might affect parsing
-             (load-file file)))
-
-          ((string= (match-string 1) "src_dir")
-            (cl-pushnew (file-name-as-directory
-                         (expand-file-name (match-string 2)))
-                        src_dir :test #'equal))
-
-          ((string= (match-string 1) "obj_dir")
-           (cl-pushnew (file-name-as-directory
-                        (expand-file-name (match-string 2)))
-                       obj_dir :test #'equal))
-
-          ((string= (match-string 1) "xref_tool")
-           (let ((xref (intern (match-string 2))))
-             (setq project (plist-put project 'xref_tool xref))
-             (setq parse-one-xref (cdr (assq xref ada-prj-parse-one-xref)))
-             (setq parse-final-xref (cdr (assq xref 
ada-prj-parse-final-xref)))))
-
-          (t
-           (if (or
-                (and parse-one-compiler
-                     (setq tmp-prj (funcall parse-one-compiler (match-string 
1) (match-string 2) project)))
-                (and parse-one-xref
-                     (setq tmp-prj (funcall parse-one-xref (match-string 1) 
(match-string 2) project))))
-
-               (setq project tmp-prj)
-
-             ;; Any other field in the file is set as an environment
-             ;; variable or a project file variable.
-             (if (= ?$ (elt (match-string 1) 0))
-                 ;; process env var. We don't do expand-file-name
-                 ;; here because the application may be expecting a
-                 ;; simple string.
-                 (let ((process-environment (cl-copy-list (plist-get project 
'proc_env))))
-                   (setenv (substring (match-string 1) 1)
-                           (substitute-in-file-name (match-string 2)))
-                   (setq project
-                         (plist-put project 'proc_env (cl-copy-list 
process-environment))))
-
-               ;; not recognized; assume it is a user-defined variable like 
"comp_opt"
-               (setq project (plist-put project (intern (match-string 1)) 
(match-string 2)))
-             )))
-          ))
-
-       (forward-line 1))
-
-      );; done reading file
-
-    ;; process accumulated lists
-    (if casing (setq project (plist-put project 'casing (reverse casing))))
-    (if src_dir (setq project (plist-put project 'src_dir (reverse src_dir))))
-    (if obj_dir (setq project (plist-put project 'obj_dir (reverse obj_dir))))
-
-    (when parse-final-compiler
-      ;; parse-final-compiler may reference the "current project", so
-      ;; bind that now, to include the properties set above.
-      (let ((ada-prj-current-project project)
-           (ada-prj-current-file prj-file))
-       (setq project (funcall parse-final-compiler project))))
-
-    (when parse-final-xref
-      (let ((ada-prj-current-project project)
-           (ada-prj-current-file prj-file))
-       (setq project (funcall parse-final-xref project))))
-
-    project
-    ))
-
-(defvar ada-select-prj-compiler nil
-  "Alist of functions to call for compiler specific project file selection.
-Indexed by project variable ada_compiler.")
-
-(defvar ada-deselect-prj-compiler nil
-  "Alist of functions to call for compiler specific project file deselection.
-Indexed by project variable ada_compiler.")
-
-(defvar ada-select-prj-xref-tool nil
-  "Alist of functions to call for xref-tool specific project file selection.
-Indexed by project variable xref_tool.")
-
-(defvar ada-deselect-prj-xref-tool nil
-  "Alist of functions to call for xref-tool specific project file deselection.
-Indexed by project variable xref_tool.")
-
-(defun ada-refresh-prj-file ()
-  "Reparse, reselect current project file.
-Useful when project has been edited."
-  (interactive)
-  (let* ((prj-file ada-prj-current-file)
-        (parsed (assoc prj-file ada-prj-alist)))
-    (setq ada-prj-current-file nil)
-    (setq ada-prj-current-project nil)
-    (when parsed
-      (setq ada-prj-alist (delq parsed ada-prj-alist)))
-    (ada-select-prj-file prj-file nil)))
-
-;; This is autoloaded because it is often used in Makefiles, and thus
-;; will be the first ada-mode function executed.
-;;;###autoload
-(defun ada-select-prj-file (prj-file &optional no-force)
-  "Select PRJ-FILE as the current project file, parsing it if necessary.
-Deselects the current project first."
-  (interactive)
-  (setq prj-file (expand-file-name prj-file))
-
-  (when (or (not no-force)
-           (not (string-equal prj-file ada-prj-current-project)))
-    (setq ada-prj-current-project (cdr (assoc prj-file ada-prj-alist)))
-
-    (when (null ada-prj-current-project)
-      (setq ada-prj-current-file nil)
-      (ada-parse-prj-file prj-file)
-      (setq ada-prj-current-project (cdr (assoc prj-file ada-prj-alist)))
-      (when (null ada-prj-current-project)
-       (error "Project file '%s' parse failed." prj-file)))
-
-    (let ((func (cdr (assq (ada-prj-get 'ada_compiler) 
ada-deselect-prj-compiler))))
-      (when func (funcall func)))
-
-    (let ((func (cdr (assq (ada-prj-get 'xref_tool) 
ada-deselect-prj-xref-tool))))
-      (when func (funcall func)))
-
-    (setq ada-prj-current-file prj-file)
-
-    ;; Project file should fully specify what compilers are used,
-    ;; including what compilation filters they need. There may be more
-    ;; than just an Ada compiler.
-    (setq compilation-error-regexp-alist nil)
-    (setq compilation-filter-hook nil)
-
-    (when (ada-prj-get 'el_file)
-      (load-file (ada-prj-get 'el_file)))
-
-    (ada-case-read-all-exceptions)
-
-    (setq compilation-search-path (ada-prj-get 'src_dir))
-
-    (let ((func (cdr (assq (ada-prj-get 'ada_compiler) 
ada-select-prj-compiler))))
-      (when func (funcall func)))
-
-    (let ((func (cdr (assq (ada-prj-get 'xref_tool) 
ada-select-prj-xref-tool))))
-      (when func (funcall func)))
-
-    ;; return 't', for decent display in message buffer when called 
interactively
-    t))
-
-(defun ada-deselect-prj (prj)
-  "Deselect the project file PRJ, if current."
-  ;; For use as ’project-deselect’ (experimental). Duplicates part of
-  ;; ’ada-select-prj-file’; should delete that, use this.
-  (when (string-equal prj ada-prj-current-file)
-    (let ((func (cdr (assq (ada-prj-get 'ada_compiler) 
ada-deselect-prj-compiler))))
-      (when func (funcall func)))
-
-    (let ((func (cdr (assq (ada-prj-get 'xref_tool) 
ada-deselect-prj-xref-tool))))
-      (when func (funcall func)))
-
-    (setq ada-prj-current-project nil)
-    ))
-
-(defun ada-create-select-default-prj (&optional directory)
-  "Create a default project with src_dir set to DIRECTORY (default current 
directory), select it."
-  (let* ((dir (or directory default-directory))
-        (prj-file (expand-file-name "default_.adp" dir))
-        (project (ada-prj-default dir)))
-
-    (if (assoc prj-file ada-prj-alist)
-       (setcdr (assoc prj-file ada-prj-alist) project)
-      (add-to-list 'ada-prj-alist (cons prj-file project)))
-
-    (ada-select-prj-file prj-file)
-    ))
-
-(defun ada-prj-select ()
-  "Select the current project file from the list of currently available 
project files."
-  (interactive)
-  (ada-select-prj-file (completing-read "project: " ada-prj-alist nil t))
-  )
-
-(defun ada-prj-delete ()
-  "Delete a project file from the list of currently available project files."
-  (interactive)
-  (let* ((prj-file (completing-read "project: " ada-prj-alist nil t))
-        (prj-entry (assoc prj-file ada-prj-alist)))
-    (setq ada-prj-alist (delete prj-entry ada-prj-alist))
-    ))
-
-(defun ada-prj-show ()
-  "Show current Emacs Ada mode project file."
-  (interactive)
-  (message "current Emacs Ada mode project file: %s" ada-prj-current-file))
-
-(defvar ada-prj-show-prj-path nil
-  ;; Supplied by compiler
-  "Function to show project file search path used by compiler (and possibly 
xref tool)."
-  )
-
-(defun ada-prj-show-prj-path ()
-  (interactive)
-  (when ada-prj-show-prj-path
-    (funcall ada-prj-show-prj-path)))
-
-(defun ada-prj-show-src-path ()
-  "Show the project source file search path."
-  (interactive)
-  (if compilation-search-path
-      (progn
-       (pop-to-buffer (get-buffer-create "*Ada project source file search 
path*"))
-       (erase-buffer)
-       (dolist (file compilation-search-path)
-         (insert (format "%s\n" file))))
-    (message "no project source file search path set")
-    ))
-
-(defvar ada-show-xref-tool-buffer nil
-  ;; Supplied by xref tool
-  "Function to show process buffer used by xref tool."
-  )
-
-(defun ada-show-xref-tool-buffer ()
-  (interactive)
-  (when ada-show-xref-tool-buffer
-    (funcall ada-show-xref-tool-buffer)))
-
-;;;; syntax properties
-
-(defvar ada-mode-syntax-table
-  (let ((table (make-syntax-table)))
-    ;; (info "(elisp)Syntax Class Table" "*info syntax class table*")
-    ;; make-syntax-table sets all alphanumeric to w, etc; so we only
-    ;; have to add ada-specific things.
-
-    ;; string brackets. `%' is the obsolete alternative string
-    ;; bracket (arm J.2); if we make it syntax class ", it throws
-    ;; font-lock and indentation off the track, so we use syntax class
-    ;; $.
-    (modify-syntax-entry ?%  "$" table)
-    (modify-syntax-entry ?\" "\"" table)
-
-    ;; punctuation; operators etc
-    (modify-syntax-entry ?#  "." table); based number - 
ada-wisi-number-literal-p requires this syntax
-    (modify-syntax-entry ?&  "." table)
-    (modify-syntax-entry ?*  "." table)
-    (modify-syntax-entry ?+  "." table)
-    (modify-syntax-entry ?-  "." table); operator; see ada-syntax-propertize 
for double hyphen as comment
-    (modify-syntax-entry ?. "." table)
-    (modify-syntax-entry ?/  "." table)
-    (modify-syntax-entry ?:  "." table)
-    (modify-syntax-entry ?<  "." table)
-    (modify-syntax-entry ?=  "." table)
-    (modify-syntax-entry ?>  "." table)
-    (modify-syntax-entry ?\' "." table); attribute; see ada-syntax-propertize 
for character literal
-    (modify-syntax-entry ?\; "." table)
-    (modify-syntax-entry ?\\ "." table); default is escape; not correct for 
Ada strings
-    (modify-syntax-entry ?\|  "." table)
-
-    ;; \f and \n end a comment.
-    ;; comment start set in ada-syntax-propertize.
-    ;; flag ’s’ experimental; end unterminated string at newline.
-    (modify-syntax-entry ?\f  "> s" table)
-    (modify-syntax-entry ?\n  "> s" table)
-
-    (modify-syntax-entry ?_ "_" table); symbol constituents, not word.
-
-    (modify-syntax-entry ?\( "()" table)
-    (modify-syntax-entry ?\) ")(" table)
-
-    ;; skeleton placeholder delimiters; see ada-skel.el. We use generic
-    ;; comment delimiter class, not comment starter/comment ender, so
-    ;; these can be distinguished from line end.
-    (modify-syntax-entry ?{ "!" table)
-    (modify-syntax-entry ?} "!" table)
-
-    table
-    )
-  "Syntax table to be used for editing Ada source code.")
-
-(defvar ada-syntax-propertize-hook nil
-  ;; provided by preprocessor, lumped with xref-tool
-  "Hook run from `ada-syntax-propertize'.
-Called by `syntax-propertize', which is called by font-lock in
-`after-change-functions'. Therefore, care must be taken to avoid
-race conditions with the grammar parser.")
-
-(defun ada-syntax-propertize (start end)
-  "For `syntax-propertize-function'.
-Assign `syntax-table' properties in region START .. END.
-In particular, character constants are set to have string syntax.
-Runs `ada-syntax-propertize-hook'."
-  ;; (info "(elisp)Syntax Properties")
-  ;;
-  ;; called from `syntax-propertize', inside save-excursion 
with-silent-modifications
-  (let ((inhibit-read-only t)
-       (inhibit-point-motion-hooks t))
-    (goto-char start)
-    (save-match-data
-      (while (re-search-forward
-             (concat
-              "[^a-zA-Z0-9)]\\('\\)[^'\n]\\('\\)"; 1, 2: character literal, 
not attribute
-              "\\|[^a-zA-Z0-9)]\\('''\\)"; 3: character literal '''
-              "\\|\\(--\\)"; 4: comment start
-              )
-             end t)
-       ;; syntax-propertize-extend-region-functions is set to
-       ;; syntax-propertize-wholelines by default. We assume no
-       ;; coding standard will permit a character literal at the
-       ;; start of a line (not preceded by whitespace).
-       (cond
-        ((match-beginning 1)
-         (put-text-property
-          (match-beginning 1) (match-end 1) 'syntax-table '(7 . ?'))
-         (put-text-property
-          (match-beginning 2) (match-end 2) 'syntax-table '(7 . ?')))
-        ((match-beginning 3)
-         (put-text-property
-          (match-beginning 3) (1+ (match-beginning 3)) 'syntax-table '(7 . ?'))
-         (put-text-property
-          (1- (match-end 3)) (match-end 3) 'syntax-table '(7 . ?')))
-        ((match-beginning 4)
-         (put-text-property
-          (match-beginning 4) (match-end 4) 'syntax-table '(11 . nil)))
-        )))
-    (run-hook-with-args 'ada-syntax-propertize-hook start end))
-  )
-
-(defun ada-in-comment-p (&optional parse-result)
-  "Return t if inside a comment.
-If PARSE-RESULT is non-nil, use it instead of calling `syntax-ppss'."
-  (nth 4 (or parse-result (syntax-ppss))))
-
-(defun ada-in-string-p (&optional parse-result)
-  "Return t if point is inside a string.
-If PARSE-RESULT is non-nil, use it instead of calling `syntax-ppss'."
-  (nth 3 (or parse-result (syntax-ppss))))
-
-(defun ada-in-string-or-comment-p (&optional parse-result)
-  "Return t if inside a comment or string.
-If PARSE-RESULT is non-nil, use it instead of calling `syntax-ppss'."
-  (setq parse-result (or parse-result (syntax-ppss)))
-  (or (ada-in-string-p parse-result) (ada-in-comment-p parse-result)))
-
-(defun ada-in-paren-p (&optional parse-result)
-  "Return t if point is inside a pair of parentheses.
-If PARSE-RESULT is non-nil, use it instead of calling `syntax-ppss'."
-  (> (nth 0 (or parse-result (syntax-ppss))) 0))
-
-(defun ada-pos-in-paren-p (pos)
-  "Return t if POS is inside a pair of parentheses."
-  (save-excursion
-    (> (nth 0 (syntax-ppss pos)) 0)))
-
-(defun ada-same-paren-depth-p (pos1 pos2)
-  "Return t if POS1 is at same parentheses depth as POS2."
-  (= (nth 0 (syntax-ppss pos1)) (nth 0 (syntax-ppss pos2))))
-
-(defun ada-goto-open-paren (&optional offset parse-result)
-  "Move point to innermost opening paren surrounding current point, plus 
OFFSET.
-Throw error if not in paren.  If PARSE-RESULT is non-nil, use it
-instead of calling `syntax-ppss'."
-  (goto-char (+ (or offset 0) (nth 1 (or parse-result (syntax-ppss))))))
-
-;;;; navigation within and between files
-
-(defvar ada-body-suffixes '(".adb")
-  "List of possible suffixes for Ada body files.
-The extensions should include a `.' if needed.")
-
-(defvar ada-spec-suffixes '(".ads")
-  "List of possible suffixes for Ada spec files.
-The extensions should include a `.' if needed.")
-
-(defvar ada-other-file-alist
-  '(("\\.ads$" (".adb"))
-    ("\\.adb$" (".ads")))
-  "Alist used by `find-file' to find the name of the other package.
-See `ff-other-file-alist'.")
-
-(defconst ada-name-regexp
-  "\\(\\(?:\\sw\\|[_.]\\)+\\)")
-
-(defconst ada-parent-name-regexp
-  "\\([a-zA-Z0-9_\\.]+\\)\\.[a-zA-Z0-9_]+"
-  "Regexp for extracting the parent name from fully-qualified name.")
-
-(defvar ada-file-name-from-ada-name nil
-  ;; determined by ada-xref-tool, set by *-select-prj
-  "Function called with one parameter ADA-NAME, which is a library
-unit name; it should return the filename in which ADA-NAME is
-found.")
-
-(defun ada-file-name-from-ada-name (ada-name)
-  "Return the filename in which ADA-NAME is found."
-  (ada-require-project-file)
-  (funcall ada-file-name-from-ada-name ada-name))
-
-(defvar ada-ada-name-from-file-name nil
-  ;; supplied by compiler
-  "Function called with one parameter FILE-NAME, which is a library
-unit name; it should return the Ada name that should be found in FILE-NAME.")
-
-(defun ada-ada-name-from-file-name (file-name)
-  "Return the ada-name that should be found in FILE-NAME."
-  (ada-require-project-file)
-  (funcall ada-ada-name-from-file-name file-name))
-
-(defun ada-ff-special-extract-parent ()
-  (setq ff-function-name (match-string 1))
-  (file-name-nondirectory
-   (or
-    (ff-get-file-name
-     compilation-search-path
-     (ada-file-name-from-ada-name ff-function-name)
-     ada-spec-suffixes)
-    (error "parent '%s' not found; set project file?" ff-function-name))))
-
-(defun ada-ff-special-with ()
-  (let ((package-name (match-string 1)))
-    (setq ff-function-name (concat 
"^\\(function\\|procedure\\|package\\)\\s-+" package-name "\\([^_]\\|$\\)"))
-    (file-name-nondirectory
-     (or
-      (ff-get-file-name
-       compilation-search-path
-       (ada-file-name-from-ada-name package-name)
-       (append ada-spec-suffixes ada-body-suffixes))
-      (error "package '%s' not found; set project file?" package-name)))
-    ))
-
-(defun ada-set-ff-special-constructs ()
-  "Add Ada-specific pairs to `ff-special-constructs'."
-  (set (make-local-variable 'ff-special-constructs) nil)
-  (mapc (lambda (pair) (add-to-list 'ff-special-constructs pair))
-       ;; Each car is a regexp; if it matches at point, the cdr is invoked.
-       ;; Each cdr should set ff-function-name to a string or regexp
-       ;; for ada-set-point-accordingly, and return the file name
-       ;; (sans directory, must include suffix) to go to.
-       (list
-        ;; Top level child package declaration (not body), or child
-        ;; subprogram declaration or body; go to the parent package.
-        (cons (concat "^\\(?:private[ 
\t]+\\)?\\(?:package\\|procedure\\|function\\)[ \t]+"
-                      ada-parent-name-regexp "\\(?:;\\|[ \t]+\\|$\\)")
-              'ada-ff-special-extract-parent)
-
-        ;; A "with" clause. Note that it may refer to a procedure body, as 
well as a spec
-        (cons (concat "^\\(?:limited[ \t]+\\)?\\(?:private[ \t]+\\)?with[ 
\t]+" ada-name-regexp)
-              'ada-ff-special-with)
-        )))
-
-(defvar ada-which-function nil
-  ;; supplied by indentation engine
-  ;;
-  ;; This is run from ff-pre-load-hook, so ff-function-name may have
-  ;; been set by ff-treat-special; don't reset it.
-  "Function called with one parameter (INCLUDE-TYPE); it should
-return the name of the package, protected type, subprogram,
-entry, or task type whose definition/declaration point is in, or
-for declarations that don't have declarative regions, just after;
-or nil.
-
-If INCLUDE-TYPE is non-nil, include type names.
-
-In addition, if `ff-function-name' is non-nil, store in
-`ff-function-name' a regexp that will find the function in the
-other file.")
-
-(defun ada-which-function (&optional include-type)
-  "See `ada-which-function' variable."
-  (when ada-which-function
-    (funcall ada-which-function include-type)))
-
-(defvar ada-on-context-clause nil
-  ;; supplied by indentation engine
-  "Function called with no parameters; it should return non-nil
-  if point is on a context clause.")
-
-(defun ada-on-context-clause ()
-  "See `ada-on-context-clause' variable."
-  (interactive)
-  (when ada-on-context-clause
-    (funcall ada-on-context-clause)))
-
-(defvar ada-in-case-expression nil
-  ;; supplied by indentation engine
-  "Function called with no parameters; it should return non-nil
-  if point is in a case expression.")
-
-(defun ada-in-case-expression ()
-  "See `ada-in-case-expression' variable."
-  (interactive)
-  (when ada-in-case-expression
-    (funcall ada-in-case-expression)))
-
-(defvar ada-goto-subunit-name nil
-  ;; supplied by indentation engine
-  "Function called with no parameters; if the current buffer
-  contains a subunit, move point to the subunit name (for
-  `ada-goto-declaration'), return t; otherwise leave point alone,
-  return nil.")
-
-(defun ada-goto-subunit-name ()
-  "See `ada-goto-subunit-name' variable."
-  (interactive)
-  (when ada-goto-subunit-name
-    (funcall ada-goto-subunit-name)))
-
-(defun ada-add-log-current-function ()
-  "For `add-log-current-defun-function'."
-  ;; add-log-current-defun is typically called with point at the start
-  ;; of an ediff change section, which is before the start of the
-  ;; declaration of a new item. So go to the start of the current line
-  ;; first
-  (save-excursion
-    (back-to-indentation)
-    (ada-which-function t)))
-
-(defun ada-set-point-accordingly ()
-  "Move to the string specified in `ff-function-name', which may be a regexp,
-previously set by a file navigation command."
-  (when ff-function-name
-    (let ((done nil)
-         (found nil))
-      (goto-char (point-min))
-      ;; We are looking for an Ada declaration, so don't stop for strings or 
comments
-      ;;
-      ;; This will still be confused by multiple references; we need
-      ;; to use compiler cross reference info for more precision.
-      (while (not done)
-       (if (search-forward-regexp ff-function-name nil t)
-           (setq found (match-beginning 0))
-         ;; not in remainder of buffer
-         (setq done t))
-       (if (ada-in-string-or-comment-p)
-           (setq found nil)
-         (setq done t)))
-      (when found
-       (goto-char found)
-       ;; different parsers find different points on the line; normalize here
-       (back-to-indentation))
-      (setq ff-function-name nil))))
-
-(defun ada-check-current-project (file-name)
-  "Throw error if FILE-NAME (must be absolute) is not found in
-the current project source directories, or if no project has been
-set."
-  (when (null (car compilation-search-path))
-    (error "no file search path defined; set project file?"))
-
-  ;; file-truename handles symbolic links
-  (let* ((visited-file (file-truename file-name))
-         (found-file (locate-file (file-name-nondirectory visited-file)
-                                 compilation-search-path)))
-    (unless found-file
-      (error "current file not part of current project; wrong project?"))
-
-    (setq found-file (file-truename found-file))
-
-    ;; (nth 10 (file-attributes ...)) is the inode; required when hard
-    ;; links are present.
-    (let* ((visited-file-inode (nth 10 (file-attributes visited-file)))
-           (found-file-inode (nth 10 (file-attributes found-file))))
-      (unless (equal visited-file-inode found-file-inode)
-        (error "%s (opened) and %s (found in project) are two different files"
-               file-name found-file)))))
-
-(defun ada-find-other-file ()
-  "Move to the corresponding declaration in another file.
-
-- If region is active, assume it contains a package name;
-  position point on that package declaration.
-
-- If point is in the start line of a non-nested child package or
-  subprogram declaration, position point on the corresponding
-  parent package specification.
-
-- If point is in a context clause line, position point on the
-  first package declaration that is mentioned.
-
-- If point is in a separate body, position point on the
-  corresponding specification.
-
-- If point is in a subprogram body or specification, position point
-  on the corresponding specification or body."
-
-  ;; ff-get-file, ff-find-other file first process
-  ;; ff-special-constructs, then run the following hooks:
-  ;;
-  ;; ff-pre-load-hook      set to ada-which-function
-  ;; ff-file-created-hook  set to ada-ff-create-body
-  ;; ff-post-load-hook     set to ada-set-point-accordingly,
-  ;;                       or to a compiler-specific function that
-  ;;                       uses compiler-generated cross reference
-  ;;                       information
-
-  (interactive)
-  (ada-check-current-project (buffer-file-name))
-
-  ;; clear ff-function-name, so either ff-special-constructs or
-  ;; ada-which-function will set it.
-  (setq ff-function-name nil)
-
-  (cond
-   (mark-active
-    (setq ff-function-name (buffer-substring-no-properties (point) (mark)))
-    (ff-get-file
-     compilation-search-path
-     (ada-file-name-from-ada-name ff-function-name)
-     ada-spec-suffixes
-     nil);; other-window
-    (deactivate-mark))
-
-   ((and (not (ada-on-context-clause))
-        (ada-goto-subunit-name))
-    (ada-goto-declaration))
-
-   (t
-    (ff-find-other-file)))
-  )
-
-(defun ada-find-file (filename)
-  ;; we assume compliation-search-path is set, either by an
-  ;; ada-mode project, or by some other means.
-  (interactive (list (completing-read "File: "
-                                     (apply-partially
-                                      'locate-file-completion-table
-                                      compilation-search-path nil))))
-  (find-file (locate-file filename compilation-search-path))
-  )
-
-(defvar ada-operator-re
-  
"\\+\\|-\\|/\\|\\*\\*\\|\\*\\|=\\|&\\|\\_<\\(abs\\|mod\\|rem\\|and\\|not\\|or\\|xor\\)\\_>\\|<=\\|<\\|>=\\|>"
-  "Regexp matching Ada operator_symbol.")
-
-(defun ada-identifier-at-point ()
-  "Return the identifier around point, move point to start of
-identifier.  May be an Ada identifier or operator."
-
-  (when (ada-in-comment-p)
-    (error "Inside comment"))
-
-  ;; Handle adjacent operator/identifer like:
-  ;; test/ada_mode-slices.adb
-  ;;   D1, D2 : Day := +Sun;
-
-  ;; Move to the beginning of the identifier or operator
-  (if (looking-at "[a-zA-Z0-9_]")
-      ;; In an identifier
-      (skip-chars-backward "a-zA-Z0-9_")
-    ;; In an operator
-    (skip-chars-backward "+\\-\\*/&<>="))
-
-  ;; Just in front of, or inside, a string => we could have an
-  ;; operator function declaration.
-  (cond
-   ((ada-in-string-p)
-    (cond
-
-     ((and (= (char-before) ?\")
-          (progn
-            (forward-char -1)
-            (looking-at (concat "\"\\(" ada-operator-re "\\)\""))))
-      (concat "\"" (match-string-no-properties 1) "\""))
-
-     (t
-      (error "Inside string or character constant"))
-     ))
-
-   ((and (= (char-after) ?\")
-        (looking-at (concat "\"\\(" ada-operator-re "\\)\"")))
-    (concat "\"" (match-string-no-properties 1) "\""))
-
-   ((looking-at ada-operator-re)
-    ;; Return quoted operator, as this is what the back end expects.
-    (concat "\"" (match-string-no-properties 0) "\""))
-
-   ((looking-at "[a-zA-Z0-9_]+")
-    (match-string-no-properties 0))
-
-   (t
-    (error "No identifier around"))
-   ))
-
-;; IMPROVEME (for emacs >= 25): use find-tag-marker-ring, ring-insert, 
pop-tag-mark (see xref.el)
-(defvar ada-goto-pos-ring '()
-  "List of positions selected by navigation functions. Used
-to go back to these positions.")
-
-(defconst ada-goto-pos-ring-max 16
-  "Number of positions kept in the list `ada-goto-pos-ring'.")
-
-(defun ada-goto-push-pos ()
-  "Push current filename, position on `ada-goto-pos-ring'. See 
`ada-goto-previous-pos'."
-  (setq ada-goto-pos-ring (cons (list (point) (buffer-file-name)) 
ada-goto-pos-ring))
-  (if (> (length ada-goto-pos-ring) ada-goto-pos-ring-max)
-      (setcdr (nthcdr (1- ada-goto-pos-ring-max) ada-goto-pos-ring) nil)))
-
-(defun ada-goto-previous-pos ()
-  "Go to the first position in `ada-goto-pos-ring', pop `ada-goto-pos-ring'."
-  (interactive)
-  (when ada-goto-pos-ring
-    (let ((pos (pop ada-goto-pos-ring)))
-      (find-file (cadr pos))
-      (goto-char (car pos)))))
-
-(defun ada-goto-source (file line column)
-  "Find and select FILE, at LINE and COLUMN.
-FILE may be absolute, or on `compilation-search-path'.
-LINE, COLUMN are Emacs origin."
-  (let ((file-1
-        (if (file-name-absolute-p file) file
-          (ff-get-file-name compilation-search-path file))))
-    (if file-1
-       (setq file file-1)
-      (error "File %s not found; installed library, or set project?" file))
-    )
-
-  (ada-goto-push-pos)
-
-  (let ((buffer (get-file-buffer file)))
-    (cond
-     ((bufferp buffer)
-      ;; use pop-to-buffer, so package other-frame-window works.
-      (pop-to-buffer buffer (list #'display-buffer-same-window)))
-
-     ((file-exists-p file)
-      (find-file file))
-
-     (t
-      (error "'%s' not found" file))))
-
-  ;; move the cursor to the correct position
-  (push-mark nil t)
-  (goto-char (point-min))
-  (forward-line (1- line))
-  (forward-char column)
-  )
-
-(defvar ada-xref-refresh-function nil
-  ;; determined by xref_tool, set by *-select-prj-xref
-  "Function that refreshes cross reference information cache.")
-
-(defun ada-xref-refresh (delete-files)
-  "Refresh cross reference information cache, if any.
-With non-nil prefix arg, delete cross reference files, which may
-be needed when a compiler is upgraded, or some configuration is
-changed."
-  (interactive "P")
-
-  (when (null ada-xref-refresh-function)
-    (error "no cross reference information available"))
-
-  (funcall ada-xref-refresh-function delete-files)
-  )
-
-(defvar ada-xref-other-function nil
-  ;; determined by xref_tool, set by *-select-prj-xref
-  "Function that returns cross reference information.
-Function is called with four arguments:
-- an Ada identifier or operator_symbol
-- filename containing the identifier (full path)
-- line number containing the identifier
-- Emacs column of the start of the identifier
-Point is on the start of the identifier.
-Returns a list (FILE LINE COLUMN) giving the corresponding location.
-FILE may be absolute, or on `compilation-search-path'.  If point is
-at the specification, the corresponding location is the body, and vice
-versa.")
-
-(defun ada-goto-declaration ()
-  "Move to the declaration or body of the identifier around point.
-If at the declaration, go to the body, and vice versa."
-  (interactive)
-  (ada-check-current-project (buffer-file-name))
-
-  (when (null ada-xref-other-function)
-    (error "no cross reference information available"))
-
-  (let ((target
-        (funcall ada-xref-other-function
-                 (ada-identifier-at-point)
-                 (buffer-file-name)
-                 (line-number-at-pos)
-                 (current-column)
-                 )))
-
-    (ada-goto-source (nth 0 target)
-                    (nth 1 target)
-                    (nth 2 target))
-    ))
-
-(defvar ada-xref-parent-function nil
-  ;; determined by xref_tool, set by *-select-prj-xref
-  "Function that returns cross reference information.
-Function is called with four arguments:
-- an Ada identifier or operator_symbol
-- filename containing the identifier
-- line number containing the identifier
-- Emacs column of the start of the identifier
-Displays a buffer in compilation-mode giving locations of the parent type 
declarations.")
-
-(defun ada-show-declaration-parents ()
-  "Display the locations of the parent type declarations of the type 
identifier around point."
-  (interactive)
-  (ada-check-current-project (buffer-file-name))
-
-  (when (null ada-xref-parent-function)
-    (error "no cross reference information available"))
-
-  (funcall ada-xref-parent-function
-          (ada-identifier-at-point)
-          (file-name-nondirectory (buffer-file-name))
-          (line-number-at-pos)
-          (current-column))
-  )
-
-(defvar ada-xref-all-function nil
-  ;; determined by xref_tool, set by *-select-prj-xref
-  "Function that displays cross reference information.
-Called with four arguments:
-- an Ada identifier or operator_symbol
-- filename containing the identifier
-- line number containing the identifier
-- Emacs column of the start of the identifier
-- local-only; if t, show references in current file only
-- append; if t, keep previous output in result buffer
-Displays a buffer in compilation-mode giving locations where the
-identifier is declared or referenced.")
-
-(defun ada-show-references (&optional append)
-  "Show all references of identifier at point.
-With prefix, keep previous references in output buffer."
-  (interactive "P")
-  (ada-check-current-project (buffer-file-name))
-
-  (when (null ada-xref-all-function)
-    (error "no cross reference information available"))
-
-  (funcall ada-xref-all-function
-          (ada-identifier-at-point)
-          (file-name-nondirectory (buffer-file-name))
-          (line-number-at-pos)
-          (current-column)
-          nil ;; local-only
-          append)
-  )
-
-(defun ada-show-local-references (&optional append)
-  "Show all references of identifier at point.
-With prefix, keep previous references in output buffer."
-  (interactive "P")
-  (ada-check-current-project (buffer-file-name))
-
-  (when (null ada-xref-all-function)
-    (error "no cross reference information available"))
-
-  (funcall ada-xref-all-function
-          (ada-identifier-at-point)
-          (file-name-nondirectory (buffer-file-name))
-          (line-number-at-pos)
-          (current-column)
-          t ;; local-only
-          append)
-  )
-
-(defvar ada-xref-overriding-function nil
-  ;; determined by ada-xref-tool, set by *-select-prj
-  "Function that displays cross reference information for overriding 
subprograms.
-Called with four arguments:
-- an Ada identifier or operator_symbol
-- filename containing the identifier
-- line number containing the identifier
-- Emacs column of the start of the identifier
-Displays a buffer in compilation-mode giving locations of the overriding 
declarations.")
-
-(defun ada-show-overriding ()
-  "Show all overridings of identifier at point."
-  (interactive)
-  (ada-check-current-project (buffer-file-name))
-
-  (when (null ada-xref-overriding-function)
-    (error "no cross reference information available"))
-
-  (funcall ada-xref-overriding-function
-          (ada-identifier-at-point)
-          (file-name-nondirectory (buffer-file-name))
-          (line-number-at-pos)
-          (current-column))
-  )
-
-(defvar ada-xref-overridden-function nil
-  ;; determined by ada-xref-tool, set by *-select-prj
-  "Function that displays cross reference information for overridden 
subprogram.
-Called with four arguments:
-- an Ada identifier or operator_symbol
-- filename containing the identifier
-- line number containing the identifier
-- Emacs column of the start of the identifier
-Returns a list (FILE LINE COLUMN) giving the corresponding location.
-FILE may be absolute, or on `compilation-search-path'.")
-
-(defun ada-show-overridden ()
-  "Show the overridden declaration of identifier at point."
-  (interactive)
-  (ada-check-current-project (buffer-file-name))
-
-  (when (null ada-xref-overridden-function)
-    (error "'show overridden' not supported, or no cross reference information 
available"))
-
-  (let ((target
-        (funcall ada-xref-overridden-function
-                 (ada-identifier-at-point)
-                 (file-name-nondirectory (buffer-file-name))
-                 (line-number-at-pos)
-                 (current-column))))
-
-    (ada-goto-source (nth 0 target)
-                    (nth 1 target)
-                    (nth 2 target))
-  ))
-
-;; This is autoloaded because it may be used in ~/.emacs
-;;;###autoload
-(defun ada-add-extensions (spec body)
-  "Define SPEC and BODY as being valid extensions for Ada files.
-SPEC and BODY are two regular expressions that must match against
-the file name."
-  (let* ((reg (concat (regexp-quote body) "$"))
-        (tmp (assoc reg ada-other-file-alist)))
-    (if tmp
-       (setcdr tmp (list (cons spec (cadr tmp))))
-      (add-to-list 'ada-other-file-alist (list reg (list spec)))))
-
-  (let* ((reg (concat (regexp-quote spec) "$"))
-        (tmp (assoc reg ada-other-file-alist)))
-    (if tmp
-       (setcdr tmp (list (cons body (cadr tmp))))
-      (add-to-list 'ada-other-file-alist (list reg (list body)))))
-
-  (add-to-list 'auto-mode-alist
-              (cons (concat (regexp-quote spec) "\\'") 'ada-mode))
-  (add-to-list 'auto-mode-alist
-              (cons (concat (regexp-quote body) "\\'") 'ada-mode))
-
-  (add-to-list 'ada-spec-suffixes spec)
-  (add-to-list 'ada-body-suffixes body)
-
-  (when (fboundp 'speedbar-add-supported-extension)
-    (speedbar-add-supported-extension spec)
-    (speedbar-add-supported-extension body))
-  )
-
-(defun ada-show-secondary-error ()
-  "Show the next secondary file reference in the compilation buffer.
-A secondary file reference is defined by text having text
-property `ada-secondary-error'.  These can be set by
-compiler-specific compilation filters."
-  (interactive)
-
-  ;; preserving the current window works only if the frame
-  ;; doesn't change, at least on Windows.
-  (let ((start-buffer (current-buffer))
-       pos item file)
-    ;; We use `pop-to-buffer', not `set-buffer', so `forward-line'
-    ;; works. But that might eat an `other-frame-window-mode' prefix,
-    ;; which the user means to apply to ’ada-goto-source’ below;
-    ;; disable that temporarily.
-    (let ((display-buffer-overriding-action nil))
-      (pop-to-buffer compilation-last-buffer nil t)
-      (setq pos (next-single-property-change (point) 'ada-secondary-error))
-      (when pos
-       (setq item (get-text-property pos 'ada-secondary-error))
-       ;; file-relative-name handles absolute Windows paths from
-       ;; g++. Do this in compilation buffer to get correct
-       ;; default-directory.
-       (setq file (file-relative-name (nth 0 item)))
-
-       ;; Set point in compilation buffer past this secondary error, so
-       ;; user can easily go to the next one.
-       (goto-char pos)
-       (forward-line 1))
-
-      (pop-to-buffer start-buffer nil t);; for windowing history
-      )
-    (when item
-      (ada-goto-source
-       file
-       (nth 1 item); line
-       (nth 2 item); column
-       ))
-    ))
-
-(defvar ada-goto-declaration-start nil
-  ;; Supplied by indentation engine.
-  ;;
-  "For `beginning-of-defun-function'. Function to move point to
-start of the generic, package, protected, subprogram, or task
-declaration point is currently in or just after.  Called with no
-parameters.")
-
-(defun ada-goto-declaration-start ()
-  "Call `ada-goto-declaration-start'."
-  (interactive)
-  (when ada-goto-declaration-start
-    (funcall ada-goto-declaration-start)))
-
-(defvar ada-goto-declaration-end nil
-  ;; supplied by indentation engine
-  "For `end-of-defun-function'. Function to move point to end of
-current declaration.")
-
-(defun ada-goto-declaration-end ()
-  "See `ada-goto-declaration-end' variable."
-  (interactive)
-  (when ada-goto-declaration-end
-    (funcall ada-goto-declaration-end)))
-
-(defvar ada-goto-declarative-region-start nil
-  ;; Supplied by indentation engine
-  "Function to move point to start of the declarative region of
-the subprogram, package, task, or declare block point
-is currently in.  Called with no parameters.")
-
-(defun ada-goto-declarative-region-start ()
-  "Call `ada-goto-declarative-region-start'."
-  (interactive)
-  (when ada-goto-declarative-region-start
-    (funcall ada-goto-declarative-region-start)))
-
-(defvar ada-goto-end nil
-  ;; Supplied by indentation engine
-  "Function to move point to end of the declaration or statement point is in 
or before.
-Called with no parameters.")
-
-(defun ada-goto-end ()
-  "Call `ada-goto-end'."
-  (when ada-goto-end
-    (funcall ada-goto-end)))
-
-;;;; code creation
-
-(defvar ada-make-subprogram-body nil
-  ;; Supplied by indentation engine
-  "Function to convert subprogram specification after point into a subprogram 
body stub.
-Called with no args, point at declaration start. Leave point in
-subprogram body, for user to add code.")
-
-(defun ada-make-subprogram-body ()
-  "If point is in or after a subprogram specification, convert it
-into a subprogram body stub, by calling `ada-make-subprogram-body'."
-  (interactive)
-  (ada-goto-declaration-start)
-  (if ada-make-subprogram-body
-      (funcall ada-make-subprogram-body)
-    (error "`ada-make-subprogram-body' not set")))
-
-(defvar ada-make-package-body nil
-  ;; Supplied by xref tool
-  "Function to create a package body from a package spec.
-Called with one argument; the absolute path to the body
-file. Current buffer is the package spec.  Should create the
-package body file, containing skeleton code that will compile.")
-
-(defun ada-make-package-body (body-file-name)
-  ;; no error if not set; let ada-skel do its thing.
-  (when ada-make-package-body
-      (funcall ada-make-package-body body-file-name)))
-
-(defun ada-ff-create-body ()
-  ;; no error if not set; let ada-skel do its thing.
-  (when ada-make-package-body
-    ;; ff-find-other-file calls us with point in an empty buffer for
-    ;; the body file; ada-make-package-body expects to be in the
-    ;; spec. So go back to the spec, and delete the body buffer so it
-    ;; does not get written to disk.
-    (let ((body-buffer (current-buffer))
-         (body-file-name (buffer-file-name)))
-
-      (set-buffer-modified-p nil);; may have a skeleton; allow silent delete
-
-      (ff-find-the-other-file);; back to spec
-
-      (kill-buffer body-buffer)
-
-      (ada-make-package-body body-file-name)
-
-      ;; back to the new body file, read in from the disk.
-      (ff-find-the-other-file)
-      (revert-buffer t t))
-    ))
-
-;;;; fill-comment
-
-(defvar wisi-inhibit-parse nil);; in wisi.el; so far that's the only parser we 
use.
-
-(defun ada-fill-comment-paragraph (&optional justify postfix)
-  "Fill the current comment paragraph.
-If JUSTIFY is non-nil, each line is justified as well.
-If POSTFIX and JUSTIFY are non-nil, `ada-fill-comment-postfix' is appended
-to each line filled and justified.
-The paragraph is indented on the first line."
-  (interactive "P")
-  (if (not (or (ada-in-comment-p)
-               (looking-at "[ \t]*--")))
-      (error "Not inside comment"))
-
-  ;; fill-region-as-paragraph leaves comment text exposed (without
-  ;; comment prefix) when inserting a newline; don't trigger a parse
-  ;; because of that (in particular, jit-lock requires a parse; other
-  ;; hooks may as well).
-  (let* ((wisi-inhibit-parse t)
-        indent from to
-        (opos (point-marker))
-        ;; we bind `fill-prefix' here rather than in ada-mode because
-        ;; setting it in ada-mode causes indent-region to use it for
-        ;; all indentation.
-        (fill-prefix ada-fill-comment-prefix)
-        (fill-column (if ada-fill-comment-adaptive
-                         (save-excursion
-                           (back-to-indentation)
-                           (+ (current-column) fill-column))
-                       (current-fill-column))))
-
-    ;;  Find end of comment paragraph
-    (back-to-indentation)
-    (while (and (not (eobp)) (looking-at ".*--[ \t]*[^ \t\n]"))
-      (forward-line 1)
-
-      ;;  If we were at the last line in the buffer, create a dummy empty
-      ;;  line at the end of the buffer.
-      (if (eobp)
-         (insert "\n")
-       (back-to-indentation)))
-    (beginning-of-line)
-    (setq to (point-marker))
-    (goto-char opos)
-
-    ;;  Find beginning of paragraph
-    (back-to-indentation)
-    (while (and (not (bobp)) (looking-at ".*--[ \t]*[^ \t\n]"))
-      (forward-line -1)
-      (back-to-indentation))
-
-    (unless (bobp)
-      (forward-line 1))
-    (beginning-of-line)
-    (setq from (point-marker))
-
-    ;;  Calculate the indentation we will need for the paragraph
-    (back-to-indentation)
-    (setq indent (current-column))
-    ;;  unindent the first line of the paragraph
-    (delete-region from (point))
-
-    ;;  Remove the old postfixes
-    (goto-char from)
-    (while (re-search-forward (concat "\\(" ada-fill-comment-postfix "\\)" 
"\n") to t)
-      (delete-region (match-beginning 1) (match-end 1)))
-
-    (goto-char (1- to))
-    (setq to (point-marker))
-
-    ;;  Indent and justify the paragraph
-    (set-left-margin from to indent)
-    (if postfix
-       (setq fill-column (- fill-column (length ada-fill-comment-postfix))))
-
-    (fill-region-as-paragraph from to justify)
-
-    ;;  Add the postfixes if required
-    (if postfix
-       (save-restriction
-         (goto-char from)
-         (narrow-to-region from to)
-         (while (not (eobp))
-           (end-of-line)
-           (insert-char ?  (- fill-column (current-column)))
-           (insert ada-fill-comment-postfix)
-           (forward-line))
-         ))
-
-    (goto-char opos)))
-
-;;;; support for font-lock.el
-
-(defconst ada-83-keywords
-  '("abort" "abs" "accept" "access" "all" "and" "array" "at" "begin"
-    "body" "case" "constant" "declare" "delay" "delta" "digits" "do"
-    "else" "elsif" "end" "entry" "exception" "exit" "for" "function"
-    "generic" "goto" "if" "in" "is" "limited" "loop" "mod" "new"
-    "not" "null" "of" "or" "others" "out" "package" "pragma" "private"
-    "procedure" "raise" "range" "record" "rem" "renames" "return"
-    "reverse" "select" "separate" "subtype" "task" "terminate" "then"
-    "type" "use" "when" "while" "with" "xor")
-  "List of Ada 83 keywords.")
-
-(defconst ada-95-keywords
-  '("abstract" "aliased" "protected" "requeue" "tagged" "until")
-  "List of keywords new in Ada 95.")
-
-(defconst ada-2005-keywords
-  '("interface" "overriding" "synchronized")
-  "List of keywords new in Ada 2005.")
-
-(defconst ada-2012-keywords
-  '("some")
-  "List of keywords new in Ada 2012.")
-
-(defun ada-font-lock-keywords ()
-  "Return Ada mode value for `font-lock-keywords', depending on 
`ada-language-version'."
-   ;; Grammar actions set `font-lock-face' property for all
-   ;; non-keyword tokens that need it.
-  (list
-   (list (concat "\\_<" (regexp-opt ada-keywords t) "\\_>") '(0 
font-lock-keyword-face))
-   ))
-
-(defvar which-func-functions nil) ;; which-func.el
-
-;;;; ada-mode
-
-;; ada-mode does not derive from prog-mode, because we need to call
-;; ada-mode-post-local-vars, and prog-mode does not provide a way to
-;; do that (at least before emacs 26).
-;;
-;; autoload required by automatic mode setting
-;;;###autoload
-(defun ada-mode ()
-  "The major mode for editing Ada code."
-  ;; the other ada-*.el files add to ada-mode-hook for their setup
-
-  (interactive)
-  (kill-all-local-variables)
-  (setq major-mode 'ada-mode)
-  (setq mode-name "Ada")
-  (use-local-map ada-mode-map)
-
-  (set-syntax-table ada-mode-syntax-table)
-  (define-abbrev-table 'ada-mode-abbrev-table ())
-  (setq local-abbrev-table ada-mode-abbrev-table)
-
-  (set (make-local-variable 'syntax-propertize-function) 
'ada-syntax-propertize)
-  (syntax-ppss-flush-cache (point-min));; reparse with new function
-
-  (when (boundp 'syntax-begin-function)
-    ;; default ‘beginning-of-defun’ in emacs-24.2; we need it nil
-    ;; obsolete in 25.1
-    (set (make-local-variable 'syntax-begin-function) nil))
-  (set (make-local-variable 'parse-sexp-ignore-comments) t)
-  (set (make-local-variable 'parse-sexp-lookup-properties) t)
-  (set 'case-fold-search t); Ada is case insensitive; the syntax parsing 
requires this setting
-  (set (make-local-variable 'comment-start) "--")
-  (set (make-local-variable 'comment-end) "")
-  (set (make-local-variable 'comment-start-skip) "---*[ \t]*")
-  (set (make-local-variable 'comment-multi-line) nil)
-
-  ;; we _don't_ set `fill-prefix' here because that causes
-  ;; indent-region to use it for all indentation. See
-  ;; ada-fill-comment-paragraph.
-
-  ;; AdaCore standard style (enforced by -gnaty) requires two spaces
-  ;; after '--' in comments; this makes it easier to distinguish
-  ;; special comments that have something else after '--'
-  (set (make-local-variable 'comment-padding) "  ")
-
-  (set (make-local-variable 'require-final-newline) t)
-
-  (setq font-lock-defaults
-       '(ada-font-lock-keywords ;; keywords
-         nil ;; keywords only; comment, string faces not set by wisi parser
-         t ;; case-fold
-         ((?\_ . "w")))); treat underscore as a word component
-
-  (set (make-local-variable 'ff-other-file-alist)
-       'ada-other-file-alist)
-  (setq ff-post-load-hook    #'ada-set-point-accordingly
-       ff-file-created-hook #'ada-ff-create-body)
-  (add-hook 'ff-pre-load-hook #'ada-goto-push-pos)
-  (add-hook 'ff-pre-load-hook #'ada-which-function)
-  (setq ff-search-directories 'compilation-search-path)
-  (when (null (car compilation-search-path))
-    ;; find-file doesn't handle nil in search path
-    (setq compilation-search-path (list (if buffer-file-name
-                                            (file-name-directory 
(buffer-file-name))
-                                          "."))))
-  (ada-set-ff-special-constructs)
-
-  (set (make-local-variable 'add-log-current-defun-function)
-       #'ada-add-log-current-function)
-
-  ;; We set this even if which-func.el is not loaded, because if it is
-  ;; loaded later, it will use the add-log which-function, which
-  ;; forces a navigate parse.
-  (add-hook 'which-func-functions #'ada-which-function nil t)
-
-  ;;  Support for align
-  (add-to-list 'align-dq-string-modes 'ada-mode)
-  (add-to-list 'align-open-comment-modes 'ada-mode)
-  (set (make-local-variable 'align-region-separate) ada-align-region-separate)
-  (set (make-local-variable 'align-indent-before-aligning) t)
-
-  ;; Exclude comments alone on line from alignment.
-  (add-to-list 'align-exclude-rules-list
-              '(ada-solo-comment
-                (regexp  . "^\\(\\s-*\\)--")
-                (modes   . '(ada-mode))))
-  (add-to-list 'align-exclude-rules-list
-              '(ada-solo-use
-                (regexp  . "^\\(\\s-*\\)\\_<use\\_>")
-                (modes   . '(ada-mode))))
-
-  (setq align-mode-rules-list ada-align-rules)
-
-  (easy-menu-add ada-mode-menu ada-mode-map)
-
-  (setq ada-case-strict (ada-prj-get 'case_strict))
-
-  (run-mode-hooks 'ada-mode-hook)
-
-  (when (< emacs-major-version 25) (syntax-propertize (point-max)))
-
-  (if (<= emacs-major-version 25)
-      ;; run-mode-hooks does _not_ call hack-local-variables
-      (add-hook 'hack-local-variables-hook 'ada-mode-post-local-vars nil t)
-    ;; >= 26; run-mode-hooks _does_ call hack-local-variables, after the hook 
functions
-    (ada-mode-post-local-vars))
-  )
-
-(defun ada-mode-post-local-vars ()
-  ;; These are run after ada-mode-hook and file local variables
-  ;; because users or *.ad? files might set the relevant
-  ;; variable inside the hook or file local variables.
-
-  ;; This means to fully set ada-mode interactively, user must
-  ;; do M-x ada-mode M-; (hack-local-variables)
-
-  (setq hack-local-variables-hook (delq 'ada-mode-post-local-vars 
hack-local-variables-hook))
-
-  ;; fill-region-as-paragraph in ada-fill-comment-paragraph does not
-  ;; call syntax-propertize, so set comment syntax on
-  ;; ada-fill-comment-prefix. In post-local because user may want to
-  ;; set it per-file. IMPROVEME: only in emacs < 25?
-  (put-text-property 0 2 'syntax-table '(11 . nil) ada-fill-comment-prefix)
-
-  (cl-case ada-language-version
-   (ada83
-    (setq ada-keywords ada-83-keywords))
-
-   (ada95
-    (setq ada-keywords
-         (append ada-83-keywords
-                 ada-95-keywords)))
-
-   (ada2005
-    (setq ada-keywords
-         (append ada-83-keywords
-                 ada-95-keywords
-                 ada-2005-keywords)))
-   (ada2012
-    (setq ada-keywords
-         (append ada-83-keywords
-                 ada-95-keywords
-                 ada-2005-keywords
-                 ada-2012-keywords))))
-
-  (when global-font-lock-mode
-    ;; This calls ada-font-lock-keywords, which depends on
-    ;; ada-keywords
-    (font-lock-refresh-defaults))
-
-  (when ada-goto-declaration-start
-    (set (make-local-variable 'beginning-of-defun-function) 
ada-goto-declaration-start))
-
-  (when ada-goto-declaration-end
-    (set (make-local-variable 'end-of-defun-function) 
ada-goto-declaration-end))
-  )
-
-(put 'ada-mode 'custom-mode-group 'ada)
-
-(defvar ada-parser nil
-  "Indicate parser and lexer to use for Ada buffers:
-
-elisp : wisi parser and lexer implemented in elisp.
-
-process : wisi elisp lexer, external process parser specified
-  by ‘ada-process-parse-exec ’.
-")
-
-(defvar ada-fallback 'simple
-  "Indicate fallback indentation engine for Ada buffers.
-
-simple: indent to previous line.")
-
-(provide 'ada-mode)
-
-;;;;; Global initializations
-
-(add-hook 'menu-bar-update-hook #'ada-project-menu-install)
-
-(require 'ada-build)
-
-(cl-case ada-fallback
-  (simple
-   (require 'ada-wisi))
-  )
-
-(cl-case ada-parser
-  (elisp nil)
-  (process nil)
-  (t
-   (if (locate-file ada-process-parse-exec exec-path '("" ".exe"))
-       (setq ada-parser 'process)
-     (setq ada-parser 'elisp)))
-  )
-
-(cl-case ada-xref-tool
-  (gnat (require 'ada-gnat-xref))
-  (gpr_query (require 'gpr-query))
-  (t
-   (if (locate-file "gpr_query" exec-path '("" ".exe"))
-       (progn
-         (require 'gpr-query)
-         (setq ada-xref-tool 'gpr_query))
-     (require 'ada-gnat-xref)
-     (setq ada-xref-tool 'gnat)))
-  )
-
-(unless (featurep 'ada-compiler)
-  (require 'ada-gnat-compile))
-
-(unless (featurep 'ada-skeletons)
-  (require 'ada-skel))
-
-(when (featurep 'imenu)
-  (require 'ada-imenu))
-
-;;; ada-mode.el ends here
+;;; ada-mode.el --- major-mode for editing Ada sources  -*- lexical-binding:t 
-*-
+;;
+;; Copyright (C) 1994, 1995, 1997 - 2019  Free Software Foundation, Inc.
+;;
+;; Author: Stephen Leake <address@hidden>
+;; Maintainer: Stephen Leake <address@hidden>
+;; Keywords: languages
+;;  ada
+;; Version: 6.2.0
+;; package-requires: ((uniquify-files "1.0") (wisi "2.2.0") (emacs "25.0"))
+;; url: http://www.nongnu.org/ada-mode/
+;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+;;
+;;; Usage:
+;;
+;; Emacs should enter Ada mode automatically when you load an Ada
+;; file, based on the file extension.  The default extensions for Ada
+;; files are .ads, .adb; use ada-add-extensions to add other
+;; extensions.
+;;
+;; By default, ada-mode is configured to take full advantage of the
+;; GNAT compiler.  If you are using another compiler, you
+;; should load that compiler's ada-* file first; that will define
+;; ada-compiler as a feature, so ada-gnat.el will not be loaded.
+;;
+;; See the user guide (info "ada-mode"), built from ada-mode.texi.
+
+;;; Design:
+;;
+;; In order to support multiple compilers, we use indirect function
+;; calls for all operations that depend on the compiler.
+;;
+;; We also support a cross reference tool (also called xref tool) that
+;; is different from the compiler. For example, you can use a local
+;; GNAT compiler to generate and access cross-reference information,
+;; while using a cross-compiler for compiling the final executable.
+;;
+;; Other functions are lumped with the choice of xref tool; mapping
+;; Ada names to file names, creating package bodies; any tool function
+;; that does not create executable code.
+;;
+;; The indentation engine and skeleton tools are also called
+;; indirectly, to allow parallel development of new versions of these
+;; tools (inspired by experience with ada-smie and ada-wisi).
+;;
+;; We also support using different compilers for different projects;
+;; `ada-compiler' can be set in Ada mode project files.  Note that
+;; there is only one project active at a time; the most recently
+;; selected one. All Ada files are assumed to belong to this project
+;; (which is not correct, but works well in practice; the user is
+;; typically only concerned about files that belong to the current
+;; project).
+;;
+;; There are several styles of indirect calls:
+;;
+;; - scalar global variable set during load
+;;
+;;   Appropriate when the choice of implementation is fixed at load
+;;   time; it does not depend on the current Ada project. Used for
+;;   indentation and skeleton functions.
+;;
+;; - scalar global variable set during project select
+;;
+;;   Appropriate when the choice of implementation is determined by
+;;   the choice of compiler or xref tool, which is per-project.  The
+;;   user sets the compiler choice in the project file, but not the
+;;   lower-level redirect choice.
+;;
+;;   For example, `ada-file-name-from-ada-name' depends on the naming
+;;   convention used by the compiler. If the project file sets
+;;   ada_compiler to 'gnat (either directly or by default),
+;;   ada-gnat-select-prj sets `ada-file-name-from-ada-name' to
+;;   `ada-gnat-file-name-from-ada-name'.
+;;
+;; - scalar buffer-local variable set during project select or file open
+;;
+;;   Appropriate when choice of implementation is normally
+;;   per-project, but can be per-buffer.
+;;
+;;   For example, `ada-case-strict' will normally be set by the
+;;   project, but some files may deviate from the project standard (if
+;;   they are generated by -fdumpspec, for example). Those files set
+;;   `ada-case-strict' in a file local variable comment.
+;;
+;; - scalar buffer-local variable set by ada-mode or ada-mode-hook
+;;   function
+;;
+;;   Appropriate when the variable is a non-Ada mode variable, also
+;;   used by other modes, and choice should not affect those modes.
+;;
+;;   `indent-line-function', `comment-indent-function' use this style
+;;
+;; - alist global variable indexed by ada-compiler
+;;
+;;   Appropriate when the choice of implementation is determined by
+;;   the compiler, but the function is invoked during project parse,
+;;   so we can't depend on a value set by project select.
+;;
+;;   alist entries are set during load by the implementation elisp files.
+;;
+;;   `ada-prj-default-compiler-alist' uses this style.
+
+;;; History:
+;;
+;; The first Ada mode for GNU Emacs was written by V. Broman in
+;; 1985. He based his work on the already existing Modula-2 mode.
+;; This was distributed as ada.el in versions of Emacs prior to 19.29.
+;;
+;; Lynn Slater wrote an extensive Ada mode in 1989. It consisted of
+;; several files with support for dired commands and other nice
+;; things.
+;;
+;; The probably very first Ada mode (called electric-ada.el) was
+;; written by Steven D. Litvintchouk and Steven M. Rosen for the
+;; Gosling Emacs. L. Slater based his development on ada.el and
+;; electric-ada.el.
+;;
+;; A complete rewrite by Rolf Ebert <address@hidden> and Markus
+;; Heritsch <address@hidden> was done at
+;; some point.  Some ideas from the Ada mode mailing list have been
+;; added.  Some of the functionality of L. Slater's mode has not (yet)
+;; been recoded in this new mode.
+;;
+;; A complete rewrite for Emacs-20 / GNAT-3.11 was done by Emmanuel
+;; Briot <address@hidden> at Ada Core Technologies.
+;;
+;; A complete rewrite, to restructure the code more orthogonally, and
+;; to use wisi for the indentation engine, was done in 2012 - 2013 by
+;; Stephen Leake <address@hidden>.
+
+;;; Credits:
+;;
+;;   Many thanks to John McCabe <address@hidden> for sending so
+;;     many patches included in this package.
+;;   Christian Egli <address@hidden>:
+;;     ada-imenu-generic-expression
+;;   Many thanks also to the following persons that have contributed
+;;   to the ada-mode
+;;     Philippe Waroquiers (PW) <address@hidden> in particular,
+;;     address@hidden (John Woodruff)
+;;     address@hidden (Jesper Joergensen)
+;;     address@hidden (Scott Evans)
+;;     address@hidden (Cyrille Comar)
+;;     address@hidden
+;;    and others for their valuable hints.
+
+(require 'align)
+(require 'cl-lib)
+(require 'compile)
+(require 'find-file)
+(require 'wisi) ;; FIXME: rewrite to assume wisi
+
+(defun ada-mode-version ()
+  "Return Ada mode version."
+  (interactive)
+  (let ((version-string "6.2.0"))
+    ;; must match:
+    ;; ada-mode.texi
+    ;; README-ada-mode
+    ;; Version: above
+    (if (called-interactively-p 'interactive)
+       (message version-string)
+      version-string)))
+
+;;;;; User variables
+
+(defvar ada-mode-hook nil
+  "List of functions to call when Ada mode is invoked.
+This hook is executed after `ada-mode' is fully loaded, but
+before file local variables are processed.")
+
+(defgroup ada nil
+  "Major mode for editing Ada source code in Emacs."
+  :group 'languages)
+
+(defcustom ada-auto-case t
+  "Buffer-local value that may override project variable `auto_case'.
+Global value is default for project variable `auto_case'.
+t means automatically change case of preceding word while typing.
+not-upper-case means only change case if typed word is not all upper-case.
+Casing of Ada keywords is done according to `ada-case-keyword',
+identifiers are Mixed_Case."
+  :type  '(choice (const nil)
+                 (const t)
+                 (const not-upper-case))
+  :safe  (lambda (val) (memq val '(nil t not-upper-case))))
+(make-variable-buffer-local 'ada-auto-case)
+
+(defcustom ada-case-exception-file nil
+  "Default list of special casing exceptions dictionaries for identifiers.
+Override with `casing' project variable.
+
+New exceptions may be added interactively via `ada-case-create-exception'.
+If an exception is defined in multiple files, the first occurence is used.
+
+The file format is one word per line, that gives the casing to be
+used for that word in Ada source code.  If the line starts with
+the character *, then the exception will be used for partial
+words that either start at the beginning of a word or after a _
+character, and end either at the end of the word or at a _
+character.  Characters after the first word are ignored, and not
+preserved when the list is written back to the file."
+  :type  '(repeat (file))
+  :safe  #'listp)
+
+(defcustom ada-case-keyword 'lower-case
+  "Buffer-local value that may override project variable `case_keyword'.
+Global value is default for project variable `case_keyword'.
+Indicates how to adjust the case of Ada keywords."
+  :type '(choice (const lower-case)
+                (const upper-case))
+  ;; We'd like to specify that the value must be a function that takes
+  ;; one arg, but custom doesn't support that. ':safe' is supposed
+  ;; to be used to prevent user-provided functions from compromising
+  ;; security, so ":safe #'functionp" is not appropriate. So we
+  ;; use a symbol, and a cl-ecase in ada-case-keyword.
+  :safe (lambda (val) (memq val '(lower-case upper-case)))
+  )
+(make-variable-buffer-local 'ada-case-keyword)
+
+(defcustom ada-case-identifier 'mixed-case
+  "Buffer-local value that may override project variable `case_keyword'.
+Global value is default for project variable `case_keyword'.
+Indicates how to adjust the case of Ada keywords.
+Called with three args;
+start      - buffer pos of start of identifier
+end        - end of identifier
+force-case - if t, treat `ada-case-strict' as t"
+  :type '(choice (const mixed-case)
+                (const lower-case)
+                (const upper-case))
+  ;; see comment on :safe at ada-case-keyword
+  :safe (lambda (val) (memq val '(mixed-case lower-case upper-case)))
+  )
+;; we'd like to check that there are 3 args, since the previous
+;; release required 2 here. But there doesn't seem to be a way to
+;; access the arg count, which is only available for byte-compiled
+;; functions
+(make-variable-buffer-local 'ada-case-identifier)
+
+(defcustom ada-case-strict t
+  "Buffer-local value that may override project variable `case_strict'.
+Global value is default for project variable `case_strict'.
+If non-nil, force Mixed_Case for identifiers.
+Otherwise, allow UPPERCASE for identifiers."
+  :type 'boolean
+  :safe  #'booleanp)
+(make-variable-buffer-local 'ada-case-strict)
+
+(defcustom ada-language-version 'ada2012
+  "Ada language version; one of `ada83', `ada95', `ada2005', `ada2012'.
+Only affects the keywords to highlight, not which version the
+indentation parser accepts."
+  :type '(choice (const ada83)
+                (const ada95)
+                (const ada2005)
+                (const ada2012))
+  :safe  #'symbolp)
+(make-variable-buffer-local 'ada-language-version)
+
+(defcustom ada-fill-comment-prefix "-- "
+  "Comment fill prefix."
+  :type 'string)
+(make-variable-buffer-local 'ada-fill-comment-prefix)
+
+(defcustom ada-fill-comment-postfix " --"
+  "Comment fill postfix."
+  :type 'string)
+(make-variable-buffer-local 'ada-fill-comment-postfix)
+
+(defcustom ada-fill-comment-adaptive nil
+  "If non-nil, comments are filled to the same width (not including 
indentation),
+rather than to the same column."
+  :type 'boolean
+  :safe #'booleanp)
+
+(defcustom ada-prj-file-extensions '("adp" "prj")
+  "List of Emacs Ada mode project file extensions.
+Used when searching for a project file.
+Any file with one of these extensions will be parsed by 
`ada-prj-parse-file-1'."
+  :type 'list)
+
+(defcustom ada-prj-file-ext-extra nil
+  "List of secondary project file extensions.
+Used when searching for a project file that can be a primary or
+secondary project file (referenced from a primary).  The user
+must provide a parser for a file with one of these extensions."
+  :type 'list)
+
+(defcustom ada-prj-parse-hook nil
+  "Hook run at start of `ada-parse-prj-file'.
+Useful for setting `ada-xref-tool' and similar vars."
+  :type 'function
+  :group 'ada)
+
+(defcustom ada-xref-full-path nil
+  "If t, cross-references show the full path to source files; if
+nil, only the file name."
+  :type 'boolean
+  :safe #'booleanp)
+
+(defcustom ada-process-parse-exec "ada_mode_wisi_lr1_parse.exe"
+  ;; We use .exe even on Linux to simplify the Makefile
+  "Name of executable to use for external process Ada parser.
+There are two standard choices; ada_mode_wisi_lalr_parse.exe and
+ada_mode_wisi_lr1_parse.exe. The LR1 version (the default) is
+slower to load on first use, but gives better error recovery."
+  :type 'string
+  :group 'ada-indentation)
+
+(defcustom ada-process-parse-exec-opts nil
+  "List of process start options for `ada-process-parse-exec'."
+  :type 'string
+  :group 'ada-indentation)
+
+(defcustom ada-which-func-parse-size 30000
+  "Minimum size of the region surrounding point that is parsed for 
`which-function-mode'."
+  :type 'integer
+  :safe #'integerp)
+
+;;;;; end of user variables
+
+(defconst ada-symbol-end
+  ;; we can't just add \> here; that might match _ in a user modified 
ada-mode-syntax-table
+  "\\([ \t]+\\|$\\)"
+  "Regexp to add to symbol name in `ada-which-function'.")
+
+(defvar ada-compiler nil
+  "Default Ada compiler; can be overridden in project files.
+Values defined by compiler packages.")
+
+(defvar ada-xref-tool nil
+  "Default Ada cross reference tool; can be overridden in project files.
+Values defined by cross reference packages.")
+
+;;;; keymap and menus
+
+(defvar ada-ret-binding 'ada-indent-newline-indent)
+(defvar ada-lfd-binding 'newline-and-indent)
+
+(defun ada-case-activate-keys (map)
+  "Modify the key bindings for all the keys that should adjust casing."
+  ;; we could just put these in the keymap below, but this is easier.
+  (mapc (function
+        (lambda(key)
+          (define-key
+            map
+            (char-to-string key)
+            'ada-case-adjust-interactive)))
+       '( ?_ ?% ?& ?* ?\( ?\) ?- ?= ?+
+             ?| ?\; ?: ?' ?\" ?< ?, ?. ?> ?/ ?\n 32 ?\r ))
+  )
+
+(defvar ada-mode-map
+  (let ((map (make-sparse-keymap)))
+    ;; C-c <letter> are reserved for users
+
+    ;; global-map has C-x ` 'next-error
+    (define-key map [return]    'ada-case-adjust-interactive)
+    (define-key map "\C-c`"     'ada-show-secondary-error)
+    (define-key map "\C-c;"      (lambda () (error "use M-; instead"))) ; 
comment-dwim
+    (define-key map "\C-c<"     'ada-goto-declaration-start)
+    (define-key map "\C-c>"     'ada-goto-declaration-end)
+    (define-key map "\C-c\M-`"          'ada-fix-compiler-error)
+    (define-key map "\C-c\C-a"          'ada-align)
+    (define-key map "\C-c\C-b"          'ada-make-subprogram-body)
+    (define-key map "\C-c\C-c"   'ada-build-make)
+    (define-key map "\C-c\C-d"          'ada-goto-declaration)
+    (define-key map "\C-c\M-d"          'ada-show-declaration-parents)
+    (define-key map "\C-c\C-e"          'ada-expand)
+    (define-key map "\C-c\C-f"          'ada-show-parse-error)
+    (define-key map "\C-c\C-i"          'ada-indent-statement)
+    (define-key map "\C-c\C-l"          'ada-show-local-references)
+    (define-key map "\C-c\C-m"   'ada-build-set-make)
+    (define-key map "\C-c\C-n"          'forward-sexp)
+    (define-key map "\C-c\M-n"          'ada-next-placeholder)
+    (define-key map "\C-c\C-o"          'ada-find-other-file)
+    (define-key map "\C-c\M-o"          'ada-find-other-file-noset)
+    (define-key map "\C-c\C-p"          'backward-sexp)
+    (define-key map "\C-c\M-p"          'ada-prev-placeholder)
+    (define-key map "\C-c\C-q"          'ada-xref-refresh)
+    (define-key map "\C-c\C-r"          'ada-show-references)
+    (define-key map "\C-c\M-r"          'ada-build-run)
+    (define-key map "\C-c\C-s"   'ada-goto-previous-pos)
+    (define-key map "\C-c\C-v"   'ada-build-check)
+    (define-key map "\C-c\C-w"          'ada-case-adjust-at-point)
+    (define-key map "\C-c\C-x"   'ada-show-overriding)
+    (define-key map "\C-c\M-x"   'ada-show-overridden)
+    (define-key map "\C-c\C-y"          'ada-case-create-exception)
+    (define-key map "\C-c\C-\M-y" 'ada-case-create-partial-exception)
+    (define-key map [C-down-mouse-3] 'ada-popup-menu)
+
+    (ada-case-activate-keys map)
+
+    map
+  )  "Local keymap used for Ada mode.")
+
+(defvar ada-mode-menu (make-sparse-keymap "Ada"))
+(easy-menu-define ada-mode-menu ada-mode-map "Menu keymap for Ada mode"
+  '("Ada"
+    ("Help"
+     ["Ada Mode"             (info "ada-mode") t]
+     ["Ada Reference Manual" (info "arm2012") t]
+     ["Key bindings"         describe-bindings t]
+     )
+    ["Customize"                  (customize-group 'ada)    t]
+    ("Project files"
+     ["Find and select project ..."   ada-build-prompt-select-prj-file t]
+     ["Select project ..."            ada-prj-select                   t]
+     ["Show project"                  ada-prj-show                     t]
+     ["Show project file search path" ada-prj-show-prj-path            t]
+     ["Show source file search path"  ada-prj-show-src-path            t]
+     ["Delete project ..."            ada-prj-delete                   t]
+    )
+    ("Build"
+     ["Next compilation error"     next-error                t]
+     ["Show secondary error"       ada-show-secondary-error  t]
+     ["Fix compilation error"      ada-fix-compiler-error    t]
+     ["Show last parse error"      ada-show-parse-error      t]
+     ["Check syntax"               ada-build-check       t]
+     ["Show main"                  ada-build-show-main   t]
+     ["Build"                      ada-build-make        t]
+     ["Set main and Build"         ada-build-set-make    t]
+     ["Run"                        ada-build-run         t]
+     )
+    ("Navigate"
+     ["Other file"                    ada-find-other-file          t]
+     ["Other file don't find decl"    ada-find-other-file-noset    t]
+     ["Find file in project"          ada-find-file                t]
+     ["Goto declaration/body"         ada-goto-declaration         t]
+     ["Goto next statement keyword"   forward-sexp   t]
+     ["Goto prev statement keyword"   backward-sexp   t]
+     ["Goto declarative region start" ada-goto-declarative-region-start   t]
+     ["Goto declaration start"        ada-goto-declaration-start   t]
+     ["Goto declaration end"          ada-goto-declaration-end     t]
+     ["Show parent declarations"      ada-show-declaration-parents t]
+     ["Show references"               ada-show-references          t]
+     ["Show overriding"               ada-show-overriding          t]
+     ["Show overridden"               ada-show-overridden          t]
+     ["Goto secondary error"          ada-show-secondary-error     t]
+     ["Goto prev position"            ada-goto-previous-pos        t]
+     ["Next placeholder"              ada-next-placeholder    t]
+     ["Previous placeholder"          ada-prev-placeholder    t]
+     )
+    ("Edit"
+     ["Expand skeleton"             ada-expand              t]
+     ["Indent line or selection"    indent-for-tab-command  t]
+     ["Indent current statement"    ada-indent-statement    t]
+     ["Indent lines in file"        (indent-region (point-min) (point-max))  t]
+     ["Align"                       ada-align               t]
+     ["Comment/uncomment selection" comment-dwim            t]
+     ["Fill comment paragraph"         ada-fill-comment-paragraph           t]
+     ["Fill comment paragraph justify" (ada-fill-comment-paragraph 'full)   t]
+     ["Fill comment paragraph postfix" (ada-fill-comment-paragraph 'full t) t]
+     ["Make body for subprogram"    ada-make-subprogram-body     t]
+     )
+    ("Refactor"
+     ["Method (Object) => Object.Method"   ada-wisi-refactor-1 t]
+     ["Object.Method   => Method (Object)" ada-wisi-refactor-2 t]
+     ["Element (Object, Index) => Object (Index)" ada-wisi-refactor-3 t]
+     ["Object (Index) => Element (Object, Index)" ada-wisi-refactor-4 t]
+     )
+    ("Casing"
+     ["Create full exception"       ada-case-create-exception t]
+     ["Create partial exception"    ada-case-create-partial-exception t]
+     ["Adjust case at point"        ada-case-adjust-at-point  t]
+     ["Adjust case region"          ada-case-adjust-region    t]
+     ["Adjust case buffer"          ada-case-adjust-buffer    t]
+     ["Show casing files list"      ada-case-show-files       t]
+     )
+    ("Misc"
+     ["Show last parse error"         ada-show-parse-error         t]
+     ["Show xref tool buffer"         ada-show-xref-tool-buffer    t]
+     ["Refresh cross reference cache" ada-xref-refresh             t]
+     ["Reset parser"                  ada-reset-parser             t]
+     )))
+
+(defun ada-project-menu-compute ()
+  "Return an easy-menu menu for `ada-project-menu-install'.
+Menu displays currently parsed Ada mode projects."
+  (let (menu)
+    (dolist (item ada-prj-alist)
+      (push
+       (vector
+       (if (equal (car item) ada-prj-current-file)
+           ;; current project
+           (concat (car item) "  *")
+         (car item))
+       `(lambda () (interactive) (ada-select-prj-file ,(car item)))
+       t)
+       menu)
+      )
+    (nreverse menu)))
+
+(defun ada-project-menu-install ()
+  "Install the Ada project menu as a submenu."
+  (when (eq major-mode 'ada-mode)
+    (lookup-key ada-mode-map [menu-bar Ada]) ;; map to put menu in
+    [ada-prj-select]          ;; key to insert (a menu entry)
+    (easy-menu-binding
+     (easy-menu-create-menu
+      "Select Project"
+      (ada-project-menu-compute)));; binding
+    nil;; after
+
+    ;; IMPROVEME: this doesn’t work for ’after’; "Select Project" is at end
+    ;; (lookup-key ada-mode-map [menu-bar Ada Build])
+    ))
+
+(easy-menu-define ada-context-menu nil
+  "Context menu keymap for Ada mode"
+  '("Ada"
+    ["Goto declaration/body"         ada-goto-declaration         t]
+    ["Show parent declarations"      ada-show-declaration-parents t]
+    ["Goto declarative region start" ada-goto-declarative-region-start   t]
+    ["Goto declaration start"        ada-goto-declaration-start   t]
+    ["Goto declaration end"          ada-goto-declaration-end     t]
+    ["Show parent declarations"      ada-show-declaration-parents t]
+    ["Show references"               ada-show-references          t]
+    ["Show overriding"               ada-show-overriding          t]
+    ["Show overridden"               ada-show-overridden          t]
+    ["Goto next statement keyword"   forward-sexp   t]
+    ["Goto prev statement keyword"   backward-sexp   t]
+
+    ["-"                nil nil]
+
+    ["Align"                       ada-align                  t]
+    ["Comment/uncomment selection" comment-dwim               t]
+    ["Fill comment paragraph"         ada-fill-comment-paragraph           
(ada-in-comment-p)]
+    ["Fill comment paragraph justify" (ada-fill-comment-paragraph 'full)   
(ada-in-comment-p)]
+    ["Fill comment paragraph postfix" (ada-fill-comment-paragraph 'full t) 
(ada-in-comment-p)]
+    ["Adjust case at point"        ada-case-adjust-at-point   (not 
(use-region-p))]
+    ["Adjust case region"          ada-case-adjust-region     (use-region-p)]
+    ["Create full case exception"    ada-case-create-exception         t]
+    ["Create partial case exception" ada-case-create-partial-exception t]
+    ["Indent current statement"    ada-indent-statement       t]
+    ["Expand skeleton"               ada-expand                        t]
+    ["Make body for subprogram"    ada-make-subprogram-body   t]
+    ))
+
+(defun ada-popup-menu ()
+  "Pops up `ada-context-menu'.
+When a function from the menu is called, point is where the mouse
+button was clicked."
+  (interactive)
+  (mouse-set-point last-input-event)
+  (popup-menu ada-context-menu)
+  )
+
+(easy-menu-define ada-refactor-menu nil
+  "Context menu keymap for Ada mode refactor commands."
+  '("Ada refactor"
+    ["Method (Object) => Object.Method"   ada-wisi-refactor-1 t]
+    ["Object.Method   => Method (Object)" ada-wisi-refactor-2 t]
+    ["Element (Object, Index) => Object (Index)" ada-wisi-refactor-3 t]
+    ["Object (Index) => Element (Object, Index)" ada-wisi-refactor-4 t]
+    ))
+
+(defun ada-refactor-menu-popup ()
+  "Pops up `ada-refactor-menu'."
+  (interactive)
+  (mouse-set-point last-input-event)
+  (popup-menu ada-refactor-menu))
+
+(defun ada-indent-newline-indent ()
+  "insert a newline, indent the old and new lines."
+  (interactive "*")
+  ;; point may be in the middle of a word, so insert newline first,
+  ;; then go back and indent.
+  (insert "\n")
+  (unless (and (wisi-partial-parse-p (line-beginning-position) 
(line-end-position))
+              (save-excursion (progn (forward-char -1)(looking-back 
"begin\\|else" (line-beginning-position)))))
+    ;; Partial parse may think 'begin' is just the start of a
+    ;; statement, when it's actually part of a larger declaration. So
+    ;; don't indent 'begin'. Similarly for 'else'; error recovery will
+    ;; probably insert 'if then' immediately before it
+    (forward-char -1)
+    (funcall indent-line-function)
+    (forward-char 1))
+  (funcall indent-line-function))
+
+(defvar ada-indent-statement nil
+  ;; indentation function
+  "Function to indent the statement/declaration point is in or after.
+Function is called with no arguments.")
+
+(defun ada-indent-statement ()
+  "Indent current statement."
+  (interactive)
+  (when ada-indent-statement
+    (funcall ada-indent-statement)))
+
+(defvar ada-expand nil
+  ;; skeleton function
+  "Function to call to expand tokens (ie insert skeletons).")
+
+(defun ada-expand ()
+  "Expand previous word into a statement skeleton."
+  (interactive)
+  (when ada-expand
+    (funcall ada-expand)))
+
+(defvar ada-next-placeholder nil
+  ;; skeleton function
+  "Function to call to goto next placeholder.")
+
+(defun ada-next-placeholder ()
+  "Goto next placeholder.
+Placeholders are defined by the skeleton backend."
+  (interactive)
+  (when ada-next-placeholder
+    (funcall ada-next-placeholder)))
+
+(defvar ada-prev-placeholder nil
+  ;; skeleton function
+  "Function to call to goto previous placeholder.")
+
+(defun ada-prev-placeholder ()
+  "Goto previous placeholder.
+Placeholders are defined by the skeleton backend."
+  (interactive)
+  (when ada-prev-placeholder
+    (funcall ada-prev-placeholder)))
+
+;;;; abbrev, align
+
+(defvar ada-mode-abbrev-table nil
+  "Local abbrev table for Ada mode.")
+
+(defvar ada-align-rules
+  '((ada-declaration-assign
+     (regexp  . "[^:]\\(\\s-*\\)\\(:\\)[^:]")
+     (valid   . (lambda () (ada-align-valid)))
+     (repeat . t)
+     (modes   . '(ada-mode)))
+    (ada-associate
+     (regexp  . "[^=]\\(\\s-*\\)\\(=>\\)")
+     (valid   . (lambda () (ada-align-valid)))
+     (modes   . '(ada-mode)))
+    (ada-comment
+     (regexp  . "\\(\\s-*\\)--")
+     (valid   . (lambda () (ada-align-valid)))
+     (modes   . '(ada-mode)))
+    (ada-use
+     (regexp  . "\\(\\s-*\\)\\<\\(use\\s-\\)")
+     (valid   . (lambda () (ada-align-valid)))
+     (modes   . '(ada-mode)))
+    (ada-at
+     (regexp . "\\(\\s-+\\)\\(at\\)\\_>")
+     (valid   . (lambda () (ada-align-valid)))
+     (modes . '(ada-mode))))
+  "Rules to use to align different lines.")
+
+(defun ada-align-valid ()
+  "See use in `ada-align-rules'."
+  (save-excursion
+    ;; we don't put "when (match-beginning n)" here; missing a match
+    ;; is a bug in the regexp.
+    (goto-char (or (match-beginning 2) (match-beginning 1)))
+    (not (ada-in-string-or-comment-p))))
+
+(defconst ada-align-region-separate
+  (eval-when-compile
+    (concat
+     "^\\s-*\\($\\|\\("
+     "begin\\|"
+     "declare\\|"
+     "else\\|"
+     "end\\|"
+     "exception\\|"
+     "for\\|"
+     "function\\|"
+     "generic\\|"
+     "if\\|"
+     "is\\|"
+     "procedure\\|"
+     "private\\|"
+     "record\\|"
+     "return\\|"
+     "type\\|"
+     "when"
+     "\\)\\_>\\)"))
+  "See the variable `align-region-separate' for more information.")
+
+(defun ada-align ()
+  "If region is active, apply `align'. If not, attempt to align
+current construct."
+  (interactive)
+  (if (use-region-p)
+      (progn
+        (align (region-beginning) (region-end))
+        (deactivate-mark))
+
+    ;; else see if we are in a construct we know how to align
+    (let ((parse-result (syntax-ppss)))
+      (cond
+       ((ada-in-paramlist-p parse-result)
+        (ada-format-paramlist))
+
+       ((and
+        (ada-in-paren-p parse-result)
+        (ada-in-case-expression))
+       ;; align '=>'
+       (let ((begin (nth 1 parse-result))
+             (end   (scan-lists (point) 1 1)))
+         (align begin end 'entire)))
+
+       (t
+       (align-current))
+       ))))
+
+(defvar ada-in-paramlist-p nil
+  ;; Supplied by indentation engine parser
+  "Function to return t if point is inside the parameter-list of a subprogram 
declaration.
+Function is called with one optional argument; syntax-ppss result.")
+
+(defun ada-in-paramlist-p (&optional parse-result)
+  "Return t if point is inside the parameter-list of a subprogram declaration."
+  (when ada-in-paramlist-p
+    (funcall ada-in-paramlist-p parse-result)))
+
+(defvar ada-refactor-format-paramlist nil) ;; ada-wisi.el
+(declare-function ada-wisi-refactor "ada-wisi.el" (action))
+
+(defun ada-format-paramlist ()
+  "Reformat the parameter list point is in."
+  (interactive)
+  (condition-case nil
+      (ada-goto-open-paren)
+    (error
+     (user-error "Not in parameter list")))
+  (funcall indent-line-function); so new list is indented properly
+  (when (not (looking-back "^[ \t]*" (line-beginning-position)))
+    (delete-horizontal-space)
+    (insert " "))
+  (ada-wisi-refactor ada-refactor-format-paramlist))
+
+(defvar ada-reset-parser nil
+  ;; Supplied by indentation engine parser
+  "Function to reset parser, to clear confused state."
+  )
+
+(defun ada-reset-parser ()
+  "See variable ’ada-reset-parser’."
+  (interactive)
+  (when ada-reset-parser
+    (funcall ada-reset-parser)))
+
+(defvar ada-show-parse-error nil
+  ;; Supplied by indentation engine parser
+  "Function to show last error reported by indentation parser."
+  )
+
+(defun ada-show-parse-error ()
+  (interactive)
+  (when ada-show-parse-error
+    (funcall ada-show-parse-error)))
+
+;;;; auto-casing
+
+(defvar ada-case-full-exceptions '()
+  "Alist of words (entities) that have special casing, built from
+project file casing file list full word exceptions. Indexed by
+properly cased word; value is t.")
+
+(defvar ada-case-partial-exceptions '()
+  "Alist of partial words that have special casing, built from
+project casing files list partial word exceptions. Indexed by
+properly cased word; value is t.")
+
+(defun ada-case-show-files ()
+  "Show current casing files list."
+  (interactive)
+  (if (ada-prj-get 'casing)
+      (progn
+       (pop-to-buffer (get-buffer-create "*casing files*"))
+       (erase-buffer)
+       (dolist (file (ada-prj-get 'casing))
+         (insert (format "%s\n" file))))
+    (message "no casing files")
+    ))
+
+(defun ada-case-save-exceptions (full-exceptions partial-exceptions file-name)
+  "Save FULL-EXCEPTIONS, PARTIAL-EXCEPTIONS to the file FILE-NAME."
+  (with-temp-file (expand-file-name file-name)
+    (mapc (lambda (x) (insert (car x) "\n"))
+         (sort (copy-sequence full-exceptions)
+               (lambda(a b) (string< (car a) (car b)))))
+    (mapc (lambda (x) (insert "*" (car x) "\n"))
+         (sort (copy-sequence partial-exceptions)
+               (lambda(a b) (string< (car a) (car b)))))
+    ))
+
+(defun ada-case-read-exceptions (file-name)
+  "Read the content of the casing exception file FILE-NAME.
+Return (cons full-exceptions partial-exceptions)."
+  (setq file-name (expand-file-name (substitute-in-file-name file-name)))
+  (if (file-readable-p file-name)
+      (let (full-exceptions partial-exceptions word)
+       (with-temp-buffer
+         (insert-file-contents file-name)
+         (while (not (eobp))
+
+           (setq word (buffer-substring-no-properties
+                       (point) (save-excursion (skip-syntax-forward "w_") 
(point))))
+
+           (if (char-equal (string-to-char word) ?*)
+               ;; partial word exception
+               (progn
+                 (setq word (substring word 1))
+                 (unless (assoc-string word partial-exceptions t)
+                   (push (cons word t) partial-exceptions)))
+
+             ;; full word exception
+             (unless (assoc-string word full-exceptions t)
+               (push (cons word t) full-exceptions)))
+
+           (forward-line 1))
+         )
+       (cons full-exceptions partial-exceptions))
+
+    ;; else file not readable; might be a new project with no
+    ;; exceptions yet, so just return empty pair
+    (message "'%s' is not a readable file." file-name)
+    '(nil . nil)
+    ))
+
+(defun ada-case-merge-exceptions (result new)
+  "Merge NEW exeptions into RESULT.
+An item in both lists has the RESULT value."
+  (dolist (item new)
+    (unless (assoc-string (car item) result t)
+      (push item result)))
+  result)
+
+(defun ada-case-merge-all-exceptions (exceptions)
+  "Merge EXCEPTIONS into `ada-case-full-exceptions', 
`ada-case-partial-exceptions'."
+  (setq ada-case-full-exceptions (ada-case-merge-exceptions 
ada-case-full-exceptions (car exceptions)))
+  (setq ada-case-partial-exceptions (ada-case-merge-exceptions 
ada-case-partial-exceptions (cdr exceptions))))
+
+(defun ada-case-read-all-exceptions ()
+  "Read case exceptions from all files in project casing files,
+replacing current values of `ada-case-full-exceptions', 
`ada-case-partial-exceptions'."
+  (interactive)
+  (setq ada-case-full-exceptions '()
+       ada-case-partial-exceptions '())
+
+  (when (ada-prj-get 'casing)
+    (dolist (file (ada-prj-get 'casing))
+      (ada-case-merge-all-exceptions (ada-case-read-exceptions file))))
+  )
+
+(defun ada-case-add-exception (word exceptions)
+  "Add case exception WORD to EXCEPTIONS, replacing current entry, if any."
+  (if (assoc-string word exceptions t)
+      (setcar (assoc-string word exceptions t) word)
+    (push (cons word t) exceptions))
+  exceptions)
+
+(defun ada-case-create-exception (&optional word file-name partial)
+  "Define WORD as an exception for the casing system, save it in FILE-NAME.
+If PARTIAL is non-nil, create a partial word exception.  WORD
+defaults to the active region, or the word at point.  User is
+prompted to choose a file from project variable casing if it is a
+list."
+  (interactive)
+  (let ((casing (ada-prj-get 'casing)))
+    (setq file-name
+         (cond
+          (file-name file-name)
+
+          ((< 1 (length casing))
+           (completing-read "case exception file: " casing
+                            nil ;; predicate
+                            t   ;; require-match
+                            nil ;; initial-input
+                            nil ;; hist
+                            (car casing) ;; default
+                            ))
+          ((= 1 (length casing))
+           (car casing))
+
+          (t
+           (if ada-prj-current-file
+               (error "No exception file specified; set `casing' in project 
file.")
+             ;; IMPROVEME: could prompt, but then need to write to actual 
project file
+             ;;        (let ((temp
+             ;;               (read-file-name
+             ;;                "No exception file specified; adding to 
project. file: ")))
+             ;;          (message "remember to add %s to project file" temp)
+             ;;          (ada-prj-put 'casing temp)
+             ;;          temp)
+             (error "No exception file specified, and no project active. See 
variable `ada-case-exception-file'.")))
+          )))
+
+  (unless word
+    (if (use-region-p)
+       (progn
+         (setq word (buffer-substring-no-properties (region-beginning) 
(region-end)))
+         (deactivate-mark))
+      (save-excursion
+       (let ((syntax (if partial "w" "w_")))
+         (skip-syntax-backward syntax)
+         (setq word
+               (buffer-substring-no-properties
+                (point)
+                (progn (skip-syntax-forward syntax) (point))
+                ))))))
+
+  (let* ((exceptions (ada-case-read-exceptions file-name))
+        (full-exceptions (car exceptions))
+        (partial-exceptions (cdr exceptions)))
+
+    (cond
+     ((null partial)
+      (setq ada-case-full-exceptions (ada-case-add-exception word 
ada-case-full-exceptions))
+      (setq full-exceptions (ada-case-add-exception word full-exceptions)))
+
+     (t
+      (setq ada-case-partial-exceptions (ada-case-add-exception word 
ada-case-partial-exceptions))
+      (setq partial-exceptions (ada-case-add-exception word 
partial-exceptions)))
+     )
+    (ada-case-save-exceptions full-exceptions partial-exceptions file-name)
+    (message "created %s case exception '%s' in file '%s'"
+            (if partial "partial" "full")
+            word
+            file-name)
+    ))
+
+(defun ada-case-create-partial-exception ()
+  "Define active region or word at point as a partial word exception.
+User is prompted to choose a file from project variable casing if it is a 
list."
+  (interactive)
+  (ada-case-create-exception nil nil t))
+
+(defun ada-in-based-numeric-literal-p ()
+  "Return t if point is after a prefix of a based numeric literal."
+  (looking-back "\\([0-9]+#[0-9a-fA-F_]+\\)" (line-beginning-position)))
+
+(defvar ada-keywords nil
+  "List of Ada keywords for current `ada-language-version'.")
+
+(defun ada-after-keyword-p ()
+  "Return non-nil if point is after an element of `ada-keywords'."
+  (let ((word (buffer-substring-no-properties
+              (save-excursion (skip-syntax-backward "w_") (point))
+              (point))))
+    (member (downcase word) ada-keywords)))
+
+(defun ada-case-keyword (beg end)
+  (cl-ecase ada-case-keyword
+    (lower-case (downcase-region beg end))
+    (upper-case (upcase-region beg end))
+    ))
+
+(defun ada-case-identifier (start end force-case-strict)
+  (cl-ecase ada-case-identifier
+    (mixed-case (ada-mixed-case start end force-case-strict))
+    (lower-case (downcase-region start end))
+    (upper-case (upcase-region start end))
+    ))
+
+(defun ada-mixed-case (start end force-case-strict)
+  "Adjust case of region START END to Mixed_Case."
+  (let ((done nil)
+       next)
+    (if (or force-case-strict ada-case-strict)
+       (downcase-region start end))
+    (goto-char start)
+    (while (not done)
+      (setq next
+           (or
+            (save-excursion (when (search-forward "_" end t) (point-marker)))
+            (copy-marker (1+ end))))
+
+      ;; upcase first char
+      (upcase-region (point) (1+ (point)))
+
+      (goto-char next)
+      (if (< (point) end)
+         (setq start (point))
+       (setq done t))
+      )))
+
+(defun ada-case-adjust-identifier (&optional force-case)
+  "Adjust case of the previous word as an identifier.
+Uses `ada-case-identifier', with exceptions defined in
+`ada-case-full-exceptions', `ada-case-partial-exceptions'."
+  (interactive)
+  (save-excursion
+    (let ((end   (point-marker))
+         (start (progn (skip-syntax-backward "w_") (point)))
+         match
+         next
+         (done nil))
+
+      (if (setq match (assoc-string (buffer-substring-no-properties start end) 
ada-case-full-exceptions t))
+         ;; full word exception
+         (progn
+           ;; 'save-excursion' puts a marker at 'end'; if we do
+           ;; 'delete-region' first, it moves that marker to 'start',
+           ;; then 'insert' inserts replacement text after the
+           ;; marker, defeating 'save-excursion'. So we do 'insert' first.
+           (insert (car match))
+           (delete-region (point) end))
+
+       ;; else apply ada-case-identifier
+       (ada-case-identifier start end force-case)
+
+       ;; apply partial-exceptions
+       (goto-char start)
+       (while (not done)
+         (setq next
+               (or
+                (save-excursion (when (search-forward "_" end t) 
(point-marker)))
+                (copy-marker (1+ end))))
+
+         (when (setq match (assoc-string (buffer-substring-no-properties start 
(1- next))
+                                       ada-case-partial-exceptions t))
+           ;; see comment above at 'full word exception' for why
+           ;; we do insert first.
+           (insert (car match))
+           (delete-region (point) (1- next)))
+
+         (goto-char next)
+         (if (< (point) end)
+             (setq start (point))
+           (setq done t))
+          )))))
+
+(defun ada-case-adjust-keyword ()
+  "Adjust the case of the previous word as a keyword.
+`word' here is allowed to be underscore-separated (GPR external_as_list)."
+  (save-excursion
+    (let ((end   (point-marker))
+         (start (progn (skip-syntax-backward "w_") (point))))
+      (ada-case-keyword start end)
+    )))
+
+(defun ada-case-adjust (&optional typed-char in-comment)
+  "Adjust the case of the word before point.
+When invoked interactively, TYPED-CHAR must be
+`last-command-event', and it must not have been inserted yet.
+If IN-COMMENT is non-nil, adjust case of words in comments and strings as code,
+and treat `ada-case-strict' as t in code.."
+  (when (not (bobp))
+    (when (save-excursion
+           (forward-char -1); back to last character in word
+           (and (not (bobp))
+                (eq (char-syntax (char-after)) ?w); it can be capitalized
+
+                (not (and (eq typed-char ?')
+                          (eq (char-before (point)) ?'))); character literal
+
+                (or in-comment
+                    (not (ada-in-string-or-comment-p)))
+                ;; we sometimes want to capitialize an Ada identifier
+                ;; referenced in a comment, via
+                ;; ada-case-adjust-at-point.
+
+                (not (ada-in-based-numeric-literal-p))
+                ;; don't adjust case on hex digits
+                ))
+
+      ;; The indentation engine may trigger a reparse on
+      ;; non-whitespace changes, but we know we don't need to reparse
+      ;; for this change (assuming the user has not abused case
+      ;; exceptions!).
+      (let ((inhibit-modification-hooks t))
+       (cond
+        ;; Some attributes are also keywords, but captialized as
+        ;; attributes. So check for attribute first.
+        ((and
+          (not in-comment)
+          (save-excursion
+            (skip-syntax-backward "w_")
+            (eq (char-before) ?')))
+         (ada-case-adjust-identifier in-comment))
+
+        ((and
+          (not in-comment)
+          (not (eq typed-char ?_))
+          (ada-after-keyword-p))
+         (ada-case-adjust-keyword))
+
+        (t (ada-case-adjust-identifier in-comment))
+        ))
+      )))
+
+(defun ada-case-adjust-at-point (&optional in-comment)
+  "If ’ada-auto-case’ is non-nil, adjust case of word at point, move to end of 
word.
+With prefix arg, adjust case as code even if in comment or string;
+otherwise, capitalize words in comments and strings.
+If ’ada-auto-case’ is nil, capitalize current word."
+  (interactive "P")
+  (cond
+   ((or (null ada-auto-case)
+       (and (not in-comment)
+            (ada-in-string-or-comment-p)))
+    (skip-syntax-backward "w_")
+    (capitalize-word 1))
+
+   (t
+    (when
+       (and (not (eobp))
+            ;; we use '(syntax-after (point))' here, not '(char-syntax
+            ;; (char-after))', because the latter does not respect
+            ;; ada-syntax-propertize.
+            (memq (syntax-class (syntax-after (point))) '(2 3)))
+      (skip-syntax-forward "w_"))
+    (ada-case-adjust nil in-comment))
+   ))
+
+(defun ada-case-adjust-region (begin end)
+  "Adjust case of all words in region BEGIN END."
+  (interactive "r")
+  (narrow-to-region begin end)
+  (save-excursion
+    (goto-char begin)
+    (while (not (eobp))
+      (forward-comment (point-max))
+      (skip-syntax-forward "^w_")
+      (skip-syntax-forward "w_")
+      (ada-case-adjust)))
+  (widen))
+
+(defun ada-case-adjust-buffer ()
+  "Adjust case of current buffer."
+  (interactive)
+  (ada-case-adjust-region (point-min) (point-max)))
+
+(defun ada-case-adjust-interactive (arg)
+  "If `ada-auto-case' is non-nil, adjust the case of the previous word, and 
process the character just typed.
+To be bound to keys that should cause auto-casing.
+ARG is the prefix the user entered with \\[universal-argument]."
+  (interactive "P")
+
+  ;; character typed has not been inserted yet
+  (let ((lastk last-command-event)
+       (do-adjust nil))
+    (cond
+     ((null ada-auto-case))
+     ((eq ada-auto-case 'not-upper-case)
+      (save-excursion
+       (let* ((begin (progn (skip-syntax-backward "w_") (point)))
+              (end  (progn (skip-syntax-forward "w_") (point)))
+              (word (buffer-substring-no-properties begin end)))
+         (setq do-adjust (not (string-equal word (upcase word)))))))
+     (t
+      (setq do-adjust t)))
+
+    (cond
+     ((eq lastk ?\n)
+        (when do-adjust
+         (ada-case-adjust lastk))
+       (funcall ada-lfd-binding))
+
+     ((memq lastk '(?\r return))
+      (when do-adjust
+       (ada-case-adjust lastk))
+      (funcall ada-ret-binding))
+
+     (t
+      (when do-adjust
+       (ada-case-adjust lastk))
+      (self-insert-command (prefix-numeric-value arg)))
+     )))
+
+;;;; project files
+
+;; An Emacs Ada mode project file can specify several things:
+;;
+;; - a compiler-specific project file
+;;
+;; - compiler-specific environment variables
+;;
+;; - other compiler-specific things (see the compiler support elisp code)
+;;
+;; - a list of source directories (in addition to those specified in the 
compiler project file)
+;;
+;; - a casing exception file
+;;
+;; All of the data used by Emacs Ada mode functions specified in a
+;; project file is stored in a property list. The property list is
+;; stored in an alist indexed by the project file name, so multiple
+;; project files can be selected without re-parsing them (some
+;; compiler project files can take a long time to parse).
+
+(defvar ada-prj-alist nil
+  "Alist holding currently parsed Emacs Ada project files. Indexed by absolute 
project file name.")
+
+(defvar ada-prj-current-file nil
+  "Current Emacs Ada project file.")
+
+(defvar ada-prj-current-project nil
+  "Current Emacs Ada mode project; a plist.")
+
+(defun ada-prj-get (prop &optional plist)
+  "Return value of PROP in PLIST.
+Optional PLIST defaults to `ada-prj-current-project'."
+  (let ((prj (or plist ada-prj-current-project)))
+    (if prj
+       (plist-get prj prop)
+
+      ;; no project, just use default vars
+      ;; must match code in ada-prj-default, except for src_dir.
+      (cl-case prop
+       (ada_compiler    ada-compiler)
+       (auto_case       ada-auto-case)
+       (case_keyword    ada-case-keyword)
+       (case_identifier ada-case-identifier)
+       (case_strict     ada-case-strict)
+       (casing          (if (listp ada-case-exception-file)
+                            ada-case-exception-file
+                          (list ada-case-exception-file)))
+       (path_sep        path-separator)
+       (proc_env        (cl-copy-list process-environment))
+       (src_dir         (list (directory-file-name default-directory)))
+        (obj_dir         (list (directory-file-name default-directory)))
+       (xref_tool       ada-xref-tool)
+       ))))
+
+(defun ada-prj-put (prop val &optional plist)
+  "Set value of PROP in PLIST to VAL.
+Optional PLIST defaults to `ada-prj-current-project'."
+  (plist-put (or plist ada-prj-current-project) prop val))
+
+(defun ada-require-project-file ()
+  (unless ada-prj-current-file
+    (error "no Emacs Ada project file specified")))
+
+(defvar ada-prj-default-list nil
+  ;; project file parse
+  "List of functions to add default project variables. Called
+with one argument; the default project properties
+list. `default-directory' is set to the directory containing the
+project file. Function should add to the properties list and
+return it.")
+
+(defvar ada-prj-default-compiler-alist nil
+  ;; project file parse
+  "Compiler-specific function to set default project variables.
+Indexed by ada-compiler.  Called with one argument; the default
+project properties list. Function should add to the properties
+list and return it.")
+
+(defvar ada-prj-default-xref-alist nil
+  ;; project file parse
+  "Xref-tool-specific function to set default project variables.
+Indexed by ada-xref-tool.  Called with one argument; the default
+project properties list. Function should add to the properties
+list and return it.")
+
+(defun ada-prj-default (&optional src-dir)
+  "Return the default project properties list.
+If SRC-DIR is non-nil, use it as the default for src_dir.
+Include properties set via `ada-prj-default-compiler-alist',
+`ada-prj-default-xref-alist'."
+
+  (let (project func)
+    (setq
+     project
+     (list
+      ;; variable name alphabetical order
+      'ada_compiler    ada-compiler
+      'auto_case       ada-auto-case
+      'case_keyword    ada-case-keyword
+      'case_identifier ada-case-identifier
+      'case_strict     ada-case-strict
+      'casing          (if (listp ada-case-exception-file)
+                          ada-case-exception-file
+                        (list ada-case-exception-file))
+      'path_sep        path-separator;; prj variable so users can override it 
for their compiler
+      'proc_env        (cl-copy-list process-environment)
+      'src_dir         (if src-dir (list src-dir) nil)
+      'xref_tool       ada-xref-tool
+      ))
+
+    (cl-dolist (func ada-prj-default-list)
+      (setq project (funcall func project)))
+
+    (setq func (cdr (assq ada-compiler ada-prj-default-compiler-alist)))
+    (when func (setq project (funcall func project)))
+    (setq func (cdr (assq ada-xref-tool ada-prj-default-xref-alist)))
+    (when func (setq project (funcall func project)))
+    project))
+
+(defvar ada-prj-parser-alist
+  (mapcar
+   (lambda (ext) (cons ext #'ada-prj-parse-file-1))
+   ada-prj-file-extensions)
+  ;; project file parse
+  "Alist of parsers for project files, indexed by file extension.
+Default provides the minimal Ada mode parser; compiler support
+code may add other parsers.  Parser is called with two arguments;
+the project file name and the current project property
+list. Parser must modify or add to the property list and return it.")
+
+;; This autoloaded because it is often used in Makefiles, and thus
+;; will be the first ada-mode function executed.
+;;;###autoload
+(defun ada-parse-prj-file (prj-file)
+  "Read Emacs Ada or compiler-specific project file PRJ-FILE, set project 
properties in `ada-prj-alist'."
+  ;; Not called ada-prj-parse-file for Ada mode 4.01 compatibility
+  (setq prj-file (expand-file-name prj-file))
+
+  (unless (file-readable-p prj-file)
+    (error "Project file '%s' is not readable" prj-file))
+
+  (run-hooks `ada-prj-parse-hook)
+
+  (let* ((default-directory (file-name-directory prj-file))
+        (project (ada-prj-default))
+        (parser (cdr (assoc (file-name-extension prj-file) 
ada-prj-parser-alist))))
+
+    (if parser
+       ;; parser may reference the "current project", so bind that now.
+       (let ((ada-prj-current-project project)
+             (ada-prj-current-file prj-file))
+         (setq project (funcall parser prj-file project)))
+      (error "no project file parser defined for '%s'" prj-file))
+
+    ;; Store the project properties
+    (if (assoc prj-file ada-prj-alist)
+       (setcdr (assoc prj-file ada-prj-alist) project)
+      (add-to-list 'ada-prj-alist (cons prj-file project)))
+
+    ;; return t for interactive use
+    t))
+
+(defun ada-prj-reparse-select-current ()
+  "Reparse the current project file, re-select it.
+Useful when the project file has been edited."
+  (interactive)
+  (ada-parse-prj-file ada-prj-current-file)
+  (ada-select-prj-file ada-prj-current-file))
+
+(defun ada-reset-comp-prj ()
+  "Reset compilation and project vars affected by a change in compiler version.
+Useful when experimenting with an upgraded compiler."
+  (interactive)
+  (when (buffer-live-p "*compilation*")
+    (with-current-buffer "*compilation*"
+      (setq compilation-environment nil)))
+  (setq ada-prj-alist nil)
+  (setq ada-prj-current-project nil)
+  )
+
+(defvar ada-prj-parse-one-compiler nil
+  ;; project file parse
+  "Compiler-specific function to process one Ada project property.
+Indexed by project variable ada_compiler.
+Called with three arguments; the property name, property value,
+and project properties list. Function should add to or modify the
+properties list and return it, or return nil if the name is not
+recognized.")
+
+(defvar ada-prj-parse-one-xref nil
+  ;; project file parse
+  "Xref-tool-specific function to process one Ada project property.
+Indexed by project variable xref_tool.
+Called with three arguments; the property name, property value,
+and project properties list. Function should add to or modify the
+properties list and return it, or return nil if the name is not
+recognized.")
+
+(defvar ada-prj-parse-final-compiler nil
+  ;; project file parse
+  "Alist of compiler-specific functions to finish processing Ada project 
properties.
+Indexed by project variable ada_compiler.
+Called with one argument; the project properties list. Function
+should add to or modify the list and return it.")
+
+(defvar ada-prj-parse-final-xref nil
+  ;; project file parse
+  "Alist of xref-tool-specific functions to finish processing Ada project 
properties.
+Indexed by project variable xref_tool.
+Called with one argument; the project properties list. Function
+should add to or modify the list and return it.")
+
+(defun ada-prj-parse-file-1 (prj-file project)
+  "Parse the Ada mode project file PRJ-FILE, set project properties in PROJECT.
+Return new value of PROJECT."
+  (let (;; fields that are lists or that otherwise require special processing
+       casing src_dir obj_dir
+       tmp-prj
+       (parse-one-compiler (cdr (assoc ada-compiler 
ada-prj-parse-one-compiler)))
+       (parse-final-compiler (cdr (assoc ada-compiler 
ada-prj-parse-final-compiler)))
+       (parse-one-xref (cdr (assoc ada-xref-tool ada-prj-parse-one-xref)))
+       (parse-final-xref (cdr (assoc ada-xref-tool ada-prj-parse-final-xref))))
+
+    (with-current-buffer (find-file-noselect prj-file)
+      (goto-char (point-min))
+
+      ;; process each line
+      (while (not (eobp))
+
+       ;; ignore lines that don't have the format "name=value", put
+       ;; 'name', 'value' in match-string.
+       (when (looking-at "^\\([^=\n]+\\)=\\(.*\\)")
+         (cond
+          ;; variable name alphabetical order
+
+          ((string= (match-string 1) "ada_compiler")
+           (let ((comp (intern (match-string 2))))
+             (setq project (plist-put project 'ada_compiler comp))
+             (setq parse-one-compiler (cdr (assq comp 
ada-prj-parse-one-compiler)))
+             (setq parse-final-compiler (cdr (assq comp 
ada-prj-parse-final-compiler)))))
+
+          ((string= (match-string 1) "auto_case")
+           (setq project (plist-put project 'auto_case (intern (match-string 
2)))))
+
+          ((string= (match-string 1) "case_keyword")
+           (setq project (plist-put project 'case_keyword (intern 
(match-string 2)))))
+
+          ((string= (match-string 1) "case_identifier")
+           (setq project (plist-put project 'case_identifier (intern 
(match-string 2)))))
+
+          ((string= (match-string 1) "case_strict")
+           (setq project (plist-put project 'case_strict (intern (match-string 
2)))))
+
+          ((string= (match-string 1) "casing")
+            (cl-pushnew (expand-file-name
+                         (substitute-in-file-name (match-string 2)))
+                        casing :test #'equal))
+
+          ((string= (match-string 1) "el_file")
+           (let ((file (expand-file-name (substitute-in-file-name 
(match-string 2)))))
+             (setq project (plist-put project 'el_file file))
+             ;; eval now as well as in select, since it might affect parsing
+             (load-file file)))
+
+          ((string= (match-string 1) "src_dir")
+            (cl-pushnew (file-name-as-directory
+                         (expand-file-name (match-string 2)))
+                        src_dir :test #'equal))
+
+          ((string= (match-string 1) "obj_dir")
+           (cl-pushnew (file-name-as-directory
+                        (expand-file-name (match-string 2)))
+                       obj_dir :test #'equal))
+
+          ((string= (match-string 1) "xref_tool")
+           (let ((xref (intern (match-string 2))))
+             (setq project (plist-put project 'xref_tool xref))
+             (setq parse-one-xref (cdr (assq xref ada-prj-parse-one-xref)))
+             (setq parse-final-xref (cdr (assq xref 
ada-prj-parse-final-xref)))))
+
+          (t
+           (if (or
+                (and parse-one-compiler
+                     (setq tmp-prj (funcall parse-one-compiler (match-string 
1) (match-string 2) project)))
+                (and parse-one-xref
+                     (setq tmp-prj (funcall parse-one-xref (match-string 1) 
(match-string 2) project))))
+
+               (setq project tmp-prj)
+
+             ;; Any other field in the file is set as an environment
+             ;; variable or a project file variable.
+             (if (= ?$ (elt (match-string 1) 0))
+                 ;; process env var. We don't do expand-file-name
+                 ;; here because the application may be expecting a
+                 ;; simple string.
+                 (let ((process-environment (cl-copy-list (plist-get project 
'proc_env))))
+                   (setenv (substring (match-string 1) 1)
+                           (substitute-in-file-name (match-string 2)))
+                   (setq project
+                         (plist-put project 'proc_env (cl-copy-list 
process-environment))))
+
+               ;; not recognized; assume it is a user-defined variable like 
"comp_opt"
+               (setq project (plist-put project (intern (match-string 1)) 
(match-string 2)))
+             )))
+          ))
+
+       (forward-line 1))
+
+      );; done reading file
+
+    ;; process accumulated lists
+    (if casing (setq project (plist-put project 'casing (reverse casing))))
+    (if src_dir (setq project (plist-put project 'src_dir (reverse src_dir))))
+    (if obj_dir (setq project (plist-put project 'obj_dir (reverse obj_dir))))
+
+    (when parse-final-compiler
+      ;; parse-final-compiler may reference the "current project", so
+      ;; bind that now, to include the properties set above.
+      (let ((ada-prj-current-project project)
+           (ada-prj-current-file prj-file))
+       (setq project (funcall parse-final-compiler project))))
+
+    (when parse-final-xref
+      (let ((ada-prj-current-project project)
+           (ada-prj-current-file prj-file))
+       (setq project (funcall parse-final-xref project))))
+
+    project
+    ))
+
+(defvar ada-select-prj-compiler nil
+  "Alist of functions to call for compiler specific project file selection.
+Indexed by project variable ada_compiler.")
+
+(defvar ada-deselect-prj-compiler nil
+  "Alist of functions to call for compiler specific project file deselection.
+Indexed by project variable ada_compiler.")
+
+(defvar ada-select-prj-xref-tool nil
+  "Alist of functions to call for xref-tool specific project file selection.
+Indexed by project variable xref_tool.")
+
+(defvar ada-deselect-prj-xref-tool nil
+  "Alist of functions to call for xref-tool specific project file deselection.
+Indexed by project variable xref_tool.")
+
+(defun ada-refresh-prj-file ()
+  "Reparse, reselect current project file.
+Useful when project has been edited."
+  (interactive)
+  (let* ((prj-file ada-prj-current-file)
+        (parsed (assoc prj-file ada-prj-alist)))
+    (setq ada-prj-current-file nil)
+    (setq ada-prj-current-project nil)
+    (when parsed
+      (setq ada-prj-alist (delq parsed ada-prj-alist)))
+    (ada-select-prj-file prj-file nil)))
+
+;; This is autoloaded because it is often used in Makefiles, and thus
+;; will be the first ada-mode function executed.
+;;;###autoload
+(defun ada-select-prj-file (prj-file &optional no-force)
+  "Select PRJ-FILE as the current project file, parsing it if necessary.
+Deselects the current project first."
+  (interactive)
+  (setq prj-file (expand-file-name prj-file))
+
+  (when (or (not no-force)
+           (not (string-equal prj-file ada-prj-current-project)))
+    (setq ada-prj-current-project (cdr (assoc prj-file ada-prj-alist)))
+
+    (when (null ada-prj-current-project)
+      (setq ada-prj-current-file nil)
+      (ada-parse-prj-file prj-file)
+      (setq ada-prj-current-project (cdr (assoc prj-file ada-prj-alist)))
+      (when (null ada-prj-current-project)
+       (error "Project file '%s' parse failed." prj-file)))
+
+    (let ((func (cdr (assq (ada-prj-get 'ada_compiler) 
ada-deselect-prj-compiler))))
+      (when func (funcall func)))
+
+    (let ((func (cdr (assq (ada-prj-get 'xref_tool) 
ada-deselect-prj-xref-tool))))
+      (when func (funcall func)))
+
+    (setq ada-prj-current-file prj-file)
+
+    ;; Project file should fully specify what compilers are used,
+    ;; including what compilation filters they need. There may be more
+    ;; than just an Ada compiler.
+    (setq compilation-error-regexp-alist nil)
+    (setq compilation-filter-hook nil)
+
+    (when (ada-prj-get 'el_file)
+      (load-file (ada-prj-get 'el_file)))
+
+    (ada-case-read-all-exceptions)
+
+    (setq compilation-search-path (ada-prj-get 'src_dir))
+
+    (let ((func (cdr (assq (ada-prj-get 'ada_compiler) 
ada-select-prj-compiler))))
+      (when func (funcall func)))
+
+    (let ((func (cdr (assq (ada-prj-get 'xref_tool) 
ada-select-prj-xref-tool))))
+      (when func (funcall func)))
+
+    ;; return 't', for decent display in message buffer when called 
interactively
+    t))
+
+(defun ada-deselect-prj (prj)
+  "Deselect the project file PRJ, if current."
+  ;; For use as ’project-deselect’ (experimental). Duplicates part of
+  ;; ’ada-select-prj-file’; should delete that, use this.
+  (when (string-equal prj ada-prj-current-file)
+    (let ((func (cdr (assq (ada-prj-get 'ada_compiler) 
ada-deselect-prj-compiler))))
+      (when func (funcall func)))
+
+    (let ((func (cdr (assq (ada-prj-get 'xref_tool) 
ada-deselect-prj-xref-tool))))
+      (when func (funcall func)))
+
+    (setq ada-prj-current-project nil)
+    ))
+
+(defun ada-create-select-default-prj (&optional directory)
+  "Create a default project with src_dir set to DIRECTORY (default current 
directory), select it."
+  (let* ((dir (or directory default-directory))
+        (prj-file (expand-file-name "default_.adp" dir))
+        (project (ada-prj-default dir)))
+
+    (if (assoc prj-file ada-prj-alist)
+       (setcdr (assoc prj-file ada-prj-alist) project)
+      (add-to-list 'ada-prj-alist (cons prj-file project)))
+
+    (ada-select-prj-file prj-file)
+    ))
+
+(defun ada-prj-select ()
+  "Select the current project file from the list of currently available 
project files."
+  (interactive)
+  (ada-select-prj-file (completing-read "project: " ada-prj-alist nil t))
+  )
+
+(defun ada-prj-delete ()
+  "Delete a project file from the list of currently available project files."
+  (interactive)
+  (let* ((prj-file (completing-read "project: " ada-prj-alist nil t))
+        (prj-entry (assoc prj-file ada-prj-alist)))
+    (setq ada-prj-alist (delete prj-entry ada-prj-alist))
+    ))
+
+(defun ada-prj-show ()
+  "Show current Emacs Ada mode project file."
+  (interactive)
+  (message "current Emacs Ada mode project file: %s" ada-prj-current-file))
+
+(defvar ada-prj-show-prj-path nil
+  ;; Supplied by compiler
+  "Function to show project file search path used by compiler (and possibly 
xref tool)."
+  )
+
+(defun ada-prj-show-prj-path ()
+  (interactive)
+  (when ada-prj-show-prj-path
+    (funcall ada-prj-show-prj-path)))
+
+(defun ada-prj-show-src-path ()
+  "Show the project source file search path."
+  (interactive)
+  (if compilation-search-path
+      (progn
+       (pop-to-buffer (get-buffer-create "*Ada project source file search 
path*"))
+       (erase-buffer)
+       (dolist (file compilation-search-path)
+         (insert (format "%s\n" file))))
+    (message "no project source file search path set")
+    ))
+
+(defvar ada-show-xref-tool-buffer nil
+  ;; Supplied by xref tool
+  "Function to show process buffer used by xref tool."
+  )
+
+(defun ada-show-xref-tool-buffer ()
+  (interactive)
+  (when ada-show-xref-tool-buffer
+    (funcall ada-show-xref-tool-buffer)))
+
+;;;; syntax properties
+
+(defvar ada-mode-syntax-table
+  (let ((table (make-syntax-table)))
+    ;; (info "(elisp)Syntax Class Table" "*info syntax class table*")
+    ;; make-syntax-table sets all alphanumeric to w, etc; so we only
+    ;; have to add ada-specific things.
+
+    ;; string brackets. `%' is the obsolete alternative string
+    ;; bracket (arm J.2); if we make it syntax class ", it throws
+    ;; font-lock and indentation off the track, so we use syntax class
+    ;; $.
+    (modify-syntax-entry ?%  "$" table)
+    (modify-syntax-entry ?\" "\"" table)
+
+    ;; punctuation; operators etc
+    (modify-syntax-entry ?#  "." table); based number
+    (modify-syntax-entry ?&  "." table)
+    (modify-syntax-entry ?*  "." table)
+    (modify-syntax-entry ?+  "." table)
+    (modify-syntax-entry ?-  "." table); operator; see ada-syntax-propertize 
for double hyphen as comment
+    (modify-syntax-entry ?. "." table)
+    (modify-syntax-entry ?/  "." table)
+    (modify-syntax-entry ?:  "." table)
+    (modify-syntax-entry ?<  "." table)
+    (modify-syntax-entry ?=  "." table)
+    (modify-syntax-entry ?>  "." table)
+    (modify-syntax-entry ?\' "." table); attribute; see ada-syntax-propertize 
for character literal
+    (modify-syntax-entry ?\; "." table)
+    (modify-syntax-entry ?\\ "." table); default is escape; not correct for 
Ada strings
+    (modify-syntax-entry ?\|  "." table)
+
+    ;; \f and \n end a comment.
+    ;; comment start set in ada-syntax-propertize.
+    ;; flag ’s’ experimental; end unterminated string at newline.
+    (modify-syntax-entry ?\f  "> s" table)
+    (modify-syntax-entry ?\n  "> s" table)
+
+    (modify-syntax-entry ?_ "_" table); symbol constituents, not word.
+
+    (modify-syntax-entry ?\( "()" table)
+    (modify-syntax-entry ?\) ")(" table)
+
+    ;; skeleton placeholder delimiters; see ada-skel.el. We use generic
+    ;; comment delimiter class, not comment starter/comment ender, so
+    ;; these can be distinguished from line end.
+    (modify-syntax-entry ?{ "!" table)
+    (modify-syntax-entry ?} "!" table)
+
+    table
+    )
+  "Syntax table to be used for editing Ada source code.")
+
+(defvar ada-syntax-propertize-hook nil
+  ;; provided by preprocessor, lumped with xref-tool
+  "Hook run from `ada-syntax-propertize'.
+Called by `syntax-propertize', which is called by font-lock in
+`after-change-functions'. Therefore, care must be taken to avoid
+race conditions with the grammar parser.")
+
+(defun ada-syntax-propertize (start end)
+  "For `syntax-propertize-function'.
+Assign `syntax-table' properties in region START .. END.
+In particular, character constants are set to have string syntax.
+Runs `ada-syntax-propertize-hook'."
+  ;; (info "(elisp)Syntax Properties")
+  ;;
+  ;; called from `syntax-propertize', inside save-excursion 
with-silent-modifications
+  (let ((inhibit-read-only t)
+       (inhibit-point-motion-hooks t))
+    (goto-char start)
+    (save-match-data
+      (while (re-search-forward
+             (concat
+              "[^a-zA-Z0-9)]\\('\\)[^'\n]\\('\\)"; 1, 2: character literal, 
not attribute
+              "\\|[^a-zA-Z0-9)]\\('''\\)"; 3: character literal '''
+              "\\|\\(--\\)"; 4: comment start
+              )
+             end t)
+       ;; syntax-propertize-extend-region-functions is set to
+       ;; syntax-propertize-wholelines by default. We assume no
+       ;; coding standard will permit a character literal at the
+       ;; start of a line (not preceded by whitespace).
+       (cond
+        ((match-beginning 1)
+         (put-text-property
+          (match-beginning 1) (match-end 1) 'syntax-table '(7 . ?'))
+         (put-text-property
+          (match-beginning 2) (match-end 2) 'syntax-table '(7 . ?')))
+        ((match-beginning 3)
+         (put-text-property
+          (match-beginning 3) (1+ (match-beginning 3)) 'syntax-table '(7 . ?'))
+         (put-text-property
+          (1- (match-end 3)) (match-end 3) 'syntax-table '(7 . ?')))
+        ((match-beginning 4)
+         (put-text-property
+          (match-beginning 4) (match-end 4) 'syntax-table '(11 . nil)))
+        )))
+    (run-hook-with-args 'ada-syntax-propertize-hook start end))
+  )
+
+(defun ada-in-comment-p (&optional parse-result)
+  "Return t if inside a comment.
+If PARSE-RESULT is non-nil, use it instead of calling `syntax-ppss'."
+  (nth 4 (or parse-result (syntax-ppss))))
+
+(defun ada-in-string-p (&optional parse-result)
+  "Return t if point is inside a string.
+If PARSE-RESULT is non-nil, use it instead of calling `syntax-ppss'."
+  (nth 3 (or parse-result (syntax-ppss))))
+
+(defun ada-in-string-or-comment-p (&optional parse-result)
+  "Return t if inside a comment or string.
+If PARSE-RESULT is non-nil, use it instead of calling `syntax-ppss'."
+  (setq parse-result (or parse-result (syntax-ppss)))
+  (or (ada-in-string-p parse-result) (ada-in-comment-p parse-result)))
+
+(defun ada-in-paren-p (&optional parse-result)
+  "Return t if point is inside a pair of parentheses.
+If PARSE-RESULT is non-nil, use it instead of calling `syntax-ppss'."
+  (> (nth 0 (or parse-result (syntax-ppss))) 0))
+
+(defun ada-pos-in-paren-p (pos)
+  "Return t if POS is inside a pair of parentheses."
+  (save-excursion
+    (> (nth 0 (syntax-ppss pos)) 0)))
+
+(defun ada-same-paren-depth-p (pos1 pos2)
+  "Return t if POS1 is at same parentheses depth as POS2."
+  (= (nth 0 (syntax-ppss pos1)) (nth 0 (syntax-ppss pos2))))
+
+(defun ada-goto-open-paren (&optional offset parse-result)
+  "Move point to innermost opening paren surrounding current point, plus 
OFFSET.
+Throw error if not in paren.  If PARSE-RESULT is non-nil, use it
+instead of calling `syntax-ppss'."
+  (goto-char (+ (or offset 0) (nth 1 (or parse-result (syntax-ppss))))))
+
+;;;; navigation within and between files
+
+(defvar ada-body-suffixes '(".adb")
+  "List of possible suffixes for Ada body files.
+The extensions should include a `.' if needed.")
+
+(defvar ada-spec-suffixes '(".ads")
+  "List of possible suffixes for Ada spec files.
+The extensions should include a `.' if needed.")
+
+(defvar ada-other-file-alist
+  '(("\\.ads$" (".adb"))
+    ("\\.adb$" (".ads")))
+  "Alist used by `find-file' to find the name of the other package.
+See `ff-other-file-alist'.")
+
+(defconst ada-name-regexp
+  "\\(\\(?:\\sw\\|[_.]\\)+\\)")
+
+(defconst ada-parent-name-regexp
+  "\\([a-zA-Z0-9_\\.]+\\)\\.[a-zA-Z0-9_]+"
+  "Regexp for extracting the parent name from fully-qualified name.")
+
+(defvar ada-file-name-from-ada-name nil
+  ;; determined by ada-xref-tool, set by *-select-prj
+  "Function called with one parameter ADA-NAME, which is a library
+unit name; it should return the filename in which ADA-NAME is
+found.")
+
+(defun ada-file-name-from-ada-name (ada-name)
+  "Return the filename in which ADA-NAME is found."
+  (ada-require-project-file)
+  (funcall ada-file-name-from-ada-name ada-name))
+
+(defvar ada-ada-name-from-file-name nil
+  ;; supplied by compiler
+  "Function called with one parameter FILE-NAME, which is a library
+unit name; it should return the Ada name that should be found in FILE-NAME.")
+
+(defun ada-ada-name-from-file-name (file-name)
+  "Return the ada-name that should be found in FILE-NAME."
+  (ada-require-project-file)
+  (funcall ada-ada-name-from-file-name file-name))
+
+(defun ada-ff-special-extract-parent ()
+  (setq ff-function-name (match-string 1))
+  (file-name-nondirectory
+   (or
+    (ff-get-file-name
+     compilation-search-path
+     (ada-file-name-from-ada-name ff-function-name)
+     ada-spec-suffixes)
+    (error "parent '%s' not found; set project file?" ff-function-name))))
+
+(defun ada-ff-special-with ()
+  (let ((package-name (match-string 1)))
+    (setq ff-function-name (concat 
"^\\(function\\|procedure\\|package\\)\\s-+" package-name "\\([^_]\\|$\\)"))
+    (file-name-nondirectory
+     (or
+      (ff-get-file-name
+       compilation-search-path
+       (ada-file-name-from-ada-name package-name)
+       (append ada-spec-suffixes ada-body-suffixes))
+      (error "package '%s' not found; set project file?" package-name)))
+    ))
+
+(defun ada-set-ff-special-constructs ()
+  "Add Ada-specific pairs to `ff-special-constructs'."
+  (set (make-local-variable 'ff-special-constructs) nil)
+  (mapc (lambda (pair) (add-to-list 'ff-special-constructs pair))
+       ;; Each car is a regexp; if it matches at point, the cdr is invoked.
+       ;; Each cdr should set ff-function-name to a string or regexp
+       ;; for ada-set-point-accordingly, and return the file name
+       ;; (sans directory, must include suffix) to go to.
+       (list
+        ;; Top level child package declaration (not body), or child
+        ;; subprogram declaration or body; go to the parent package.
+        (cons (concat "^\\(?:private[ 
\t]+\\)?\\(?:package\\|procedure\\|function\\)[ \t]+"
+                      ada-parent-name-regexp "\\(?:;\\|[ \t]+\\|$\\)")
+              'ada-ff-special-extract-parent)
+
+        ;; A "with" clause. Note that it may refer to a procedure body, as 
well as a spec
+        (cons (concat "^\\(?:limited[ \t]+\\)?\\(?:private[ \t]+\\)?with[ 
\t]+" ada-name-regexp)
+              'ada-ff-special-with)
+        )))
+
+(defvar ada-which-function nil
+  ;; supplied by indentation engine
+  ;;
+  ;; This is run from ff-pre-load-hook, so ff-function-name may have
+  ;; been set by ff-treat-special; don't reset it.
+  "Function called with one parameter (INCLUDE-TYPE); it should
+return the name of the package, protected type, subprogram,
+entry, or task type whose definition/declaration point is in, or
+for declarations that don't have declarative regions, just after;
+or nil.
+
+If INCLUDE-TYPE is non-nil, include type names.
+
+In addition, if `ff-function-name' is non-nil, store in
+`ff-function-name' a regexp that will find the function in the
+other file.")
+
+(defun ada-which-function (&optional include-type)
+  "See `ada-which-function' variable."
+  (when ada-which-function
+    (funcall ada-which-function include-type)))
+
+(defvar ada-on-context-clause nil
+  ;; supplied by indentation engine
+  "Function called with no parameters; it should return non-nil
+  if point is on a context clause.")
+
+(defun ada-on-context-clause ()
+  "See `ada-on-context-clause' variable."
+  (interactive)
+  (when ada-on-context-clause
+    (funcall ada-on-context-clause)))
+
+(defvar ada-in-case-expression nil
+  ;; supplied by indentation engine
+  "Function called with no parameters; it should return non-nil
+  if point is in a case expression.")
+
+(defun ada-in-case-expression ()
+  "See `ada-in-case-expression' variable."
+  (interactive)
+  (when ada-in-case-expression
+    (funcall ada-in-case-expression)))
+
+(defvar ada-goto-subunit-name nil
+  ;; supplied by indentation engine
+  "Function called with no parameters; if the current buffer
+  contains a subunit, move point to the subunit name (for
+  `ada-goto-declaration'), return t; otherwise leave point alone,
+  return nil.")
+
+(defun ada-goto-subunit-name ()
+  "See `ada-goto-subunit-name' variable."
+  (interactive)
+  (when ada-goto-subunit-name
+    (funcall ada-goto-subunit-name)))
+
+(defun ada-add-log-current-function ()
+  "For `add-log-current-defun-function'."
+  ;; add-log-current-defun is typically called with point at the start
+  ;; of an ediff change section, which is before the start of the
+  ;; declaration of a new item. So go to the start of the current line
+  ;; first
+  (save-excursion
+    (back-to-indentation)
+    (ada-which-function t)))
+
+(defun ada-set-point-accordingly ()
+  "Move to the string specified in `ff-function-name', which may be a regexp,
+previously set by a file navigation command."
+  (when ff-function-name
+    (let ((done nil)
+         (found nil))
+      (goto-char (point-min))
+      ;; We are looking for an Ada declaration, so don't stop for strings or 
comments
+      ;;
+      ;; This will still be confused by multiple references; we need
+      ;; to use compiler cross reference info for more precision.
+      (while (not done)
+       (if (search-forward-regexp ff-function-name nil t)
+           (setq found (match-beginning 0))
+         ;; not in remainder of buffer
+         (setq done t))
+       (if (ada-in-string-or-comment-p)
+           (setq found nil)
+         (setq done t)))
+      (when found
+       (goto-char found)
+       ;; different parsers find different points on the line; normalize here
+       (back-to-indentation))
+      (setq ff-function-name nil))))
+
+(defun ada-check-current-project (file-name)
+  "Throw error if FILE-NAME (must be absolute) is not found in
+the current project source directories, or if no project has been
+set."
+  (when (null (car compilation-search-path))
+    (error "no file search path defined; set project file?"))
+
+  ;; file-truename handles symbolic links
+  (let* ((visited-file (file-truename file-name))
+         (found-file (locate-file (file-name-nondirectory visited-file)
+                                 compilation-search-path)))
+    (unless found-file
+      (error "current file not part of current project; wrong project?"))
+
+    (setq found-file (file-truename found-file))
+
+    ;; (nth 10 (file-attributes ...)) is the inode; required when hard
+    ;; links are present.
+    (let* ((visited-file-inode (nth 10 (file-attributes visited-file)))
+           (found-file-inode (nth 10 (file-attributes found-file))))
+      (unless (equal visited-file-inode found-file-inode)
+        (error "%s (opened) and %s (found in project) are two different files"
+               file-name found-file)))))
+
+(defun ada-find-other-file ()
+  "Move to the corresponding declaration in another file.
+
+- If region is active, assume it contains a package name;
+  position point on that package declaration.
+
+- If point is in the start line of a non-nested child package or
+  subprogram declaration, position point on the corresponding
+  parent package specification.
+
+- If point is in a context clause line, position point on the
+  first package declaration that is mentioned.
+
+- If point is in a separate body, position point on the
+  corresponding specification.
+
+- If point is in a subprogram body or specification, position point
+  on the corresponding specification or body."
+
+  ;; ff-get-file, ff-find-other file first process
+  ;; ff-special-constructs, then run the following hooks:
+  ;;
+  ;; ff-pre-load-hook      set to ada-which-function
+  ;; ff-file-created-hook  set to ada-ff-create-body
+  ;; ff-post-load-hook     set to ada-set-point-accordingly,
+  ;;                       or to a compiler-specific function that
+  ;;                       uses compiler-generated cross reference
+  ;;                       information
+
+  (interactive)
+  (ada-check-current-project (buffer-file-name))
+
+  ;; clear ff-function-name, so either ff-special-constructs or
+  ;; ada-which-function will set it.
+  (setq ff-function-name nil)
+
+  (cond
+   (mark-active
+    (setq ff-function-name (buffer-substring-no-properties (point) (mark)))
+    (ff-get-file
+     compilation-search-path
+     (ada-file-name-from-ada-name ff-function-name)
+     ada-spec-suffixes
+     nil);; other-window
+    (deactivate-mark))
+
+   ((and (not (ada-on-context-clause))
+        (ada-goto-subunit-name))
+    (ada-goto-declaration))
+
+   (t
+    (ff-find-other-file)))
+  )
+
+(defun ada-find-file (filename)
+  ;; we assume compliation-search-path is set, either by an
+  ;; ada-mode project, or by some other means.
+  (interactive (list (completing-read "File: "
+                                     (apply-partially
+                                      'locate-file-completion-table
+                                      compilation-search-path nil))))
+  (find-file (locate-file filename compilation-search-path))
+  )
+
+(defvar ada-operator-re
+  
"\\+\\|-\\|/\\|\\*\\*\\|\\*\\|=\\|&\\|\\_<\\(abs\\|mod\\|rem\\|and\\|not\\|or\\|xor\\)\\_>\\|<=\\|<\\|>=\\|>"
+  "Regexp matching Ada operator_symbol.")
+
+(defun ada-identifier-at-point ()
+  "Return the identifier around point, move point to start of
+identifier.  May be an Ada identifier or operator."
+
+  (when (ada-in-comment-p)
+    (error "Inside comment"))
+
+  ;; Handle adjacent operator/identifer like:
+  ;; test/ada_mode-slices.adb
+  ;;   D1, D2 : Day := +Sun;
+
+  ;; Move to the beginning of the identifier or operator
+  (if (looking-at "[a-zA-Z0-9_]")
+      ;; In an identifier
+      (skip-chars-backward "a-zA-Z0-9_")
+    ;; In an operator
+    (skip-chars-backward "+\\-\\*/&<>="))
+
+  ;; Just in front of, or inside, a string => we could have an
+  ;; operator function declaration.
+  (cond
+   ((ada-in-string-p)
+    (cond
+
+     ((and (= (char-before) ?\")
+          (progn
+            (forward-char -1)
+            (looking-at (concat "\"\\(" ada-operator-re "\\)\""))))
+      (concat "\"" (match-string-no-properties 1) "\""))
+
+     (t
+      (error "Inside string or character constant"))
+     ))
+
+   ((and (= (char-after) ?\")
+        (looking-at (concat "\"\\(" ada-operator-re "\\)\"")))
+    (concat "\"" (match-string-no-properties 1) "\""))
+
+   ((looking-at ada-operator-re)
+    ;; Return quoted operator, as this is what the back end expects.
+    (concat "\"" (match-string-no-properties 0) "\""))
+
+   ((looking-at "[a-zA-Z0-9_]+")
+    (match-string-no-properties 0))
+
+   (t
+    (error "No identifier around"))
+   ))
+
+;; IMPROVEME (for emacs >= 25): use find-tag-marker-ring, ring-insert, 
pop-tag-mark (see xref.el)
+(defvar ada-goto-pos-ring '()
+  "List of positions selected by navigation functions. Used
+to go back to these positions.")
+
+(defconst ada-goto-pos-ring-max 16
+  "Number of positions kept in the list `ada-goto-pos-ring'.")
+
+(defun ada-goto-push-pos ()
+  "Push current filename, position on `ada-goto-pos-ring'. See 
`ada-goto-previous-pos'."
+  (setq ada-goto-pos-ring (cons (list (point) (buffer-file-name)) 
ada-goto-pos-ring))
+  (if (> (length ada-goto-pos-ring) ada-goto-pos-ring-max)
+      (setcdr (nthcdr (1- ada-goto-pos-ring-max) ada-goto-pos-ring) nil)))
+
+(defun ada-goto-previous-pos ()
+  "Go to the first position in `ada-goto-pos-ring', pop `ada-goto-pos-ring'."
+  (interactive)
+  (when ada-goto-pos-ring
+    (let ((pos (pop ada-goto-pos-ring)))
+      (find-file (cadr pos))
+      (goto-char (car pos)))))
+
+(defun ada-goto-source (file line column)
+  "Find and select FILE, at LINE and COLUMN.
+FILE may be absolute, or on `compilation-search-path'.
+LINE, COLUMN are Emacs origin."
+  (let ((file-1
+        (if (file-name-absolute-p file) file
+          (ff-get-file-name compilation-search-path file))))
+    (if file-1
+       (setq file file-1)
+      (error "File %s not found; installed library, or set project?" file))
+    )
+
+  (ada-goto-push-pos)
+
+  (let ((buffer (get-file-buffer file)))
+    (cond
+     ((bufferp buffer)
+      ;; use pop-to-buffer, so package other-frame-window works.
+      (pop-to-buffer buffer (list #'display-buffer-same-window)))
+
+     ((file-exists-p file)
+      (find-file file))
+
+     (t
+      (error "'%s' not found" file))))
+
+  ;; move the cursor to the correct position
+  (push-mark nil t)
+  (goto-char (point-min))
+  (forward-line (1- line))
+  (forward-char column)
+  )
+
+(defvar ada-xref-refresh-function nil
+  ;; determined by xref_tool, set by *-select-prj-xref
+  "Function that refreshes cross reference information cache.")
+
+(defun ada-xref-refresh (delete-files)
+  "Refresh cross reference information cache, if any.
+With non-nil prefix arg, delete cross reference files, which may
+be needed when a compiler is upgraded, or some configuration is
+changed."
+  (interactive "P")
+
+  (when (null ada-xref-refresh-function)
+    (error "no cross reference information available"))
+
+  (funcall ada-xref-refresh-function delete-files)
+  )
+
+(defvar ada-xref-other-function nil
+  ;; determined by xref_tool, set by *-select-prj-xref
+  "Function that returns cross reference information.
+Function is called with four arguments:
+- an Ada identifier or operator_symbol
+- filename containing the identifier (full path)
+- line number containing the identifier
+- Emacs column of the start of the identifier
+Point is on the start of the identifier.
+Returns a list (FILE LINE COLUMN) giving the corresponding location.
+FILE may be absolute, or on `compilation-search-path'.  If point is
+at the specification, the corresponding location is the body, and vice
+versa.")
+
+(defun ada-goto-declaration ()
+  "Move to the declaration or body of the identifier around point.
+If at the declaration, go to the body, and vice versa."
+  (interactive)
+  (ada-check-current-project (buffer-file-name))
+
+  (when (null ada-xref-other-function)
+    (error "no cross reference information available"))
+
+  (let ((target
+        (funcall ada-xref-other-function
+                 (ada-identifier-at-point)
+                 (buffer-file-name)
+                 (line-number-at-pos)
+                 (current-column)
+                 )))
+
+    (ada-goto-source (nth 0 target)
+                    (nth 1 target)
+                    (nth 2 target))
+    ))
+
+(defvar ada-xref-parent-function nil
+  ;; determined by xref_tool, set by *-select-prj-xref
+  "Function that returns cross reference information.
+Function is called with four arguments:
+- an Ada identifier or operator_symbol
+- filename containing the identifier
+- line number containing the identifier
+- Emacs column of the start of the identifier
+Displays a buffer in compilation-mode giving locations of the parent type 
declarations.")
+
+(defun ada-show-declaration-parents ()
+  "Display the locations of the parent type declarations of the type 
identifier around point."
+  (interactive)
+  (ada-check-current-project (buffer-file-name))
+
+  (when (null ada-xref-parent-function)
+    (error "no cross reference information available"))
+
+  (funcall ada-xref-parent-function
+          (ada-identifier-at-point)
+          (file-name-nondirectory (buffer-file-name))
+          (line-number-at-pos)
+          (current-column))
+  )
+
+(defvar ada-xref-all-function nil
+  ;; determined by xref_tool, set by *-select-prj-xref
+  "Function that displays cross reference information.
+Called with four arguments:
+- an Ada identifier or operator_symbol
+- filename containing the identifier
+- line number containing the identifier
+- Emacs column of the start of the identifier
+- local-only; if t, show references in current file only
+- append; if t, keep previous output in result buffer
+Displays a buffer in compilation-mode giving locations where the
+identifier is declared or referenced.")
+
+(defun ada-show-references (&optional append)
+  "Show all references of identifier at point.
+With prefix, keep previous references in output buffer."
+  (interactive "P")
+  (ada-check-current-project (buffer-file-name))
+
+  (when (null ada-xref-all-function)
+    (error "no cross reference information available"))
+
+  (funcall ada-xref-all-function
+          (ada-identifier-at-point)
+          (file-name-nondirectory (buffer-file-name))
+          (line-number-at-pos)
+          (current-column)
+          nil ;; local-only
+          append)
+  )
+
+(defun ada-show-local-references (&optional append)
+  "Show all references of identifier at point.
+With prefix, keep previous references in output buffer."
+  (interactive "P")
+  (ada-check-current-project (buffer-file-name))
+
+  (when (null ada-xref-all-function)
+    (error "no cross reference information available"))
+
+  (funcall ada-xref-all-function
+          (ada-identifier-at-point)
+          (file-name-nondirectory (buffer-file-name))
+          (line-number-at-pos)
+          (current-column)
+          t ;; local-only
+          append)
+  )
+
+(defvar ada-xref-overriding-function nil
+  ;; determined by ada-xref-tool, set by *-select-prj
+  "Function that displays cross reference information for overriding 
subprograms.
+Called with four arguments:
+- an Ada identifier or operator_symbol
+- filename containing the identifier
+- line number containing the identifier
+- Emacs column of the start of the identifier
+Displays a buffer in compilation-mode giving locations of the overriding 
declarations.")
+
+(defun ada-show-overriding ()
+  "Show all overridings of identifier at point."
+  (interactive)
+  (ada-check-current-project (buffer-file-name))
+
+  (when (null ada-xref-overriding-function)
+    (error "no cross reference information available"))
+
+  (funcall ada-xref-overriding-function
+          (ada-identifier-at-point)
+          (file-name-nondirectory (buffer-file-name))
+          (line-number-at-pos)
+          (current-column))
+  )
+
+(defvar ada-xref-overridden-function nil
+  ;; determined by ada-xref-tool, set by *-select-prj
+  "Function that displays cross reference information for overridden 
subprogram.
+Called with four arguments:
+- an Ada identifier or operator_symbol
+- filename containing the identifier
+- line number containing the identifier
+- Emacs column of the start of the identifier
+Returns a list (FILE LINE COLUMN) giving the corresponding location.
+FILE may be absolute, or on `compilation-search-path'.")
+
+(defun ada-show-overridden ()
+  "Show the overridden declaration of identifier at point."
+  (interactive)
+  (ada-check-current-project (buffer-file-name))
+
+  (when (null ada-xref-overridden-function)
+    (error "'show overridden' not supported, or no cross reference information 
available"))
+
+  (let ((target
+        (funcall ada-xref-overridden-function
+                 (ada-identifier-at-point)
+                 (file-name-nondirectory (buffer-file-name))
+                 (line-number-at-pos)
+                 (current-column))))
+
+    (ada-goto-source (nth 0 target)
+                    (nth 1 target)
+                    (nth 2 target))
+  ))
+
+;; This is autoloaded because it may be used in ~/.emacs
+;;;###autoload
+(defun ada-add-extensions (spec body)
+  "Define SPEC and BODY as being valid extensions for Ada files.
+SPEC and BODY are two regular expressions that must match against
+the file name."
+  (let* ((reg (concat (regexp-quote body) "$"))
+        (tmp (assoc reg ada-other-file-alist)))
+    (if tmp
+       (setcdr tmp (list (cons spec (cadr tmp))))
+      (add-to-list 'ada-other-file-alist (list reg (list spec)))))
+
+  (let* ((reg (concat (regexp-quote spec) "$"))
+        (tmp (assoc reg ada-other-file-alist)))
+    (if tmp
+       (setcdr tmp (list (cons body (cadr tmp))))
+      (add-to-list 'ada-other-file-alist (list reg (list body)))))
+
+  (add-to-list 'auto-mode-alist
+              (cons (concat (regexp-quote spec) "\\'") 'ada-mode))
+  (add-to-list 'auto-mode-alist
+              (cons (concat (regexp-quote body) "\\'") 'ada-mode))
+
+  (add-to-list 'ada-spec-suffixes spec)
+  (add-to-list 'ada-body-suffixes body)
+
+  (when (fboundp 'speedbar-add-supported-extension)
+    (speedbar-add-supported-extension spec)
+    (speedbar-add-supported-extension body))
+  )
+
+(defun ada-show-secondary-error ()
+  "Show the next secondary file reference in the compilation buffer.
+A secondary file reference is defined by text having text
+property `ada-secondary-error'.  These can be set by
+compiler-specific compilation filters."
+  (interactive)
+
+  ;; preserving the current window works only if the frame
+  ;; doesn't change, at least on Windows.
+  (let ((start-buffer (current-buffer))
+       pos item file)
+    ;; We use `pop-to-buffer', not `set-buffer', so `forward-line'
+    ;; works. But that might eat an `other-frame-window-mode' prefix,
+    ;; which the user means to apply to ’ada-goto-source’ below;
+    ;; disable that temporarily.
+    (let ((display-buffer-overriding-action nil))
+      (pop-to-buffer compilation-last-buffer nil t)
+      (setq pos (next-single-property-change (point) 'ada-secondary-error))
+      (when pos
+       (setq item (get-text-property pos 'ada-secondary-error))
+       ;; file-relative-name handles absolute Windows paths from
+       ;; g++. Do this in compilation buffer to get correct
+       ;; default-directory.
+       (setq file (file-relative-name (nth 0 item)))
+
+       ;; Set point in compilation buffer past this secondary error, so
+       ;; user can easily go to the next one.
+       (goto-char pos)
+       (forward-line 1))
+
+      (pop-to-buffer start-buffer nil t);; for windowing history
+      )
+    (when item
+      (ada-goto-source
+       file
+       (nth 1 item); line
+       (nth 2 item); column
+       ))
+    ))
+
+(defvar ada-goto-declaration-start nil
+  ;; Supplied by indentation engine.
+  ;;
+  "For `beginning-of-defun-function'. Function to move point to
+start of the generic, package, protected, subprogram, or task
+declaration point is currently in or just after.  Called with no
+parameters.")
+
+(defun ada-goto-declaration-start ()
+  "Call `ada-goto-declaration-start'."
+  (interactive)
+  (when ada-goto-declaration-start
+    (funcall ada-goto-declaration-start)))
+
+(defvar ada-goto-declaration-end nil
+  ;; supplied by indentation engine
+  "For `end-of-defun-function'. Function to move point to end of
+current declaration.")
+
+(defun ada-goto-declaration-end ()
+  "See `ada-goto-declaration-end' variable."
+  (interactive)
+  (when ada-goto-declaration-end
+    (funcall ada-goto-declaration-end)))
+
+(defvar ada-goto-declarative-region-start nil
+  ;; Supplied by indentation engine
+  "Function to move point to start of the declarative region of
+the subprogram, package, task, or declare block point
+is currently in.  Called with no parameters.")
+
+(defun ada-goto-declarative-region-start ()
+  "Call `ada-goto-declarative-region-start'."
+  (interactive)
+  (when ada-goto-declarative-region-start
+    (funcall ada-goto-declarative-region-start)))
+
+(defvar ada-goto-end nil
+  ;; Supplied by indentation engine
+  "Function to move point to end of the declaration or statement point is in 
or before.
+Called with no parameters.")
+
+(defun ada-goto-end ()
+  "Call `ada-goto-end'."
+  (when ada-goto-end
+    (funcall ada-goto-end)))
+
+;;;; code creation
+
+(defvar ada-make-subprogram-body nil
+  ;; Supplied by indentation engine
+  "Function to convert subprogram specification after point into a subprogram 
body stub.
+Called with no args, point at declaration start. Leave point in
+subprogram body, for user to add code.")
+
+(defun ada-make-subprogram-body ()
+  "If point is in or after a subprogram specification, convert it
+into a subprogram body stub, by calling `ada-make-subprogram-body'."
+  (interactive)
+  (wisi-goto-statement-start)
+  (if ada-make-subprogram-body
+      (funcall ada-make-subprogram-body)
+    (error "`ada-make-subprogram-body' not set")))
+
+(defvar ada-make-package-body nil
+  ;; Supplied by xref tool
+  "Function to create a package body from a package spec.
+Called with one argument; the absolute path to the body
+file. Current buffer is the package spec.  Should create the
+package body file, containing skeleton code that will compile.")
+
+(defun ada-make-package-body (body-file-name)
+  ;; no error if not set; let ada-skel do its thing.
+  (when ada-make-package-body
+      (funcall ada-make-package-body body-file-name)))
+
+(defun ada-ff-create-body ()
+  ;; no error if not set; let ada-skel do its thing.
+  (when ada-make-package-body
+    ;; ff-find-other-file calls us with point in an empty buffer for
+    ;; the body file; ada-make-package-body expects to be in the
+    ;; spec. So go back to the spec, and delete the body buffer so it
+    ;; does not get written to disk.
+    (let ((body-buffer (current-buffer))
+         (body-file-name (buffer-file-name)))
+
+      (set-buffer-modified-p nil);; may have a skeleton; allow silent delete
+
+      (ff-find-the-other-file);; back to spec
+
+      (kill-buffer body-buffer)
+
+      (ada-make-package-body body-file-name)
+
+      ;; back to the new body file, read in from the disk.
+      (ff-find-the-other-file)
+      (revert-buffer t t))
+    ))
+
+;;;; fill-comment
+
+(defvar wisi-inhibit-parse nil);; in wisi.el; so far that's the only parser we 
use.
+
+(defun ada-fill-comment-paragraph (&optional justify postfix)
+  "Fill the current comment paragraph.
+If JUSTIFY is non-nil, each line is justified as well.
+If POSTFIX and JUSTIFY are non-nil, `ada-fill-comment-postfix' is appended
+to each line filled and justified.
+The paragraph is indented on the first line."
+  (interactive "P")
+  (if (not (or (ada-in-comment-p)
+               (looking-at "[ \t]*--")))
+      (error "Not inside comment"))
+
+  ;; fill-region-as-paragraph leaves comment text exposed (without
+  ;; comment prefix) when inserting a newline; don't trigger a parse
+  ;; because of that (in particular, jit-lock requires a parse; other
+  ;; hooks may as well).
+  (let* ((wisi-inhibit-parse t)
+        indent from to
+        (opos (point-marker))
+        ;; we bind `fill-prefix' here rather than in ada-mode because
+        ;; setting it in ada-mode causes indent-region to use it for
+        ;; all indentation.
+        (fill-prefix ada-fill-comment-prefix)
+        (fill-column (if ada-fill-comment-adaptive
+                         (save-excursion
+                           (back-to-indentation)
+                           (+ (current-column) fill-column))
+                       (current-fill-column))))
+
+    ;;  Find end of comment paragraph
+    (back-to-indentation)
+    (while (and (not (eobp)) (looking-at ".*--[ \t]*[^ \t\n]"))
+      (forward-line 1)
+
+      ;;  If we were at the last line in the buffer, create a dummy empty
+      ;;  line at the end of the buffer.
+      (if (eobp)
+         (insert "\n")
+       (back-to-indentation)))
+    (beginning-of-line)
+    (setq to (point-marker))
+    (goto-char opos)
+
+    ;;  Find beginning of paragraph
+    (back-to-indentation)
+    (while (and (not (bobp)) (looking-at ".*--[ \t]*[^ \t\n]"))
+      (forward-line -1)
+      (back-to-indentation))
+
+    (unless (bobp)
+      (forward-line 1))
+    (beginning-of-line)
+    (setq from (point-marker))
+
+    ;;  Calculate the indentation we will need for the paragraph
+    (back-to-indentation)
+    (setq indent (current-column))
+    ;;  unindent the first line of the paragraph
+    (delete-region from (point))
+
+    ;;  Remove the old postfixes
+    (goto-char from)
+    (while (re-search-forward (concat "\\(" ada-fill-comment-postfix "\\)" 
"\n") to t)
+      (delete-region (match-beginning 1) (match-end 1)))
+
+    (goto-char (1- to))
+    (setq to (point-marker))
+
+    ;;  Indent and justify the paragraph
+    (set-left-margin from to indent)
+    (if postfix
+       (setq fill-column (- fill-column (length ada-fill-comment-postfix))))
+
+    (fill-region-as-paragraph from to justify)
+
+    ;;  Add the postfixes if required
+    (if postfix
+       (save-restriction
+         (goto-char from)
+         (narrow-to-region from to)
+         (while (not (eobp))
+           (end-of-line)
+           (insert-char ?  (- fill-column (current-column)))
+           (insert ada-fill-comment-postfix)
+           (forward-line))
+         ))
+
+    (goto-char opos)))
+
+;;;; support for font-lock.el
+
+(defconst ada-83-keywords
+  '("abort" "abs" "accept" "access" "all" "and" "array" "at" "begin"
+    "body" "case" "constant" "declare" "delay" "delta" "digits" "do"
+    "else" "elsif" "end" "entry" "exception" "exit" "for" "function"
+    "generic" "goto" "if" "in" "is" "limited" "loop" "mod" "new"
+    "not" "null" "of" "or" "others" "out" "package" "pragma" "private"
+    "procedure" "raise" "range" "record" "rem" "renames" "return"
+    "reverse" "select" "separate" "subtype" "task" "terminate" "then"
+    "type" "use" "when" "while" "with" "xor")
+  "List of Ada 83 keywords.")
+
+(defconst ada-95-keywords
+  '("abstract" "aliased" "protected" "requeue" "tagged" "until")
+  "List of keywords new in Ada 95.")
+
+(defconst ada-2005-keywords
+  '("interface" "overriding" "synchronized")
+  "List of keywords new in Ada 2005.")
+
+(defconst ada-2012-keywords
+  '("some")
+  "List of keywords new in Ada 2012.")
+
+(defun ada-font-lock-keywords ()
+  "Return Ada mode value for `font-lock-keywords', depending on 
`ada-language-version'."
+   ;; Grammar actions set `font-lock-face' property for all
+   ;; non-keyword tokens that need it.
+  (list
+   (list (concat "\\_<" (regexp-opt ada-keywords t) "\\_>") '(0 
font-lock-keyword-face))
+   ))
+
+(defvar which-func-functions nil) ;; which-func.el
+(defvar which-func-non-auto-modes nil) ;; ""
+
+;;;; ada-mode
+
+;; ada-mode does not derive from prog-mode, because we need to call
+;; ada-mode-post-local-vars, and prog-mode does not provide a way to
+;; do that (at least before emacs 26).
+;;
+;; autoload required by automatic mode setting
+;;;###autoload
+(defun ada-mode ()
+  "The major mode for editing Ada code."
+  ;; the other ada-*.el files add to ada-mode-hook for their setup
+
+  (interactive)
+  (kill-all-local-variables)
+  (setq major-mode 'ada-mode)
+  (setq mode-name "Ada")
+  (use-local-map ada-mode-map)
+
+  (set-syntax-table ada-mode-syntax-table)
+  (define-abbrev-table 'ada-mode-abbrev-table ())
+  (setq local-abbrev-table ada-mode-abbrev-table)
+
+  (set (make-local-variable 'syntax-propertize-function) 
'ada-syntax-propertize)
+  (syntax-ppss-flush-cache (point-min));; reparse with new function
+
+  (when (boundp 'syntax-begin-function)
+    ;; default ‘beginning-of-defun’ in emacs-24.2; we need it nil
+    ;; obsolete in 25.1
+    (set (make-local-variable 'syntax-begin-function) nil))
+  (set (make-local-variable 'parse-sexp-ignore-comments) t)
+  (set (make-local-variable 'parse-sexp-lookup-properties) t)
+  (set 'case-fold-search t); Ada is case insensitive; the syntax parsing 
requires this setting
+  (set (make-local-variable 'comment-start) "--")
+  (set (make-local-variable 'comment-end) "")
+  (set (make-local-variable 'comment-start-skip) "---*[ \t]*")
+  (set (make-local-variable 'comment-multi-line) nil)
+
+  ;; we _don't_ set `fill-prefix' here because that causes
+  ;; indent-region to use it for all indentation. See
+  ;; ada-fill-comment-paragraph.
+
+  ;; AdaCore standard style (enforced by -gnaty) requires two spaces
+  ;; after '--' in comments; this makes it easier to distinguish
+  ;; special comments that have something else after '--'
+  (set (make-local-variable 'comment-padding) "  ")
+
+  (set (make-local-variable 'require-final-newline) t)
+
+  (setq font-lock-defaults
+       '(ada-font-lock-keywords ;; keywords
+         nil ;; keywords only; comment, string faces not set by wisi parser
+         t ;; case-fold
+         ((?\_ . "w")))); treat underscore as a word component
+
+  (set (make-local-variable 'ff-other-file-alist)
+       'ada-other-file-alist)
+  (setq ff-post-load-hook    #'ada-set-point-accordingly
+       ff-file-created-hook #'ada-ff-create-body)
+  (add-hook 'ff-pre-load-hook #'ada-goto-push-pos)
+  (add-hook 'ff-pre-load-hook #'ada-which-function)
+  (setq ff-search-directories 'compilation-search-path)
+  (when (null (car compilation-search-path))
+    ;; find-file doesn't handle nil in search path
+    (setq compilation-search-path (list (if buffer-file-name
+                                            (file-name-directory 
(buffer-file-name))
+                                          "."))))
+  (ada-set-ff-special-constructs)
+
+  (set (make-local-variable 'add-log-current-defun-function)
+       #'ada-add-log-current-function)
+
+  ;; We set this even if which-func.el is not loaded, because if it is
+  ;; loaded later, it will use the add-log which-function, which
+  ;; forces a navigate parse.
+  (add-hook 'which-func-functions #'ada-which-function nil t)
+  (add-to-list 'which-func-non-auto-modes 'ada-mode)
+
+  ;;  Support for align
+  (add-to-list 'align-dq-string-modes 'ada-mode)
+  (add-to-list 'align-open-comment-modes 'ada-mode)
+  (set (make-local-variable 'align-region-separate) ada-align-region-separate)
+  (set (make-local-variable 'align-indent-before-aligning) t)
+
+  ;; Exclude comments alone on line from alignment.
+  (add-to-list 'align-exclude-rules-list
+              '(ada-solo-comment
+                (regexp  . "^\\(\\s-*\\)--")
+                (modes   . '(ada-mode))))
+  (add-to-list 'align-exclude-rules-list
+              '(ada-solo-use
+                (regexp  . "^\\(\\s-*\\)\\_<use\\_>")
+                (modes   . '(ada-mode))))
+
+  (setq align-mode-rules-list ada-align-rules)
+
+  (easy-menu-add ada-mode-menu ada-mode-map)
+
+  (setq ada-case-strict (ada-prj-get 'case_strict))
+
+  (run-mode-hooks 'ada-mode-hook)
+
+  (when (< emacs-major-version 25) (syntax-propertize (point-max)))
+
+  (if (<= emacs-major-version 25)
+      ;; run-mode-hooks does _not_ call hack-local-variables
+      (add-hook 'hack-local-variables-hook 'ada-mode-post-local-vars nil t)
+    ;; >= 26; run-mode-hooks _does_ call hack-local-variables, after the hook 
functions
+    (ada-mode-post-local-vars))
+  )
+
+(defun ada-mode-post-local-vars ()
+  ;; These are run after ada-mode-hook and file local variables
+  ;; because users or *.ad? files might set the relevant
+  ;; variable inside the hook or file local variables.
+
+  ;; This means to fully set ada-mode interactively, user must
+  ;; do M-x ada-mode M-; (hack-local-variables)
+
+  (setq hack-local-variables-hook (delq 'ada-mode-post-local-vars 
hack-local-variables-hook))
+
+  ;; fill-region-as-paragraph in ada-fill-comment-paragraph does not
+  ;; call syntax-propertize, so set comment syntax on
+  ;; ada-fill-comment-prefix. In post-local because user may want to
+  ;; set it per-file. IMPROVEME: only in emacs < 25?
+  (put-text-property 0 2 'syntax-table '(11 . nil) ada-fill-comment-prefix)
+
+  (cl-case ada-language-version
+   (ada83
+    (setq ada-keywords ada-83-keywords))
+
+   (ada95
+    (setq ada-keywords
+         (append ada-83-keywords
+                 ada-95-keywords)))
+
+   (ada2005
+    (setq ada-keywords
+         (append ada-83-keywords
+                 ada-95-keywords
+                 ada-2005-keywords)))
+   (ada2012
+    (setq ada-keywords
+         (append ada-83-keywords
+                 ada-95-keywords
+                 ada-2005-keywords
+                 ada-2012-keywords))))
+
+  (when global-font-lock-mode
+    ;; This calls ada-font-lock-keywords, which depends on
+    ;; ada-keywords
+    (font-lock-refresh-defaults))
+
+  (when ada-goto-declaration-start
+    (set (make-local-variable 'beginning-of-defun-function) 
ada-goto-declaration-start))
+
+  (when ada-goto-declaration-end
+    (set (make-local-variable 'end-of-defun-function) 
ada-goto-declaration-end))
+  )
+
+(put 'ada-mode 'custom-mode-group 'ada)
+
+(defvar ada-parser 'process
+  "Indicate parser and lexer to use for Ada buffers:
+
+process : external process lexer and parser specified
+  by ‘ada-process-parse-exec ’.
+"
+  ;; As of ada-mode version 6.2, we no longer support the elisp
+  ;; parser. We may add a module implementation at some point.
+  )
+
+(defvar ada-fallback 'simple
+  "Indicate fallback indentation engine for Ada buffers.
+
+simple: indent to previous line.")
+
+(provide 'ada-mode)
+
+;;;;; Global initializations
+
+(add-hook 'menu-bar-update-hook #'ada-project-menu-install)
+
+(require 'ada-wisi)
+
+(cl-case ada-xref-tool
+  (gnat (require 'ada-gnat-xref))
+  (gpr_query (require 'gpr-query))
+  (t
+   (if (locate-file "gpr_query" exec-path '("" ".exe"))
+       (progn
+         (require 'gpr-query)
+         (setq ada-xref-tool 'gpr_query))
+     (require 'ada-gnat-xref)
+     (setq ada-xref-tool 'gnat)))
+  )
+
+(unless (featurep 'ada-compiler)
+  (require 'ada-gnat-compile))
+
+(unless (featurep 'ada-skeletons)
+  (require 'ada-skel))
+
+(when (featurep 'imenu)
+  (require 'ada-imenu))
+
+;;; ada-mode.el ends here
diff --git a/packages/ada-mode/ada-mode.info b/packages/ada-mode/ada-mode.info
index 35b441f..df583fa 100644
--- a/packages/ada-mode/ada-mode.info
+++ b/packages/ada-mode/ada-mode.info
@@ -14,7 +14,7 @@ Copyright (C) 1999 - 2019 Free Software Foundation, Inc.
      (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
      modify this GNU manual.  Buying copies from the FSF supports it in
      developing GNU and promoting software freedom."
-INFO-DIR-SECTION Emacs editing modes
+INFO-DIR-SECTION Emacs
 START-INFO-DIR-ENTRY
 * Ada mode: (ada-mode).         Emacs mode for editing and navigating Ada code.
 END-INFO-DIR-ENTRY
@@ -22,21 +22,10 @@ END-INFO-DIR-ENTRY
 
 File: ada-mode.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
 
-Ada Mode Version 6.1.1
+Top
+***
 
-   Copyright (C) 1999 - 2019 Free Software Foundation, Inc.
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, with the Front-Cover texts
-     being "A GNU Manual", and with the Back-Cover Texts as in (a)
-     below.  A copy of the license is included in the section entitled
-     "GNU Free Documentation License".
-
-     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
-     modify this GNU manual.  Buying copies from the FSF supports it in
-     developing GNU and promoting software freedom."
+Ada Mode Version 6.2.0
 
 * Menu:
 
@@ -106,7 +95,6 @@ Developer overview
 
 * Directory structure::
 * Package organization::
-* OpenToken::
 * ELPA::
 * Savannah::
 * ada-france::
@@ -1861,7 +1849,6 @@ here's an overview.
 
 * Directory structure::
 * Package organization::
-* OpenToken::
 * ELPA::
 * Savannah::
 * ada-france::
@@ -1884,37 +1871,24 @@ File: ada-mode.info,  Node: Directory structure,  Next: 
Package organization,  P
           by the Makefile target 'byte-compile', or by the Emacs package
           installer.
 
-          Compiling the parse tables ('*-wy.el') speeds up loading them
-          significantly.  Compiling other files speeds up parsing, but
-          not noticeably.
-
-          One reason to byte-compile files is to find errors; the byte
-          compiler reports undefined variables, wrong argument counts,
-          etc.
-
-     '*-wy.el'
-          Parse tables, generated from the corresponding grammar '*.wy'
-          by the OpenToken tool 'wisi-generate.exe'.  These are in the
-          tarball distribution and the monotone repository so users and
-          Elisp developers don't have to install OpenToken.
+     '*.ad?'
+          Ada code for the external process parser, some generated by
+          the WisiToken tool 'wisitoken-bnf-generate.exe'.  The
+          generated code is in the tarball distribution and the monotone
+          repository so users and Elisp developers don't have to install
+          WisiToken.
 
-     '*-wy.output'
-          Diagnostic output from 'wisi-generate.exe', useful for tracing
-          parses while debugging a grammar issue.  Not in the tarball
-          distribution or the monotone repository.
+     '*.parse_table'
+          Diagnostic output from 'wisitoken-bnf-generate.exe', useful
+          for tracing parses while debugging a grammar issue.  Not in
+          the tarball distribution or the monotone repository.
 
      '*.wy'
           Grammar files, specifying the language to be parsed.  The
           syntax for these grammar files is similar to that for bison
-          and wisent, but not the same; see the OpenToken documentation
+          and wisent, but not the same; see the WisiToken documentation
           for more info.
 
-          The wisi parser (in 'wisi-parse.el') is a generalized LALR
-          parser, so it tolerates some conflicts and ambiguities.  This
-          makes the grammars easier to write, and in particular makes it
-          possible to let the Ada grammar closely match Annex P of the
-          Ada Language Reference Manual (the syntax summary).
-
      '*.texi'
           Texinfo source for the user guides.
 
@@ -1925,27 +1899,21 @@ File: ada-mode.info,  Node: Directory structure,  Next: 
Package organization,  P
           Generated user guide in Emacs info format.
 
 'build'
-     Makefile for building the user guides, publishing to the web page
-     or Gnu ELPA, and building gpr-query.  The main targets are "all"
-     which builds the ada-mode ELPA packages, and "install" which builds
-     and installs gpr-query.
-
-     Test driver files used by build/Makefile and build/wisi/Makefile.
+     Makefile for building the external process executable, gpr-query,
+     and the user guides; for running tests; and for publishing to the
+     web page or Gnu ELPA. The main targets are:
 
-'build/wisi'
-     Makefile for building and testing with the wisi-based parser.
-     Separate from 'build', because there used to be a SMIE-based
-     parser, and there might be another parser someday.
+     'elisp'
+          Builds ada-mode in place, runs all tests.
 
-     The emacs used to byte-compile and run tests is given by the 'make'
-     variable EMACS_EXE, which defaults to 'emacs'; it can be overridden
-     on the make command line or by an environment variable.
+     'update-elisp'
+          Builds ada-mode in place.
 
-     There are two top-level targets in this Makfile; "all" and "one".
-     "all" builds everthing and runs all the tests.  "one" runs one
-     test, which makes it easier to work on one test that is failing.
+     'install'
+          Installs executables in the GNAT executable directory.
 
-     All the other targets are used by the top-level targets.
+     'pub'
+          Builds the ELPA packages.
 
 'test'
      All tests for Ada mode, gpr mode, parser.
@@ -1953,7 +1921,8 @@ File: ada-mode.info,  Node: Directory structure,  Next: 
Package organization,  P
      Each test is run in a separate invocation of Emacs, so it is
      completely independent of all other tests.
 
-     The tests are driven by the elisp code in 'build/*.el'.
+     The tests are driven by the elisp code in
+     'wisi-run-indent-test.el'.
 
      In general, the Ada mode tests open the file, execute test actions,
      re-indent, and re-captialize the entire file.  The result is diffed
@@ -1964,7 +1933,7 @@ File: ada-mode.info,  Node: Directory structure,  Next: 
Package organization,  P
      This is used to test navigation features and other parser effects.
 
 'test/Example_*'
-     Starting files for examples in user guide.
+     Starting files for the examples in this user guide.
 
 'test/gpr'
      Tests for gpr mode.
@@ -1972,11 +1941,8 @@ File: ada-mode.info,  Node: Directory structure,  Next: 
Package organization,  P
 'test/subdir'
      More tests; allows testing path search features.
 
-'test/wisi'
-     Tests of the elisp wisi grammar compiler and parser.
-
 
-File: ada-mode.info,  Node: Package organization,  Next: OpenToken,  Prev: 
Directory structure,  Up: Developer overview
+File: ada-mode.info,  Node: Package organization,  Next: ELPA,  Prev: 
Directory structure,  Up: Developer overview
 
 14.2 Package organization
 =========================
@@ -2022,21 +1988,18 @@ Ada mode consists of all files with 'ada-' prefix in 
the file name.
      Implements the Ada mode cross reference functions for the GNAT
      compiler.
 
-'ada-grammar.*'
-     The Ada language grammar, and files generated from it by the
-     OpenToken tool 'wisi-generate.exe'.
+'ada.wy'
+     The Ada language grammar.
 
 'ada-indent-user-options.el'
      All user-settable options for the Ada indentation engine.
 
-'ada-mode-compat-23.4.el'
-     Defines functions used by Ada mode that are not in Emacs 23.4.
-
-     Emacs Ada mode is written for Emacs 24.3.  Emacs version 23.4 is
-     partially supported.  Earlier versions of Emacs are not supported.
+'ada-mode-compat.el'
+     Defines functions used by Ada mode that are not in older versions
+     of Emacs.
 
 'ada-mode.texi'
-     The Ada mode user guide source and compiled versions.
+     This Ada mode user guide source.
 
 'ada-skel.el'
      Skeletons for expansion of Ada syntax (*note Statement
@@ -2044,11 +2007,6 @@ Ada mode consists of all files with 'ada-' prefix in the 
file name.
      inspired by the lamented Else package (which was inspired by DEC
      LSE).
 
-'ada-wisi-opentoken.el'
-     Indentation functions useful when editing OpenToken code; an
-     example of extending the Ada mode indentation engine for special
-     circumstances.
-
 'ada-wisi.el'
      Implements the Ada mode indentation functions for the wisi
      indentation engine backend.
@@ -2094,46 +2052,12 @@ File: ada-mode.info,  Node: Wisi,  Prev: GNAT core,  
Up: Package organization
 14.2.4 Wisi
 -----------
 
-The "wisi" parser.  "wisi" used to be an acronym, but now it's just a
-name.
-
-'wisi.el'
-     Implements the lexer, the main parser driver, parser actions that
-     cache parser information in text properties, utilities for
-     indenting and navigating using the cached information, and general
-     setup.
-
-'wisi-compile.el'
-     Implements the parse table compiler.  'wisi-generate.exe' processes
-     the grammar source '*.wy' into an elisp source representation of a
-     parse table '*-wy.el'.  That is compiled into an internal structure
-     containing the state transitions and executable actions.  The
-     actions can be any elisp form; the intent is that they be calls to
-     the action functions provided by 'wisi.el'.
-
-'wisi-parse.el'
-     Implements the generalized LALR parser.
-
-
-File: ada-mode.info,  Node: OpenToken,  Next: ELPA,  Prev: Package 
organization,  Up: Developer overview
-
-14.3 OpenToken
-==============
-
-Ada mode uses the OpenToken tool 'wisi-generate.exe' to process the
-grammar sources into elisp parse tables.  See
-<http://stephe-leake.org/emacs/ada-mode/emacs-ada-mode.html> for current
-information about which version of OpenToken is required, and how to get
-it.
-
-   The Makefile variable 'WISI_OPENTOKEN' gives the path to the build
-directory for OpenToken; you probably need to override it with an
-external environment variable or on the 'make' command line.
+The "wisi" parser.  *Note Overview: (wisi)Overview.
 
 
-File: ada-mode.info,  Node: ELPA,  Prev: OpenToken,  Up: Developer overview
+File: ada-mode.info,  Node: ELPA,  Next: Savannah,  Prev: Package 
organization,  Up: Developer overview
 
-14.4 ELPA
+14.3 ELPA
 =========
 
 Ada mode is published via the Gnu ELPA archive.  To test a new version
@@ -2152,9 +2076,9 @@ Gnu ELPA via git:
 elpa workspace, and for building the elpa archive there.
 
 
-File: ada-mode.info,  Node: Savannah,  Prev: OpenToken,  Up: Developer overview
+File: ada-mode.info,  Node: Savannah,  Next: ada-france,  Prev: ELPA,  Up: 
Developer overview
 
-14.5 Savannah
+14.4 Savannah
 =============
 
 The ada-mode web page, mailing list, and tarball download are hosted on
@@ -2163,9 +2087,9 @@ savannah.non-gnu.org, project Emacs Ada mode
 admin page there for more information.
 
 
-File: ada-mode.info,  Node: ada-france,  Prev: OpenToken,  Up: Developer 
overview
+File: ada-mode.info,  Node: ada-france,  Prev: Savannah,  Up: Developer 
overview
 
-14.6 ada-france
+14.5 ada-france
 ===============
 
 The source code for ada-mode is maintained in a monotone repository in
@@ -2686,54 +2610,53 @@ Index
 
 
 Tag Table:
-Node: Top945
-Node: Overview3557
-Node: Why not LSP?4794
-Node: Installation5136
-Node: Ada Reference Manual6193
-Node: gpr_query6469
-Node: Building GNATCOLL 20198110
-Node: Building gpr_query8683
-Node: process parser9090
-Node: Customization9422
-Node: Slow response9922
-Node: Non-standard file names11810
-Node: Other compiler13651
-Node: Other cross-reference14230
-Node: Other customization14972
-Node: Compiling Executing18192
-Node: Compile commands18927
-Node: Compiling Examples21578
-Node: No project files22410
-Node: Set compiler options27776
-Node: Set source search path29738
-Node: Use GNAT project file32191
-Node: Use multiple GNAT project files34965
-Node: Use a Makefile37685
-Node: Compiler errors39000
-Node: Project files39817
-Node: Project file overview40844
-Node: Project file variables42388
-Node: Moving Through Ada Code47263
-Node: Identifier completion49962
-Node: Indentation50924
-Node: Statement skeletons55494
-Node: Aligning code57279
-Node: Automatic casing58224
-Node: Comment Handling60952
-Node: Key summary61471
-Node: Developer overview64108
-Node: Directory structure64476
-Node: Package organization68447
-Node: Ada mode68682
-Node: gpr mode70878
-Node: GNAT core71161
-Node: Wisi71995
-Node: OpenToken72895
-Node: ELPA73497
-Node: Savannah74107
-Node: ada-france74445
-Node: GNU Free Documentation License74685
-Node: Index99846
+Node: Top931
+Node: Overview2824
+Node: Why not LSP?4061
+Node: Installation4403
+Node: Ada Reference Manual5460
+Node: gpr_query5736
+Node: Building GNATCOLL 20197377
+Node: Building gpr_query7950
+Node: process parser8357
+Node: Customization8689
+Node: Slow response9189
+Node: Non-standard file names11077
+Node: Other compiler12918
+Node: Other cross-reference13497
+Node: Other customization14239
+Node: Compiling Executing17459
+Node: Compile commands18194
+Node: Compiling Examples20845
+Node: No project files21677
+Node: Set compiler options27043
+Node: Set source search path29005
+Node: Use GNAT project file31458
+Node: Use multiple GNAT project files34232
+Node: Use a Makefile36952
+Node: Compiler errors38267
+Node: Project files39084
+Node: Project file overview40111
+Node: Project file variables41655
+Node: Moving Through Ada Code46530
+Node: Identifier completion49229
+Node: Indentation50191
+Node: Statement skeletons54761
+Node: Aligning code56546
+Node: Automatic casing57491
+Node: Comment Handling60219
+Node: Key summary60738
+Node: Developer overview63375
+Node: Directory structure63729
+Node: Package organization66459
+Node: Ada mode66689
+Node: gpr mode68470
+Node: GNAT core68753
+Node: Wisi69587
+Node: ELPA69746
+Node: Savannah70384
+Node: ada-france70736
+Node: GNU Free Documentation License70975
+Node: Index96136
 
 End Tag Table
diff --git a/packages/ada-mode/ada-mode.texi b/packages/ada-mode/ada-mode.texi
index 9f20977..beaf7b1 100644
--- a/packages/ada-mode/ada-mode.texi
+++ b/packages/ada-mode/ada-mode.texi
@@ -1,5 +1,4 @@
 \input texinfo  @c -*-texinfo-*-
-@setfilename ../../info/ada-mode
 @settitle Ada Mode
 
 @copying
@@ -19,14 +18,14 @@ developing GNU and promoting software freedom.''
 @end quotation
 @end copying
 
-@dircategory Emacs editing modes
+@dircategory Emacs
 @direntry
 * Ada mode: (ada-mode).         Emacs mode for editing and navigating Ada code.
 @end direntry
 
 @titlepage
 @sp 10
-@title Ada Mode Version 6.1.1
+@title Ada Mode Version 6.2.0
 @page
 @vskip 0pt plus 1filll
 @insertcopying
@@ -34,12 +33,11 @@ developing GNU and promoting software freedom.''
 
 @contents
 
+@ifnottex
 @node Top, Overview, (dir), (dir)
+@top Top
 
-Ada Mode Version 6.1.1
-
-@ifnottex
-@insertcopying
+Ada Mode Version 6.2.0
 @end ifnottex
 
 @menu
@@ -110,7 +108,6 @@ Developer overview
 
 * Directory structure::
 * Package organization::
-* OpenToken::
 * ELPA::
 * Savannah::
 * ada-france::
@@ -1966,7 +1963,6 @@ sources, here's an overview.
 @menu
 * Directory structure::
 * Package organization::
-* OpenToken::
 * ELPA::
 * Savannah::
 * ada-france::
@@ -1987,34 +1983,21 @@ Elisp files; main code.
 Byte-compiled elisp files, not in the distribution. Generated by the
 Makefile target @code{byte-compile}, or by the Emacs package installer.
 
-Compiling the parse tables (@file{*-wy.el}) speeds up loading them
-significantly. Compiling other files speeds up parsing, but not
-noticeably.
-
-One reason to byte-compile files is to find errors; the byte compiler
-reports undefined variables, wrong argument counts, etc.
+@item *.ad?
+Ada code for the external process parser, some generated by the
+WisiToken tool @file{wisitoken-bnf-generate.exe}. The generated code
+is in the tarball distribution and the monotone repository so users
+and Elisp developers don't have to install WisiToken.
 
-@item *-wy.el
-Parse tables, generated from the corresponding grammar @file{*.wy} by
-the OpenToken tool @file{wisi-generate.exe}. These are in the tarball
-distribution and the monotone repository so users and Elisp developers
-don't have to install OpenToken.
-
-@item *-wy.output
-Diagnostic output from @file{wisi-generate.exe}, useful for tracing
+@item *.parse_table
+Diagnostic output from @file{wisitoken-bnf-generate.exe}, useful for tracing
 parses while debugging a grammar issue. Not in the tarball
 distribution or the monotone repository.
 
 @item *.wy
 Grammar files, specifying the language to be parsed. The syntax for
 these grammar files is similar to that for bison and wisent, but not
-the same; see the OpenToken documentation for more info.
-
-The wisi parser (in @file{wisi-parse.el}) is a generalized LALR
-parser, so it tolerates some conflicts and ambiguities. This makes the
-grammars easier to write, and in particular makes it possible to let
-the Ada grammar closely match Annex P of the Ada Language Reference
-Manual (the syntax summary).
+the same; see the WisiToken documentation for more info.
 
 @item *.texi
 Texinfo source for the user guides.
@@ -2028,27 +2011,23 @@ Generated user guide in Emacs info format.
 @end table
 
 @item build
-Makefile for building the user guides, publishing to the web page or
-Gnu ELPA, and building gpr-query. The main targets are ``all'' which
-builds the ada-mode ELPA packages, and ``install'' which builds and
-installs gpr-query.
+Makefile for building the external process executable, gpr-query, and
+the user guides; for running tests; and for publishing to the web page or
+Gnu ELPA. The main targets are:
 
-Test driver files used by build/Makefile and build/wisi/Makefile.
-
-@item build/wisi
-Makefile for building and testing with the wisi-based
-parser. Separate from @file{build}, because there used to be a
-SMIE-based parser, and there might be another parser someday.
+@table @code
+@item elisp
+Builds ada-mode in place, runs all tests.
 
-The emacs used to byte-compile and run tests is given by the 'make'
-variable EMACS_EXE, which defaults to 'emacs'; it can be overridden on
-the make command line or by an environment variable.
+@item update-elisp
+Builds ada-mode in place.
 
-There are two top-level targets in this Makfile; ``all'' and
-``one''. ``all'' builds everthing and runs all the tests. ``one'' runs
-one test, which makes it easier to work on one test that is failing.
+@item install
+Installs executables in the GNAT executable directory.
 
-All the other targets are used by the top-level targets.
+@item pub
+Builds the ELPA packages.
+@end table
 
 @item test
 All tests for Ada mode, gpr mode, parser.
@@ -2056,7 +2035,7 @@ All tests for Ada mode, gpr mode, parser.
 Each test is run in a separate invocation of Emacs, so it is
 completely independent of all other tests.
 
-The tests are driven by the elisp code in @file{build/*.el}.
+The tests are driven by the elisp code in @file{wisi-run-indent-test.el}.
 
 In general, the Ada mode tests open the file, execute test actions,
 re-indent, and re-captialize the entire file. The result is diffed
@@ -2068,7 +2047,7 @@ functions. This is used to test navigation features and 
other parser
 effects.
 
 @item test/Example_*
-Starting files for examples in user guide.
+Starting files for the examples in this user guide.
 
 @item test/gpr
 Tests for gpr mode.
@@ -2076,11 +2055,9 @@ Tests for gpr mode.
 @item test/subdir
 More tests; allows testing path search features.
 
-@item test/wisi
-Tests of the elisp wisi grammar compiler and parser.
 @end table
 
-@node Package organization, OpenToken, Directory structure, Developer overview
+@node Package organization
 @section Package organization
 
 @menu
@@ -2121,32 +2098,23 @@ Implements the Ada mode compiler functions for the GNAT 
compiler.
 @item ada-gnat-xref.el
 Implements the Ada mode cross reference functions for the GNAT compiler.
 
-@item ada-grammar.*
-The Ada language grammar, and files generated from it by the OpenToken
-tool @file{wisi-generate.exe}.
+@item ada.wy
+The Ada language grammar.
 
 @item ada-indent-user-options.el
 All user-settable options for the Ada indentation engine.
 
-@item ada-mode-compat-23.4.el
-Defines functions used by Ada mode that are not in Emacs 23.4.
-
-Emacs Ada mode is written for Emacs 24.3. Emacs version 23.4 is
-partially supported. Earlier versions of Emacs are not supported.
+@item ada-mode-compat.el
+Defines functions used by Ada mode that are not in older versions of Emacs.
 
 @item ada-mode.texi
-The Ada mode user guide source and compiled versions.
+This Ada mode user guide source.
 
 @item ada-skel.el
 Skeletons for expansion of Ada syntax (@pxref{Statement
 skeletons}). Extends the Emacs skeleton functions with ``tokens'',
 inspired by the lamented Else package (which was inspired by DEC LSE).
 
-@item ada-wisi-opentoken.el
-Indentation functions useful when editing OpenToken code; an example
-of extending the Ada mode indentation engine for special
-circumstances.
-
 @item ada-wisi.el
 Implements the Ada mode indentation functions for the wisi indentation
 engine backend.
@@ -2188,42 +2156,9 @@ functions for C++.
 @node Wisi,  , GNAT core, Package organization
 @subsection Wisi
 
-The ``wisi'' parser. ``wisi'' used to be an acronym, but now it's just
-a name.
-
-@table @file
-@item wisi.el
-Implements the lexer, the main parser driver,
-parser actions that cache parser information in text properties,
-utilities for indenting and navigating using the cached information,
-and general setup.
-
-@item wisi-compile.el
-Implements the parse table
-compiler. @file{wisi-generate.exe} processes the grammar source
-@file{*.wy} into an elisp source representation of a parse table
-@file{*-wy.el}. That is compiled into an internal structure containing
-the state transitions and executable actions. The actions can be any
-elisp form; the intent is that they be calls to the action functions
-provided by @file{wisi.el}.
-
-@item wisi-parse.el
-Implements the generalized LALR parser.
-@end table
-
-@node OpenToken, ELPA, Package organization, Developer overview
-@section OpenToken
-Ada mode uses the OpenToken tool @file{wisi-generate.exe} to process
-the grammar sources into elisp parse tables. See
-@uref{http://stephe-leake.org/emacs/ada-mode/emacs-ada-mode.html} for
-current information about which version of OpenToken is required, and
-how to get it.
-
-The Makefile variable @code{WISI_OPENTOKEN} gives the path to the
-build directory for OpenToken; you probably need to override it with
-an external environment variable or on the @code{make} command line.
+The ``wisi'' parser. @xref{Overview, Overview, Overview, wisi}.
 
-@node ELPA,  , OpenToken, Developer overview
+@node ELPA
 @section ELPA
 Ada mode is published via the Gnu ELPA archive. To test a new version
 of Ada mode, we use a local Gnu ELPA archive. That requires fetching
@@ -2244,7 +2179,7 @@ git clone <login>@@git.savannah.gnu.org/emacs/elpa.git
 @file{build/Makefile} contains targets for copying Ada mode source to
 the elpa workspace, and for building the elpa archive there.
 
-@node Savannah,  , OpenToken, Developer overview
+@node Savannah
 @section Savannah
 
 The ada-mode web page, mailing list, and tarball download are hosted
@@ -2252,7 +2187,7 @@ on savannah.non-gnu.org, project Emacs Ada mode
 (@url{https://savannah.nongnu.org/projects/ada-mode/}). See the
 project admin page there for more information.
 
-@node ada-france,  , OpenToken, Developer overview
+@node ada-france
 @section ada-france
 
 The source code for ada-mode is maintained in a monotone repository in
diff --git a/packages/ada-mode/ada-process.el b/packages/ada-mode/ada-process.el
index 6f98540..7c4ec40 100644
--- a/packages/ada-mode/ada-process.el
+++ b/packages/ada-mode/ada-process.el
@@ -362,129 +362,112 @@
    nil
    ])
 
-(defconst ada-elisp-keyword-table-raw
+(defconst ada-process-repair-image
   '(
-   ("abs" . ABS)
-   ("accept" . ACCEPT)
-   ("abort" . ABORT)
-   ("abstract" . ABSTRACT)
-   ("access" . ACCESS)
-   ("aliased" . ALIASED)
-   ("all" . ALL)
-   ("and" . AND)
-   ("array" . ARRAY)
-   ("at" . AT)
-   ("begin" . BEGIN)
-   ("body" . BODY)
-   ("case" . CASE)
-   ("constant" . CONSTANT)
-   ("declare" . DECLARE)
-   ("delay" . DELAY)
-   ("delta" . DELTA)
-   ("digits" . DIGITS)
-   ("do" . DO)
-   ("else" . ELSE)
-   ("elsif" . ELSIF)
-   ("end" . END)
-   ("entry" . ENTRY)
-   ("exception" . EXCEPTION)
-   ("exit" . EXIT)
-   ("for" . FOR)
-   ("function" . FUNCTION)
-   ("generic" . GENERIC)
-   ("goto" . GOTO)
-   ("if" . IF)
-   ("in" . IN)
-   ("interface" . INTERFACE)
-   ("is" . IS)
-   ("limited" . LIMITED)
-   ("loop" . LOOP)
-   ("mod" . MOD)
-   ("new" . NEW)
-   ("not" . NOT)
-   ("null" . NULL)
-   ("of" . OF)
-   ("or" . OR)
-   ("others" . OTHERS)
-   ("out" . OUT)
-   ("overriding" . OVERRIDING)
-   ("package" . PACKAGE)
-   ("pragma" . PRAGMA)
-   ("private" . PRIVATE)
-   ("procedure" . PROCEDURE)
-   ("protected" . PROTECTED)
-   ("raise" . RAISE)
-   ("range" . RANGE)
-   ("record" . RECORD)
-   ("rem" . REM)
-   ("renames" . RENAMES)
-   ("requeue" . REQUEUE)
-   ("return" . RETURN)
-   ("reverse" . REVERSE)
-   ("separate" . SEPARATE)
-   ("select" . SELECT)
-   ("some" . SOME)
-   ("subtype" . SUBTYPE)
-   ("synchronized" . SYNCHRONIZED)
-   ("tagged" . TAGGED)
-   ("task" . TASK)
-   ("terminate" . TERMINATE)
-   ("then" . THEN)
-   ("type" . TYPE)
-   ("until" . UNTIL)
-   ("use" . USE)
-   ("when" . WHEN)
-   ("while" . WHILE)
-   ("with" . WITH)
-   ("xor" . XOR)
-   ))
-
-(defconst ada-elisp-token-table-raw
-  '(
-   ("left-paren"
-    (LEFT_PAREN . "(")
-    )
-   ("right-paren"
-    (RIGHT_PAREN . ")")
-    )
-   ("punctuation"
-    (AMPERSAND . "&")
-    (BAR . "|")
-    (BOX . "<>")
-    (COLON . ":")
-    (COLON_EQUAL . ":=")
-    (COMMA . ",")
-    (DOT . ".")
-    (DOT_DOT . "..")
-    (EQUAL . "=")
-    (EQUAL_GREATER . "=>")
-    (GREATER . ">")
-    (GREATER_EQUAL . ">=")
-    (GREATER_GREATER . ">>")
-    (LESS . "<")
-    (LESS_EQUAL . "<=")
-    (LESS_LESS . "<<")
-    (MINUS . "-")
-    (PLUS . "+")
-    (SEMICOLON . ";")
-    (SLASH . "/")
-    (SLASH_EQUAL . "/=")
-    (STAR . "*")
-    (STAR_STAR . "**")
-    (TICK_1 . "'")
-    )
-   ("number"
-    (NUMERIC_LITERAL ada-wisi-number-p)
-    )
-   ("symbol"
-    (IDENTIFIER . "")
-    )
-   ("string-double"
-    (STRING_LITERAL . "")
-    )
-   ("string-single"
-    (CHARACTER_LITERAL . "")
-    )
+   (ABS . "abs")
+   (ACCEPT . "accept")
+   (ABORT . "abort")
+   (ABSTRACT . "abstract")
+   (ACCESS . "access")
+   (ALIASED . "aliased")
+   (ALL . "all")
+   (AND . "and")
+   (ARRAY . "array")
+   (AT . "at")
+   (BEGIN . "begin")
+   (BODY . "body")
+   (CASE . "case")
+   (CONSTANT . "constant")
+   (DECLARE . "declare")
+   (DELAY . "delay")
+   (DELTA . "delta")
+   (DIGITS . "digits")
+   (DO . "do")
+   (ELSE . "else")
+   (ELSIF . "elsif")
+   (END . "end")
+   (ENTRY . "entry")
+   (EXCEPTION . "exception")
+   (EXIT . "exit")
+   (FOR . "for")
+   (FUNCTION . "function")
+   (GENERIC . "generic")
+   (GOTO . "goto")
+   (IF . "if")
+   (IN . "in")
+   (INTERFACE . "interface")
+   (IS . "is")
+   (LIMITED . "limited")
+   (LOOP . "loop")
+   (MOD . "mod")
+   (NEW . "new")
+   (NOT . "not")
+   (NULL . "null")
+   (OF . "of")
+   (OR . "or")
+   (OTHERS . "others")
+   (OUT . "out")
+   (OVERRIDING . "overriding")
+   (PACKAGE . "package")
+   (PRAGMA . "pragma")
+   (PRIVATE . "private")
+   (PROCEDURE . "procedure")
+   (PROTECTED . "protected")
+   (RAISE . "raise")
+   (RANGE . "range")
+   (RECORD . "record")
+   (REM . "rem")
+   (RENAMES . "renames")
+   (REQUEUE . "requeue")
+   (RETURN . "return")
+   (REVERSE . "reverse")
+   (SEPARATE . "separate")
+   (SELECT . "select")
+   (SOME . "some")
+   (SUBTYPE . "subtype")
+   (SYNCHRONIZED . "synchronized")
+   (TAGGED . "tagged")
+   (TASK . "task")
+   (TERMINATE . "terminate")
+   (THEN . "then")
+   (TYPE . "type")
+   (UNTIL . "until")
+   (USE . "use")
+   (WHEN . "when")
+   (WHILE . "while")
+   (WITH . "with")
+   (XOR . "xor")
+   (LEFT_PAREN . "(")
+   (RIGHT_PAREN . ")")
+   (AMPERSAND . "&")
+   (BAR . "|")
+   (BOX . "<>")
+   (COLON . ":")
+   (COLON_EQUAL . ":=")
+   (COMMA . ",")
+   (DOT . ".")
+   (DOT_DOT . "..")
+   (EQUAL . "=")
+   (EQUAL_GREATER . "=>")
+   (GREATER . ">")
+   (GREATER_EQUAL . ">=")
+   (GREATER_GREATER . ">>")
+   (LESS . "<")
+   (LESS_EQUAL . "<=")
+   (LESS_LESS . "<<")
+   (MINUS . "-")
+   (PLUS . "+")
+   (SEMICOLON . ";")
+   (SLASH . "/")
+   (SLASH_EQUAL . "/=")
+   (STAR . "*")
+   (STAR_STAR . "**")
+   (TICK_1 . "'")
+   (TICK_2 . "'")
+   (NUMERIC_LITERAL . "1234567890")
+   (IDENTIFIER . "A_Bogus_Identifier")
+   (STRING_LITERAL . "\"\"")
+   (CHARACTER_LITERAL . "' '")
    ))
 
 (provide 'ada-process)
diff --git a/packages/ada-mode/ada-skel.el b/packages/ada-mode/ada-skel.el
index 93da1fd..c5218fa 100644
--- a/packages/ada-mode/ada-skel.el
+++ b/packages/ada-mode/ada-skel.el
@@ -1,6 +1,6 @@
 ;;; ada-skel.el --- Extension to Ada mode for inserting statement skeletons  
-*- lexical-binding:t -*-
 
-;; Copyright (C) 1987, 1993, 1994, 1996-2018  Free Software Foundation, Inc.
+;; Copyright (C) 1987, 1993, 1994, 1996-2019  Free Software Foundation, Inc.
 
 ;; Authors: Stephen Leake <address@hidden>
 
@@ -93,21 +93,15 @@ This could end in a token recognized by `ada-skel-expand'."
   ()
   "--  Copyright (C) " (format-time-string "%Y ") user-full-name " All Rights 
Reserved.\n"
   "--\n"
-  "--  This program is free software; you can redistribute it and/or\n"
-  "--  modify it under terms of the GNU General Public License as\n"
-  "--  published by the Free Software Foundation; either version 3, or (at\n"
-  "--  your option) any later version. This program is distributed in the\n"
-  "--  hope that it will be useful, but WITHOUT ANY WARRANTY; without even\n"
-  "--  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\n"
-  "--  PURPOSE. See the GNU General Public License for more details. You\n"
-  "--  should have received a copy of the GNU General Public License\n"
-  "--  distributed with this program; see file COPYING. If not, write to\n"
-  "--  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,\n"
-  "--  MA 02110-1335, USA.\n"
+  "--  This library is free software;  you can redistribute it and/or modify 
it\n"
+  "--  under terms of the  GNU General Public License  as published by the 
Free\n"
+  "--  Software  Foundation;  either version 3,  or (at your  option) any 
later\n"
+  "--  version. This library is distributed in the hope that it will be 
useful,\n"
+  "--  but WITHOUT ANY WARRANTY;  without even the implied warranty of 
MERCHAN-\n"
+  "--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
   "\n"
   "pragma License (GPL);\n"
-
-)
+  )
 
 (define-skeleton ada-skel-modified-gpl
   "Modified GPLv3 copyright/license skeleton, with automatic year and owner."
@@ -281,6 +275,12 @@ See `ada-find-other-file' to create library level package 
body from spec."
   "else\n"
   "end select;")
 
+(define-skeleton ada-skel-separate
+  "Insert a subunit body."
+  ()
+  "separate (" _ ")\n"
+  "{proper_body}\n")
+
 (define-skeleton ada-skel-task-body
   "Insert a task body with name from `str'."
   ()
@@ -334,12 +334,18 @@ See `ada-find-other-file' to create library level package 
body from spec."
     ("procedure"
      ("body" . ada-skel-procedure-body)
      ("spec" . ada-skel-procedure-spec))
+    ("proper_body"
+     ("function" . ada-skel-function-body)
+     ("procedure" . ada-skel-procedure-body)
+     ("task" . ada-skel-task-body)
+     ("protected" . ada-skel-protected-body))
     ("protected"
      ("body" . ada-skel-protected-body)
      ("spec" . ada-skel-protected-spec))
     ("record" . ada-skel-record)
     ("return" . ada-skel-return)
     ("select" . ada-skel-select)
+    ("separate" . ada-skel-separate)
     ("task"
      ("body" . ada-skel-task-body)
      ("spec" . ada-skel-task-spec))
diff --git a/packages/ada-mode/ada-wisi-elisp-parse.el 
b/packages/ada-mode/ada-wisi-elisp-parse.el
deleted file mode 100644
index d2facb1..0000000
--- a/packages/ada-mode/ada-wisi-elisp-parse.el
+++ /dev/null
@@ -1,337 +0,0 @@
-;;; ada-wisi-elisp-parse.el --- Ada functions for grammar actions called from 
the elisp parser  -*- lexical-binding:t -*-
-;;
-;; Copyright (C) 2012 - 2019  Free Software Foundation, Inc.
-;;
-;; Author: Stephen Leake <address@hidden>
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-;;
-;;;;
-
-(require 'ada-indent-user-options)
-(require 'wisi-elisp-parse)
-
-(defun ada-indent-aggregate ()
-  ;; Not ada-wisi-elisp-parse--indent-aggregate to match existing grammar files
-  "Return indent for an aggregate (nil or -1)."
-  ;; In our grammar, 'aggregate' can be an Ada aggregate, or a
-  ;; parenthesized expression.
-  ;;
-  ;; We always want an 'aggregate' to be indented by
-  ;; ada-indent-broken. However, in some places in the grammar,
-  ;; 'aggregate' is indented by ada-indent. The following checks for
-  ;; those places, and returns a correction value.
-  ;;
-  ;; `ada-indent-aggregate' is used in only one place in the grammar,
-  ;; in 'primary'.
-  (let ((prev-token (wisi-tok-token (wisi-parse-stack-peek wisi--parser 1))))
-    (cl-case prev-token
-      (ELSE ;; in if_expression or boolean shortcut "or else"
-       (cl-case (wisi-tok-token (wisi-parse-stack-peek wisi--parser 2))
-        (OR
-         ;; boolean shortcut
-         ;;
-         ;; test/ada_mode-parens.adb
-         ;; or else ((B.all
-         ;;             and then C)
-         ;;            or else
-         ;;            (D
-         nil)
-
-        (t ;; if_expression
-         (- ada-indent-broken ada-indent))
-        ))
-
-      (EQUAL_GREATER
-       ;; in association_opt or case_expression_alternative
-       (cl-case (wisi-tok-token (wisi-parse-stack-peek wisi--parser 3))
-        (WHEN
-         ;; case_expression_alternative
-         ;;
-         ;; test/ada_mode-conditional_expressions.adb
-         ;; when 1  =>
-         ;;
-         ;;    (if J > 42
-         (- ada-indent-broken ada-indent))
-
-        (t
-         ;; association_opt
-         ;;
-         ;; test/ada_mode-long_paren.adb
-         ;; RX_Enable                     =>
-         ;;   (RX_Torque_Subaddress |
-         nil)
-        ))
-
-      (THEN
-       (cl-case (wisi-tok-token (wisi-parse-stack-peek wisi--parser 2))
-        (AND
-         ;; boolean shortcut
-         ;;
-         ;; test/ada_mode-parens.adb
-         ;;             and then
-         ;;             (C)
-         nil)
-
-        (t
-         ;; in elsif_expression_item or if_expression
-         (- ada-indent-broken ada-indent))))
-
-      (t
-       nil))
-    ))
-
-(defun ada-wisi-elisp-parse--indent-hanging (tok delta1 delta2 option 
no-accumulate)
-  "For `wisi-elisp-parse-indent-hanging-function'. Determine indent style from 
context."
-  ;; ada-mode 5.2 used a special case for aspect specification
-  ;; expressions; we implement that here. Otherwise, implement
-  ;; ada-indent-hanging-rel-exp. Match logic in wisi-ada.adb
-  ;; Indent_Hanging_1
-  (let ((paren-nest (nth 0 (syntax-ppss (car (wisi-tok-region tok)))))
-       (result2
-        (lambda (delta1 delta2 paren-nest)
-          (list 'hanging
-                (wisi-tok-line tok) ;; first line of token
-                paren-nest
-                (wisi-elisp-parse--indent-compute-delta delta1 tok)
-                delta2
-                no-accumulate)))
-       (result1
-        (lambda (delta1 paren-nest)
-          (list 'hanging
-                (wisi-tok-line tok) ;; first line of token
-                paren-nest
-                delta1
-                delta1
-                no-accumulate)))
-       )
-  (cond
-   ((and (memq (wisi-tok-token tok) '(EQUAL_GREATER expression_opt))
-        (let ((prev-1 (wisi-parse-stack-peek wisi--parser 1))
-              (prev-3 (wisi-parse-stack-peek wisi--parser 3)))
-          (or
-           ;; test/aspects.ads
-           ;; with Pre => X > 10 and
-           ;;             X < 50 and
-           ;;             F (X),
-           (and prev-1
-                (eq 'WITH (wisi-tok-token prev-1))
-                (or (null prev-3)
-                    ;; IMPROVEME: doc test case
-                    (not (eq 'LEFT_PAREN (wisi-tok-token prev-3))))) ;; not in 
extension aggregate
-
-           ;; test/aspects.ads
-           ;;   Post =>
-           ;;     Y >= X and
-           ;;     Some_Very_Verbose_Predicate (X, Y);
-           (and prev-3
-                (eq 'WITH (wisi-tok-token prev-3))))))
-    ;; in aspect_specification_opt, indenting expression or comment after =>
-    (if (not wisi-indent-comment)
-       (funcall result2
-                delta1
-                (wisi-elisp-parse--anchored-2
-                 (wisi-tok-line tok) ;; anchor-line
-                 (cdr (wisi-tok-region tok))
-                 (wisi-elisp-parse--indent-offset tok 0)
-                 no-accumulate)
-                paren-nest)
-      ;; else
-      (funcall result1 (wisi-elisp-parse--indent-compute-delta delta1 tok) 
paren-nest)
-      ))
-
-   (ada-indent-hanging-rel-exp
-    (let ((new-delta2
-          (wisi-elisp-parse--anchored-2
-           (wisi-tok-line tok) ;; anchor-line
-           (cdr (wisi-tok-region tok))
-           (wisi-elisp-parse--indent-offset tok ada-indent-broken)
-           nil)))
-      (if (or (not option)
-             (and (wisi-tok-first tok)
-                  (= (wisi-tok-line tok) (wisi-tok-first tok))))
-         (funcall result2 delta1 new-delta2 paren-nest)
-       (funcall result1 new-delta2 paren-nest)
-
-       )))
-
-   (wisi-indent-comment
-    (let ((first-tok-first-on-line
-          (and (numberp (wisi-tok-first tok))
-               (= (wisi-tok-line tok) (wisi-tok-first tok))))
-         ;; first token in tok is first on line
-         (last-indent-line (line-number-at-pos (cdr (wisi-tok-region tok))))
-         )
-      (if option
-         (if first-tok-first-on-line
-             (if (and (wisi-tok-first tok)
-                      (= (wisi-tok-first tok) last-indent-line))
-                 (funcall result1 delta1 paren-nest)
-               (funcall result1 delta2 paren-nest))
-           (if (not (wisi-tok-first tok))
-               ;; test/ada_mode-parens.adb
-               ;;    Ada.Text_IO.Put_Line
-               ;;      (Item => Hello & There
-               ;;       --  Comment before trailing paren, token.First = False
-               (funcall result1 0 paren-nest)
-             (funcall result1 delta1 paren-nest)))
-
-       ;; not option
-       (if first-tok-first-on-line
-           (if (and (numberp (wisi-tok-first tok))
-                    (= (wisi-tok-first tok) last-indent-line))
-               (funcall result1 delta1 paren-nest)
-             (funcall result1 delta2 paren-nest))
-         (if (not (wisi-tok-first tok))
-             (funcall result1 delta1 paren-nest)
-           (funcall result1 delta2 paren-nest)))
-       )))
-
-   ((or (not option)
-       (and (wisi-tok-first tok)
-            (= (wisi-tok-line tok) (wisi-tok-first tok))))
-    (funcall result2 delta1 delta2 paren-nest))
-
-   (t
-    (funcall result1 delta1 paren-nest))
-   )))
-
-(defun ada-wisi-elisp-parse--indent-record-1 (anchor-tok record-tok offset)
-  "Return delta to implement `ada-indent-record-rel-type'.
-ANCHOR-TOK, RECORD-TOK are ’wisi-tok’ objects."
-  (let ((indenting-tok (aref wisi-tokens wisi-token-index)))
-    (cond
-     ((and (not wisi-indent-comment)
-          (eq 'RECORD (wisi-tok-token indenting-tok)))
-      ;; Indenting 'record'
-      (wisi-elisp-parse--anchored-2
-       (wisi-tok-line anchor-tok)
-       (cdr (wisi-tok-region record-tok))
-       ada-indent-record-rel-type
-       nil))
-
-   (t ;; Indenting comment, component or 'end'
-
-    ;; Ensure 'record' line is anchored
-    (let ((indent (aref wisi-elisp-parse--indent (1- (wisi-tok-line 
record-tok))))
-         delta)
-      (unless (and (listp indent)
-                  (eq 'anchor (car indent)))
-       (setq
-        delta
-        (wisi-elisp-parse--anchored-2
-         (wisi-tok-line anchor-tok) (cdr (wisi-tok-region record-tok)) 
ada-indent-record-rel-type nil))
-
-       (unless (= (wisi-tok-line anchor-tok) (wisi-tok-line record-tok))
-         (wisi-elisp-parse--indent-token-1 (wisi-tok-line record-tok) (cdr 
(wisi-tok-region record-tok)) delta))))
-
-    ;; anchor comment lines
-    (wisi-elisp-parse--anchored-1
-     anchor-tok
-     (if (= (wisi-tok-line anchor-tok) (wisi-tok-line record-tok))
-        offset
-       (+ offset ada-indent-record-rel-type))
-     nil))
-   )))
-
-(defun ada-indent-record (anchor-token record-token offset)
-  ;; Not ada-wisi-elisp-parse--indent-record to match existing grammar files
-  "Return delta to implement `ada-indent-record-rel-type'.
-
-ANCHOR-TOKEN is the token to anchor line containing 'record' to; a token 
number in `wisi-tokens'
-
-RECORD-TOKEN is the token number of 'record'.
-
-For use in grammar action."
-  (let ((record-tok (aref wisi-tokens (1- record-token)))
-       (anchor-tok (aref wisi-tokens (1- anchor-token))))
-    (ada-wisi-elisp-parse--indent-record-1 anchor-tok record-tok offset)))
-
-(defun ada-indent-record* (anchor-token record-token offset)
-  ;; Not ada-wisi-elisp-parse--indent-record to match existing grammar files
-  "Return delta to implement `ada-indent-record-rel-type'.
-
-ANCHOR-TOKEN is the token to anchor line containing 'record' to;
-it is the token id to find in the parser stack.
-
-RECORD-TOKEN is the token number of 'record'.
-
-For use in grammar action."
-  (let ((record-tok (aref wisi-tokens (1- record-token)))
-       (anchor-tok (wisi-parse-find-token wisi--parser anchor-token)))
-    (ada-wisi-elisp-parse--indent-record-1 anchor-tok record-tok offset)))
-
-(defun ada-indent-renames (token-number)
-  ;; Not ada-wisi-elisp-parse--indent-renames to match existing grammar files
-  "Implement `ada-indent-renames' option in a subprogram renaming grammar 
action.
-TOKEN-NUMBER is the subprogram_specification token."
-  ;; wisi-token-index is the renames token.
-  (let* ((subp-tok (aref wisi-tokens (1- token-number)))
-        (subp-line (wisi-tok-line subp-tok))
-        (renames-tok (aref wisi-tokens wisi-token-index))
-        (paren-pos
-         (progn (goto-char (car (wisi-tok-region subp-tok)))
-                (search-forward "(" (cdr (wisi-tok-region subp-tok)) t)))
-        (paren-line subp-line)
-        delta)
-
-    (cond
-     (paren-pos
-      (cond
-       ((>= 0 ada-indent-renames)
-       (setq delta (+ (abs ada-indent-renames) -1 (- (current-column) 
(current-indentation))))
-
-       (while (< (aref (wisi-elisp-lexer-line-begin wisi--lexer) paren-line) 
paren-pos)
-         (setq paren-line (1+ paren-line)))
-
-       (wisi-elisp-parse--anchored-2 paren-line (cdr (wisi-tok-region 
renames-tok)) delta nil))
-
-       (t
-       (wisi-elisp-parse--anchored-2 subp-line (cdr (wisi-tok-region 
renames-tok)) ada-indent-renames nil))
-       ))
-
-     (t
-      ;; FIXME: renames.line should be renames.region.last?
-      (wisi-elisp-parse--anchored-2 subp-line (wisi-tok-line renames-tok) 
ada-indent-broken nil))
-     )))
-
-(defun ada-indent-return (token-number offset)
-  ;; Not ada-wisi-elisp-parse--indent-return to match existing grammar files
-  "Implement `ada-indent-return' option in a grammar action.
-TOKEN-NUMBER is the formal_part token."
-  ;; wisi-token-index must be the return token, or a nonterminal
-  ;; starting with the return token.
-  ;;
-  ;; The grammar handles checking for no params; we know token-number
-  ;; is non-nil.
-  (let ((return-tok (aref wisi-tokens wisi-token-index)))
-    (if (= (wisi-tok-line return-tok) (wisi-tok-first return-tok))
-       ;; return is first on a line; needs indenting
-       (cond
-        ((>= 0 ada-indent-return)
-         ;; relative to paren
-         (wisi-anchored token-number (+ offset (abs ada-indent-return))))
-
-        (t
-         ;; relative to 'function'
-         (wisi-elisp-parse--anchored-1 (wisi-parse-find-token wisi--parser 
'FUNCTION) (+ offset ada-indent-return)))
-        )
-
-      ;; 'return' not first on line
-      0)))
-
-(provide 'ada-wisi-elisp-parse)
-;; end of file
diff --git a/packages/ada-mode/ada-wisi-opentoken.el 
b/packages/ada-mode/ada-wisi-opentoken.el
deleted file mode 100644
index 56e4feb..0000000
--- a/packages/ada-mode/ada-wisi-opentoken.el
+++ /dev/null
@@ -1,99 +0,0 @@
-;; ada-wisi-opentoken.el --- An indentation function for ada-wisi that indents 
 -*- lexical-binding:t -*-
-;; OpenTokengrammar statements nicely.
-
-;; Copyright (C) 2013-2017  Free Software Foundation, Inc.
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-
-;;; Commentary:
-
-;; This is an example of a user-added indentation rule.
-;;
-;; In each file that declares OpenToken grammars, enable
-;; ada-indent-opentoken minor mode by adding this to the file Local
-;; Variables list:
-;;
-;; eval: (ada-indent-opentoken-mode)
-
-;;; Code:
-
-(require 'ada-mode)
-(require 'wisi)
-(require 'wisi-elisp-lexer)
-
-(defun ada-wisi-opentoken ()
-  "Return appropriate indentation (an integer column) for continuation lines 
in an OpenToken grammar statement."
-  (save-excursion
-    ;; Point is at indentation on a line
-    (let ((token-text (wisi-token-text (wisi-backward-token)))
-         cache object-text object-indentation)
-
-      (save-excursion
-       (while (forward-comment 1))
-       (setq cache (wisi-goto-statement-start))
-       (setq object-text (wisi-token-text (wisi-forward-token)))
-       (setq object-indentation (current-indentation)))
-
-      (when (and (eq 'object_declaration (wisi-cache-nonterm cache))
-                (equal "Grammar" object-text))
-       ;; On an OpenToken Grammar declaration statement
-       (cond
-        ((equal token-text "<=")
-         (+ (current-indentation) ada-indent-broken))
-
-        ((member token-text '("+" "&"))
-         (while (not (equal "<=" (wisi-token-text (wisi-backward-token)))))
-         (+ (current-indentation) ada-indent-broken))
-
-        ((equal token-text "and")
-         ;; test/ada_mode-opentoken.ads
-         ;; Grammar : constant Production_List.Instance :=
-         ;;   Tokens.Statement <= Add_Statement and
-         ;;   Add_Statement <=
-         ;;     ... and
-         ;;   Add_Statement <=
-         ;;
-         (+ object-indentation ada-indent-broken))
-        )))))
-
-(defconst ada-wisi-opentoken-align
-  '(ada-opentoken
-    (regexp  . "[^=]\\(\\s-*\\)<=")
-    (valid   . (lambda() (not (ada-in-comment-p))))
-    (modes   . '(ada-mode)))
-  "Align rule for OpenToken grammar definitions.")
-
-;;;###autoload
-(define-minor-mode ada-indent-opentoken-mode
-  "Minor mode for indenting grammar definitions for the OpenToken package.
-Enable mode if ARG is positive"
-  :initial-value t
-  :lighter       "OpenToken"   ;; mode line
-
-  (if ada-indent-opentoken-mode
-      (progn
-       ;; This must be after ada-wisi-setup on ada-mode-hook, because
-       ;; ada-wisi-setup resets wisi-indent-calculate-functions
-       (add-to-list 'ada-align-rules ada-wisi-opentoken-align)
-       (add-to-list 'wisi-indent-calculate-functions 'ada-wisi-opentoken))
-
-    (setq ada-align-rules (delete ada-wisi-opentoken-align ada-align-rules))
-    (setq wisi-indent-calculate-functions (delete 'ada-wisi-opentoken 
wisi-indent-calculate-functions))
-    ))
-
-(provide 'ada-wisi-opentoken)
-;; end of file
diff --git a/packages/ada-mode/ada-wisi.el b/packages/ada-mode/ada-wisi.el
index 2f8f5e4..e257af2 100644
--- a/packages/ada-mode/ada-wisi.el
+++ b/packages/ada-mode/ada-wisi.el
@@ -1,967 +1,795 @@
-;;; ada-wisi.el --- Indentation engine for Ada mode, using the wisi 
generalized LALR parser  -*- lexical-binding:t -*-
-;;
-;; [1] ISO/IEC 8652:2012(E); Ada 2012 reference manual
-;;
-;; Copyright (C) 2012 - 2019  Free Software Foundation, Inc.
-;;
-;; Author: Stephen Leake <address@hidden>
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-;;
-;;;;
-
-(require 'ada-lalr-elisp)
-(require 'ada-fix-error)
-(require 'ada-indent-user-options)
-(require 'cl-lib)
-(require 'wisi)
-(require 'wisi-elisp-lexer)
-(require 'wisi-process-parse)
-
-(defconst ada-wisi-language-protocol-version "1"
-  "Defines language-specific parser parameters.
-Must match wisi-ada.ads Language_Protocol_Version.")
-
-(defun ada-wisi-comment-gnat (indent after)
-  "Modify INDENT to match gnat rules. Return new indent.
-INDENT must be indent computed by the normal indentation
-algorithm.  AFTER indicates what is on the previous line; one of:
-
-code:         blank line, or code with no trailing comment
-code-comment: code with trailing comment
-comment:      comment"
-  (let (prev-indent next-indent)
-    ;; the gnat comment indent style check; comments must
-    ;; be aligned to one of:
-    ;;
-    ;; - multiple of ada-indent
-    ;; - next non-blank line
-    ;; - previous non-blank line
-    ;;
-    ;; Note that we must indent the prev and next lines, in case
-    ;; they are not currently correct.
-    (cond
-     ((and (not (eq after 'comment))
-          (= 0 (% indent ada-indent)))
-      ;; this will handle comments at bob and eob, so we don't
-      ;; need to worry about those positions in the next checks.
-      indent)
-
-     ((and (setq prev-indent
-                (if (eq after 'comment)
-                    (progn (forward-comment -1) (current-column))
-                  (save-excursion (forward-line -1)(current-indentation))))
-          (= indent prev-indent))
-      indent)
-
-     ((and (setq next-indent
-                ;; we use forward-comment here, instead of
-                ;; forward-line, because consecutive comment
-                ;; lines are indented to the current one, which
-                ;; we don't know yet.
-                (save-excursion (forward-comment 
(point-max))(current-indentation)))
-          (= indent next-indent))
-      indent)
-
-     (t
-      (cl-ecase after
-       (code-comment
-        ;; After comment that follows code on the same line
-        ;; test/ada_mode-conditional_expressions.adb
-        ;;
-        ;; then 44     -- comment matching GNAT
-        ;;             -- second line
-        ;;
-        ;; else 45)); -- comment _not_ matching GNAT style check
-        ;;             -- comment matching GNAT
-        ;;
-        (+ indent (- ada-indent (% indent ada-indent))))
-
-       ((code comment)
-        ;; After code with no trailing comment, or after comment
-        ;; test/ada_mode-conditional_expressions.adb
-        ;; (if J > 42
-        ;; -- comment indent matching GNAT style check
-        ;; -- second line of comment
-        prev-indent)
-
-       ))
-     )))
-
-(defun ada-wisi-comment ()
-  "Modify indentation of a comment:
-For `wisi-indent-calculate-functions'.
-- align to previous comment after code.
-- respect `ada-indent-comment-gnat'."
-  ;; We know we are at the first token on a line. We check for comment
-  ;; syntax, not comment-start, to accomodate gnatprep, skeleton
-  ;; placeholders, etc.
-  ;;
-  ;; The normal indentation algorithm has already indented the
-  ;; comment.
-  (when (and (not (eobp))
-            (= 11 (syntax-class (syntax-after (point)))))
-
-    ;; We are looking at a comment; check for preceding comments, code
-    (let (after
-         (indent (current-column)))
-      (if (save-excursion (forward-line -1) (looking-at "\\s *$"))
-         ;; after blank line
-         (setq after 'code)
-
-       (save-excursion
-         (forward-comment -1)
-         (if (or (not ada-indent-after-trailing-comment) ;; ignore comment on 
previous line
-                 (looking-at "\\s *$"))                  ;; no comment on 
previous line
-             (setq after 'code)
-
-           (setq indent (current-column))
-           (if (not (= indent (progn (back-to-indentation) (current-column))))
-               ;; previous line has comment following code
-               (setq after 'code-comment)
-             ;; previous line has plain comment
-             (setq indent (current-column))
-             (setq after 'comment)
-             )))
-       )
-
-      (cl-ecase after
-       (code
-        (if ada-indent-comment-gnat
-            (ada-wisi-comment-gnat indent 'code)
-          indent))
-
-       (comment
-        indent)
-
-       (code-comment
-        (if ada-indent-comment-gnat
-            (ada-wisi-comment-gnat indent 'code-comment)
-
-          ;; After comment that follows code on the same line
-          ;; test/ada_mode-nominal.adb
-          ;;
-          ;; begin -- 2
-          ;;       --EMACSCMD:(progn 
(ada-goto-declarative-region-start)(looking-at "Bad_Thing"))
-          (save-excursion (forward-comment -1)(current-column)))
-        ))
-      )))
-
-(defun ada-wisi-post-parse-fail ()
-  "For `wisi-post-parse-fail-hook'."
-  ;; Parse indent succeeded, so we assume parse navigate will as well
-  (wisi-validate-cache (point-min) (line-end-position) nil 'navigate)
-  (save-excursion
-    (let ((start-cache (wisi-goto-start (or (wisi-get-cache (point)) 
(wisi-backward-cache)))))
-      (when start-cache
-       ;; nil when in a comment at point-min
-       (indent-region (point) (wisi-cache-end start-cache)))
-      ))
-  (back-to-indentation))
-
-;;;; ada-mode functions (alphabetical)
-
-(defun ada-wisi-declarative-region-start-p (cache)
-  "Return t if cache is a keyword starting a declarative region."
-  (memq (wisi-cache-token cache) '(DECLARE IS PRIVATE))
-  ;; IS has a cache only if start of declarative region
-  )
-
-(defun ada-wisi-context-clause ()
-  "For `ada-fix-context-clause'."
-  (wisi-validate-cache (point-min) (point-max) t 'navigate)
-  (save-excursion
-    (goto-char (point-min))
-    (let ((begin nil)
-         (end nil)
-         cache)
-
-      (while (not end)
-       (setq cache (wisi-forward-cache))
-       (cl-case (wisi-cache-nonterm cache)
-         (pragma_g (wisi-goto-end-1 cache))
-         (use_clause (wisi-goto-end-1 cache))
-         (with_clause
-          (when (not begin)
-            (setq begin (line-beginning-position)))
-          (wisi-goto-end-1 cache))
-         (t
-          ;; start of compilation unit
-          (setq end (line-beginning-position))
-          (unless begin
-            (setq begin end)))
-         ))
-      (cons begin end)
-    )))
-
-(defun ada-wisi-fix-error (_msg source-buffer _source-window)
-  "For ’ada-fix-error-hook’. Calls ’wisi-repair-error’ if appropriate."
-  (when (equal compilation-last-buffer wisi-error-buffer)
-    (set-buffer source-buffer)
-    (wisi-repair-error)
-    t))
-
-(defun ada-wisi-on-context-clause ()
-  "For `ada-on-context-clause'."
-  (let (cache)
-    (save-excursion
-      ;; Don't require parse of large file just for ada-find-other-file
-      (and (< (point-max) wisi-size-threshold)
-          (setq cache (wisi-goto-statement-start))
-          (memq (wisi-cache-nonterm cache) '(use_clause with_clause))
-          ))))
-
-(defun ada-wisi-in-case-expression ()
-  "For `ada-in-case-expression'."
-  (save-excursion
-    ;; Used by ada-align; we know we are in a paren.
-    (ada-goto-open-paren 1)
-    (while (forward-comment 1))
-    (eq (wisi-tok-token (wisi-forward-token)) 'CASE)))
-
-(defun ada-wisi-goto-subunit-name ()
-  "For `ada-goto-subunit-name'."
-  (wisi-validate-cache (point-min) (point-max) t 'navigate)
-
-  (let (cache
-       (name-pos nil))
-    (save-excursion
-      ;; move to top declaration
-      (goto-char (point-min))
-      (setq cache (or (wisi-get-cache (point))
-                     (wisi-forward-cache)))
-
-      (when (eq (wisi-cache-nonterm cache) 'subunit)
-       (setq name-pos (car (wisi-next-name-region))))
-      )
-    (when name-pos
-      (goto-char name-pos))
-    ))
-
-(defun ada-wisi-goto-declaration-start (&optional include-type)
-  "For `ada-goto-declaration-start', which see.
-Also return cache at start."
-  (wisi-validate-cache (point-min) (point-max) t 'navigate)
-  (ada-wisi-goto-declaration-start-1 include-type))
-
-(defun ada-wisi-goto-declaration-start-1 (include-type)
-  "Subroutine of `ada-wisi-goto-declaration-start'."
-  (let ((cache (wisi-get-cache (point)))
-       (done nil))
-    (unless cache
-      (setq cache (wisi-backward-cache)))
-    ;; cache is null at bob
-    (while (not done)
-      (if cache
-         (progn
-           (setq done
-                 (cl-case (wisi-cache-nonterm cache)
-                   ((entry_body entry_declaration)
-                    (eq (wisi-cache-token cache) 'ENTRY))
-
-                   (full_type_declaration
-                    (when include-type
-                      (eq (wisi-cache-token cache) 'TYPE)))
-
-                   ((generic_package_declaration 
generic_subprogram_declaration)
-                    (eq (wisi-cache-token cache) 'GENERIC))
-
-                   ((package_body package_declaration)
-                    (eq (wisi-cache-token cache) 'PACKAGE))
-
-                   ((protected_body protected_type_declaration 
single_protected_declaration)
-                    (eq (wisi-cache-token cache) 'PROTECTED))
-
-                   ((abstract_subprogram_declaration
-                     expression_function_declaration
-                     subprogram_body
-                     subprogram_declaration
-                     subprogram_renaming_declaration
-                     null_procedure_declaration)
-                    (memq (wisi-cache-token cache) '(NOT OVERRIDING FUNCTION 
PROCEDURE)))
-
-                   ((single_task_declaration task_body task_type_declaration)
-                    (eq (wisi-cache-token cache) 'TASK))
-
-                   ))
-           (unless done
-             (setq cache (wisi-goto-containing cache nil))))
-       (setq done t))
-       )
-    cache))
-
-(defun ada-wisi-goto-declaration-end ()
-  "For `ada-goto-declaration-end', which see."
-  ;; first goto-declaration-start, so we get the right end, not just
-  ;; the current statement end.
-  (wisi-goto-end-1 (ada-wisi-goto-declaration-start)))
-
-(defun ada-wisi-goto-declarative-region-start ()
-  "For `ada-goto-declarative-region-start', which see."
-  (wisi-validate-cache (point-min) (point-max) t 'navigate)
-
-  (let ((done nil)
-       start-pos
-       (in-package-spec nil)
-       (cache (or (wisi-get-cache (point))
-                  (wisi-backward-cache))))
-
-    ;; We use backward-cache, not forward-cache, to handle the case
-    ;; where point is in the whitespace or comment before a block; we
-    ;; want the containing block, not the next block.
-
-    (when cache ;; nil at bob
-      ;; If this is called with point in a comment after 'is', then the
-      ;; declarative region starts after the comment; don't hang in a
-      ;; package spec.
-      (setq start-pos (point))
-      (while (not done)
-       (if (and (or (not in-package-spec)
-                    (< (point) start-pos))
-                (ada-wisi-declarative-region-start-p cache))
-           (progn
-             (wisi-forward-token)
-             (setq done t))
-         (cl-case (wisi-cache-class cache)
-           (motion
-            (goto-char (wisi-cache-prev cache))
-            (setq cache (wisi-get-cache (point))))
-
-           (statement-end
-            (goto-char (wisi-cache-containing cache));; statement-start
-            (goto-char (wisi-cache-containing (wisi-get-cache (point))));; 
containing scope
-            (setq cache (wisi-get-cache (point))))
-
-           (statement-start
-            (cl-case (wisi-cache-nonterm cache)
-              (package_declaration
-               (setq in-package-spec t)
-               (wisi-goto-end-1 cache)
-               (setq cache (wisi-get-cache (point)))
-               (while (not (memq (wisi-cache-token cache) '(IS PRIVATE)))
-                 (setq cache (wisi-prev-statement-cache cache))))
-
-              ((entry_body package_body package_declaration protected_body 
subprogram_body task_body)
-               (while (not (eq 'IS (wisi-cache-token cache)))
-                 (setq cache (wisi-next-statement-cache cache))))
-
-              ((protected_type_declaration single_protected_declaration 
single_task_declaration task_type_declaration)
-               (while (not (eq 'IS (wisi-cache-token cache)))
-                 (setq cache (wisi-next-statement-cache cache)))
-               (when (save-excursion (eq 'NEW (wisi-tok-token 
(wisi-forward-token))))
-                 (while (not (eq 'WITH (wisi-cache-token cache)))
-                   (setq cache (wisi-next-statement-cache cache)))))
-
-              (t
-               (setq cache (wisi-goto-containing cache t)))
-              ))
-
-           (t
-            (setq cache (wisi-goto-containing cache t)))
-           )))
-
-      ;; point is at start of first code statement after
-      ;; declaration-start keyword and comment; move back to end of
-      ;; keyword.
-      (while (forward-comment -1))
-      )))
-
-(defun ada-wisi-in-paramlist-p (&optional parse-result)
-  "For `ada-in-paramlist-p'."
-  (wisi-validate-cache (point-min) (point-max) nil 'navigate)
-  ;; (info "(elisp)Parser State" "*syntax-ppss*")
-  (let ((parse-result (or parse-result (syntax-ppss)))
-        cache)
-    (and (> (nth 0 parse-result) 0)
-        ;; cache is nil if the parse failed
-        (setq cache (wisi-get-cache (nth 1 parse-result)))
-        (eq 'formal_part (wisi-cache-nonterm cache)))
-    ))
-
-(defun ada-wisi-make-subprogram-body ()
-  "For `ada-make-subprogram-body'."
-  ;; point is at start of subprogram specification;
-  ;; ada-wisi-expand-region will find the terminal semicolon.
-  (wisi-validate-cache (point-min) (point-max) t 'navigate)
-
-  (let* ((begin (point))
-        (end (wisi-cache-end (wisi-get-cache (point))))
-        (name (wisi-next-name)))
-    (goto-char end)
-    (newline)
-    (insert " is begin\n\nend ");; legal syntax; parse does not fail
-    (insert name)
-    (forward-char 1)
-
-    ;; newline after body to separate from next body
-    (newline-and-indent)
-    (indent-region begin (point))
-    (forward-line -2)
-    (back-to-indentation)
-    ))
-
-(defun ada-wisi-scan-paramlist (begin end)
-  "For `ada-scan-paramlist'."
-  ;; IMPROVEME: define mini grammar that does this
-  ;;
-  ;; BEGIN is at (, end at ). We need to parse the entire
-  ;; subprogram_specification, so start back two tokens.
-  (goto-char begin)
-  (wisi-backward-token)
-  (wisi-backward-token)
-  (wisi-validate-cache (point) end t 'navigate)
-
-  (goto-char begin)
-
-  (let (tok
-       token
-       text
-       identifiers
-       (aliased-p nil)
-       (in-p nil)
-       (out-p nil)
-       (not-null-p nil)
-       (access-p nil)
-       (constant-p nil)
-       (protected-p nil)
-       (type nil)
-       type-begin
-       type-end
-       (default nil)
-       (default-begin nil)
-       param
-       paramlist
-       (done nil))
-    (while (not done)
-      (forward-comment 1)
-      (setq tok (wisi-forward-token))
-      (setq token (wisi-tok-token tok))
-      (setq text  (wisi-token-text tok))
-      (cond
-       ((equal token 'COMMA) nil);; multiple identifiers
-
-       ((equal token 'COLON)
-       ;; identifiers done. find type-begin; there may be no mode
-       (setq type-begin (point))
-       (save-excursion
-         (while (member (wisi-tok-token (wisi-forward-token)) '(ALIASED IN OUT 
NOT NULL ACCESS CONSTANT PROTECTED))
-           (setq type-begin (point)))))
-
-       ((equal token 'ALIASED) (setq aliased-p t))
-       ((equal token 'IN) (setq in-p t))
-       ((equal token 'OUT) (setq out-p t))
-       ((and (not type-end)
-            (member token '(NOT NULL)))
-       ;; "not", "null" could be part of the default expression
-       (setq not-null-p t))
-       ((equal token 'ACCESS) (setq access-p t))
-       ((equal token 'CONSTANT) (setq constant-p t))
-       ((equal token 'PROTECTED) (setq protected-p t))
-
-       ((equal token 'COLON_EQUAL)
-       (setq type-end (save-excursion (goto-char (car (wisi-tok-region tok))) 
(skip-syntax-backward " ") (point)))
-       (setq default-begin (point))
-       (if (wisi-forward-find-token 'SEMICOLON end t)
-           (wisi-backward-token)
-       ;; else at end of param-list; point is before closing paren.
-         ))
-
-       ((equal token 'LEFT_PAREN)
-       ;; anonymous access procedure type, aggregate initial value
-       (goto-char (scan-sexps (1- (point)) 1)))
-
-       ((member token '(SEMICOLON RIGHT_PAREN))
-       (if (not type-begin)
-           ;; Right paren immediately following semicolon; allowed by
-           ;; our Ada grammar.
-           (setq done t)
-
-         (when (not type-end)
-           (setq type-end (save-excursion (goto-char (car (wisi-tok-region 
tok))) (skip-syntax-backward " ") (point))))
-
-         (setq type (buffer-substring-no-properties type-begin type-end))
-
-         (when default-begin
-           (setq default (buffer-substring-no-properties default-begin (car 
(wisi-tok-region tok)))))
-
-         (when (equal token 'RIGHT_PAREN)
-           (setq done t))
-
-         (setq param (list (reverse identifiers)
-                           aliased-p in-p out-p not-null-p access-p constant-p 
protected-p
-                           type default))
-          (cl-pushnew param paramlist :test #'equal)
-         (setq identifiers nil
-               aliased-p nil
-               in-p nil
-               out-p nil
-               not-null-p nil
-               access-p nil
-               constant-p nil
-               protected-p nil
-               type nil
-               type-begin nil
-               type-end nil
-               default nil
-               default-begin nil)))
-
-       (t
-       (when (not type-begin)
-          (push text identifiers)))
-       ))
-    paramlist))
-
-(defun ada-wisi-which-function-1 (keyword add-body)
-  "Used in `ada-wisi-which-function'."
-  (let* ((result (wisi-next-name)))
-
-    ;; See comment in ada-mode.el ada-which-function on why we don't
-    ;; overwrite ff-function-name.
-    (when (not ff-function-name)
-      (setq ff-function-name
-           (concat
-            keyword
-            (when add-body "\\s-+body")
-            "\\s-+"
-            result
-            ada-symbol-end)))
-    result))
-
-(defun ada-wisi-which-function (include-type)
-  "For `ada-which-function'."
-  ;; Fail gracefully and silently, since this could be called from
-  ;; which-function-mode.
-  (let ((parse-begin (max (point-min) (- (point) (/ ada-which-func-parse-size 
2))))
-       (parse-end   (min (point-max) (+ (point) (/ ada-which-func-parse-size 
2)))))
-    (wisi-validate-cache parse-begin parse-end nil 'navigate)
-    (when (wisi-cache-covers-region parse-begin parse-end 'navigate)
-      (save-excursion
-       (condition-case-unless-debug nil
-           (let ((result nil)
-                 (cache (ada-wisi-goto-declaration-start-1 include-type)))
-             (if (null cache)
-                 ;; bob or failed parse
-                 (setq result "")
-
-               (when (memq (wisi-cache-nonterm cache)
-                           '(generic_package_declaration 
generic_subprogram_declaration))
-                 ;; name is after next statement keyword
-                 (wisi-next-statement-cache cache)
-                 (setq cache (wisi-get-cache (point))))
-
-               ;; add or delete 'body' as needed
-               (cl-ecase (wisi-cache-nonterm cache)
-                 ((entry_body entry_declaration)
-                  (setq result (ada-wisi-which-function-1 "entry" nil)))
-
-                 (full_type_declaration
-                  (setq result (ada-wisi-which-function-1 "type" nil)))
-
-                 (package_body
-                  (setq result (ada-wisi-which-function-1 "package" nil)))
-
-                 ((package_declaration
-                   generic_package_declaration) ;; after 'generic'
-                  (setq result (ada-wisi-which-function-1 "package" t)))
-
-                 (protected_body
-                  (setq result (ada-wisi-which-function-1 "protected" nil)))
-
-                 ((protected_type_declaration single_protected_declaration)
-                  (setq result (ada-wisi-which-function-1 "protected" t)))
-
-                 ((abstract_subprogram_declaration
-                   expression_function_declaration
-                   subprogram_declaration
-                   subprogram_renaming_declaration
-                   generic_subprogram_declaration ;; after 'generic'
-                   null_procedure_declaration)
-                  (setq result (ada-wisi-which-function-1
-                                (wisi-token-text (wisi-forward-find-token 
'(FUNCTION PROCEDURE) (point-max)))
-                                nil))) ;; no 'body' keyword in subprogram 
bodies
-
-                 (subprogram_body
-                  (setq result (ada-wisi-which-function-1
-                                (wisi-token-text (wisi-forward-find-token 
'(FUNCTION PROCEDURE) (point-max)))
-                                nil)))
-
-                 ((single_task_declaration task_type_declaration)
-                  (setq result (ada-wisi-which-function-1 "task" t)))
-
-
-                 (task_body
-                  (setq result (ada-wisi-which-function-1 "task" nil)))
-                 ))
-             result)
-         (error "")))
-      )))
-
-(defun ada-wisi-number-p (token-text)
-  "Return t if TOKEN-TEXT plus text after point matches the
-syntax for a numeric literal; otherwise nil. point is after
-TOKEN-TEXT; move point to just past token."
-  ;; test in test/wisi/ada-number-literal.input
-  ;;
-  ;; starts with a simple integer
-  (let ((end (point)))
-    ;; this first test must be very fast; it is executed for every token
-    (when (and (memq (aref token-text 0) '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9))
-              (string-match "^[0-9_]+$" token-text))
-      (cond
-       ((= (char-after) ?#)
-       ;; based number
-       (forward-char 1)
-       (if (not (looking-at "[0-9a-fA-F_]+"))
-           (progn (goto-char end) nil)
-
-         (goto-char (match-end 0))
-         (cond
-          ((= (char-after) ?#)
-           ;; based integer
-           (forward-char 1)
-           t)
-
-          ((= (char-after) ?.)
-           ;; based real?
-           (forward-char 1)
-           (if (not (looking-at "[0-9a-fA-F]+"))
-               (progn (goto-char end) nil)
-
-             (goto-char (match-end 0))
-
-             (if (not (= (char-after) ?#))
-                 (progn (goto-char end) nil)
-
-               (forward-char 1)
-               (setq end (point))
-
-               (if (not (memq (char-after) '(?e ?E)))
-                   ;; based real, no exponent
-                   t
-
-                 ;; exponent?
-                 (forward-char 1)
-                 (if (not (looking-at "[+-]?[0-9]+"))
-                     (progn (goto-char end) t)
-
-                   (goto-char (match-end 0))
-                   t
-               )))))
-
-          (t
-           ;; missing trailing #
-           (goto-char end) nil)
-          )))
-
-       ((= (char-after) ?.)
-       ;; decimal real number?
-       (forward-char 1)
-       (if (not (looking-at "[0-9_]+"))
-           ;; decimal integer
-           (progn (goto-char end) t)
-
-         (setq end (goto-char (match-end 0)))
-
-         (if (not (memq (char-after) '(?e ?E)))
-             ;; decimal real, no exponent
-             t
-
-           ;; exponent?
-           (forward-char 1)
-           (if (not (looking-at "[+-]?[0-9]+"))
-               (progn (goto-char end) t)
-
-             (goto-char (match-end 0))
-             t
-             ))))
-
-       (t
-       ;; just an integer
-       t)
-       ))
-    ))
-
-(cl-defstruct (ada-wisi-parser (:include wisi-process--parser))
-  ;; no new slots
-  )
-
-(cl-defmethod wisi-parse-format-language-options ((_parser ada-wisi-parser))
-  (format "%d %d %d %d %d %d %d %d %d %d %d %d %d"
-         ada-indent
-         ada-indent-broken
-         (if ada-indent-comment-col-0 1 0)
-         (if ada-indent-comment-gnat 1 0)
-         ada-indent-label
-         ada-indent-record-rel-type
-         ada-indent-renames
-         ada-indent-return
-         ada-indent-use
-         ada-indent-when
-         ada-indent-with
-         (if ada-indent-hanging-rel-exp 1 0)
-         (if ada-end-name-optional 1 0)
-         ))
-
-(defconst ada-wisi-named-begin-regexp
-  "\\bfunction\\b\\|\\bpackage\\b\\|\\bprocedure\\b\\|\\btask\\b"
-  )
-
-(defconst ada-wisi-partial-begin-regexp
-  (concat "\\bbegin\\b\\|\\bdeclare\\b\\|"
-         ada-wisi-named-begin-regexp
-         "\\|\\bend;\\|\\bend " ada-name-regexp ";"))
-
-(defconst ada-wisi-partial-end-regexp
-  (concat ada-wisi-partial-begin-regexp
-         "\\|;"))
-
-(defun ada-wisi-find-begin ()
-  "Starting at current point, search backward for a parse start point."
-
-  ;; There is a trade-off in deciding where to start parsing for indent. If we 
have:
-  ;;
-  ;; procedure ...
-  ;; is
-  ;;
-  ;; and are inserting a new line after 'is', we need to include
-  ;; 'is' in the parse to see the indent. On the other hand, if we
-  ;; have:
-  ;;
-  ;;    ...
-  ;;    end;
-  ;; begin
-  ;;    Foo;
-  ;;
-  ;; Inserting new line after 'Foo;'; if we include 'begin', there
-  ;; is no error (begin starts a statement), and the indent is
-  ;; computed incorrectly.
-  ;;
-  ;; This is handled by the set of keywords in
-  ;; ada-wisi-partial-begin-regexp.
-  (cond
-   ((wisi-search-backward-skip
-     ada-wisi-partial-begin-regexp
-     (lambda ()
-       (or (ada-in-string-or-comment-p)
-          (eq 'ACCESS (wisi-tok-token (save-excursion 
(wisi-backward-token)))))))
-
-    (let ((found (match-string 0))
-         cache)
-      (cond
-       ((and (>= (length found) 3)
-            (string-equal "end" (substring found 0 3)))
-       (match-end 0))
-
-       (t
-       (setq cache (wisi-get-cache (point)))
-       (when cache
-         ;; This distinguishes 'begin' as a statement start from
-         ;; 'begin' following 'declare', 'procedure' etc.  We don't
-         ;; force a parse to get this; the user may choose to do so.
-         (wisi-goto-start cache))
-       (point))
-       )))
-
-   (t
-    (point-min))
-   ))
-
-(defun ada-wisi-find-end ()
-  "Starting at current point, search forward for a reasonable parse end point."
-  (forward-comment (point-max)) ;; get past any current comments
-  (forward-line 1) ;; contain at least some code (see 
ada_mode-partial_parse.adb 'blank line before "end"')
-
-  (let ((start (point))
-       match
-       (end-cand nil))
-
-    (while (not end-cand)
-      (if (search-forward-regexp ada-wisi-partial-end-regexp nil 1) ;; moves 
to eob if not found
-         (unless (or (ada-in-string-or-comment-p)
-                     (ada-in-paren-p))
-           (setq match t)
-           (setq end-cand (point)))
-
-       ;; No reasonable end point found (maybe a missing right
-       ;; paren); return line after start for minimal parse, compute
-       ;; indent for line containing start.
-       (setq match nil)
-       (goto-char start)
-       (setq end-cand (line-end-position 2)))
-      )
-
-    (when (and match
-              (not (string-equal ";" (match-string 0))))
-      (setq end-cand (match-beginning 0)))
-
-    end-cand))
-
-(defun ada-wisi-find-matching-end ()
-  "Starting at current point, search forward for a matching end.
-Point must have been set by `ada-wisi-find-begin'."
-  (let (end-regexp)
-    ;; Point is at bol
-    (back-to-indentation)
-    (when (looking-at ada-wisi-named-begin-regexp)
-      (skip-syntax-forward "ws")
-      (skip-syntax-forward " ")
-      (when (looking-at "body\\|type")
-       (goto-char (match-end 0))
-       (skip-syntax-forward " "))
-      (setq end-regexp
-           (concat "end +"
-                   (buffer-substring-no-properties
-                    (point)
-                    (progn
-                      (skip-syntax-forward "ws._")
-                      (point)))
-                   ";"))
-      (if (search-forward-regexp end-regexp nil t)
-         (progn
-           (while (and (ada-in-string-or-comment-p)
-                       (search-forward-regexp end-regexp)))
-           (point))
-
-       ;; matching end not found
-       nil)
-      )))
-
-(cl-defmethod wisi-parse-expand-region ((_parser ada-wisi-parser) begin end)
-  (let (begin-cand end-cand result)
-    (save-excursion
-      (goto-char begin)
-
-      (setq begin-cand (ada-wisi-find-begin))
-      (if (= begin-cand (point-min)) ;; No code between BEGIN and bob
-         (progn
-           (goto-char end)
-           (setq result (cons begin-cand (ada-wisi-find-end))))
-
-       (setq end-cand (ada-wisi-find-matching-end))
-       (if (and end-cand
-                (>= end-cand end))
-           (setq result (cons begin-cand end-cand))
-         (goto-char end)
-         (setq result (cons begin-cand (ada-wisi-find-end))))
-
-       ))
-    result))
-
-(cl-defmethod wisi-parse-adjust-indent ((_parser ada-wisi-parser) indent 
repair)
-  (cond
-   ((or (wisi-list-memq (wisi--parse-error-repair-inserted repair) '(BEGIN IF 
LOOP))
-       (wisi-list-memq (wisi--parse-error-repair-deleted repair) '(END)))
-    ;; Error token terminates the block containing the start token
-    (- indent ada-indent))
-
-   ((equal '(CASE IS) (wisi--parse-error-repair-inserted repair))
-        (- indent (+ ada-indent ada-indent-when)))
-
-   ((equal '(END CASE SEMICOLON) (wisi--parse-error-repair-inserted repair))
-        (+ indent (+ ada-indent ada-indent-when)))
-
-   (t indent)
-   ))
-
-(defvar ada-parser nil) ;; declared, set in ada-mode.el for parser detection
-(defvar ada-process-token-table nil) ;; ada-process.el
-(defvar ada-process-face-table nil) ;; ada-process.el
-
-(defvar wisi-elisp-parse-indent-hanging-function nil); wisi-elisp-parse.el
-
-(declare-function wisi-make-elisp-parser "wisi-elisp-parse") ;; autoloaded
-(declare-function ada-wisi-elisp-parse--indent-hanging "ada-wisi-elisp-parse")
-
-(defun ada-wisi-setup ()
-  "Set up a buffer for parsing Ada files with wisi."
-  (let ((parser
-        (cond
-         ((or (null ada-parser)
-              (eq 'elisp ada-parser))
-
-          (require 'ada-wisi-elisp-parse)
-
-          (setq wisi-elisp-parse-indent-hanging-function 
#'ada-wisi-elisp-parse--indent-hanging)
-
-          (wisi-make-elisp-parser
-           ada-lalr-elisp-parse-table
-           #'wisi-forward-token)
-          )
-
-         ((eq 'process ada-parser)
-          (require 'ada-process)
-          (wisi-process-parse-get
-           (make-ada-wisi-parser
-            :label "Ada"
-            :language-protocol-version ada-wisi-language-protocol-version
-            :exec-file ada-process-parse-exec
-            :exec-opts ada-process-parse-exec-opts
-            :face-table ada-process-face-table
-            :token-table ada-process-token-table)))
-         ))
-
-       (lexer
-        ;; The process parser has its own lexer, but we still need
-        ;; the elisp lexer for ada-wisi-scan-paramlist,
-        ;; ada-wisi-which-function, etc.
-        (wisi-make-elisp-lexer
-         :token-table-raw ada-lalr-elisp-token-table-raw
-         :keyword-table-raw ada-lalr-elisp-keyword-table-raw
-         :string-quote-escape-doubled t
-         :string-quote-escape nil))
-       )
-
-    (add-hook 'ada-fix-error-hook #'ada-wisi-fix-error)
-
-    (wisi-setup
-     :indent-calculate '(ada-wisi-comment)
-     :post-indent-fail 'ada-wisi-post-parse-fail
-     :parser parser
-     :lexer lexer)
-    )
-
-  (set (make-local-variable 'comment-indent-function) 'wisi-comment-indent)
-
-  (add-hook 'hack-local-variables-hook 'ada-wisi-post-local-vars nil t)
-  )
-
-(defun ada-wisi-post-local-vars ()
-  "See wisi-setup."
-  (setq hack-local-variables-hook (delq 'ada-wisi-post-local-vars 
hack-local-variables-hook))
-
-  (setq wisi-indent-comment-col-0 ada-indent-comment-col-0)
-  )
-
-(add-hook 'ada-mode-hook 'ada-wisi-setup)
-
-(setq ada-fix-context-clause 'ada-wisi-context-clause)
-(setq ada-goto-declaration-end 'ada-wisi-goto-declaration-end)
-(setq ada-goto-declaration-start 'ada-wisi-goto-declaration-start)
-(setq ada-goto-declarative-region-start 
'ada-wisi-goto-declarative-region-start)
-(setq ada-goto-end 'wisi-goto-statement-end)
-(setq ada-goto-subunit-name 'ada-wisi-goto-subunit-name)
-(setq ada-in-case-expression 'ada-wisi-in-case-expression)
-(setq ada-in-paramlist-p 'ada-wisi-in-paramlist-p)
-(setq ada-indent-statement 'wisi-indent-statement)
-(setq ada-make-subprogram-body 'ada-wisi-make-subprogram-body)
-(setq ada-on-context-clause 'ada-wisi-on-context-clause)
-(setq ada-reset-parser 'wisi-reset-parser)
-(setq ada-scan-paramlist 'ada-wisi-scan-paramlist)
-(setq ada-show-parse-error 'wisi-show-parse-error)
-(setq ada-which-function 'ada-wisi-which-function)
-
-(provide 'ada-wisi)
-;; end of file
+;;; ada-wisi.el --- Indentation engine for Ada mode, using the wisi 
generalized LALR parser  -*- lexical-binding:t -*-
+;;
+;; [1] ISO/IEC 8652:2012(E); Ada 2012 reference manual
+;;
+;; Copyright (C) 2012 - 2019  Free Software Foundation, Inc.
+;;
+;; Author: Stephen Leake <address@hidden>
+;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+;;
+;;;;
+
+(require 'ada-fix-error)
+(require 'ada-indent-user-options)
+(require 'ada-process)
+(require 'cl-lib)
+(require 'wisi)
+(require 'wisi-process-parse)
+
+(defconst ada-wisi-language-protocol-version "2"
+  "Defines language-specific parser parameters.
+Must match wisi-ada.ads Language_Protocol_Version.")
+
+;; Refactor actions; must match wisi-ada.adb Refactor
+(defconst ada-refactor-method-object-to-object-method 1)
+(defconst ada-refactor-object-method-to-method-object 2)
+
+(defconst ada-refactor-element-object-to-object-index 3)
+(defconst ada-refactor-object-index-to-element-object 4)
+
+(defconst ada-refactor-format-paramlist 5)
+
+(defun ada-wisi-comment-gnat (indent after)
+  "Modify INDENT to match gnat rules. Return new indent.
+INDENT must be indent computed by the normal indentation
+algorithm.  AFTER indicates what is on the previous line; one of:
+
+code:         blank line, or code with no trailing comment
+code-comment: code with trailing comment
+comment:      comment"
+  (let (prev-indent next-indent)
+    ;; the gnat comment indent style check; comments must
+    ;; be aligned to one of:
+    ;;
+    ;; - multiple of ada-indent
+    ;; - next non-blank line
+    ;; - previous non-blank line
+    ;;
+    ;; Note that we must indent the prev and next lines, in case
+    ;; they are not currently correct.
+    (cond
+     ((and (not (eq after 'comment))
+          (= 0 (% indent ada-indent)))
+      ;; this will handle comments at bob and eob, so we don't
+      ;; need to worry about those positions in the next checks.
+      indent)
+
+     ((and (setq prev-indent
+                (if (eq after 'comment)
+                    (progn (forward-comment -1) (current-column))
+                  (save-excursion (forward-line -1)(current-indentation))))
+          (= indent prev-indent))
+      indent)
+
+     ((and (setq next-indent
+                ;; we use forward-comment here, instead of
+                ;; forward-line, because consecutive comment
+                ;; lines are indented to the current one, which
+                ;; we don't know yet.
+                (save-excursion (forward-comment 
(point-max))(current-indentation)))
+          (= indent next-indent))
+      indent)
+
+     (t
+      (cl-ecase after
+       (code-comment
+        ;; After comment that follows code on the same line
+        ;; test/ada_mode-conditional_expressions.adb
+        ;;
+        ;; then 44     -- comment matching GNAT
+        ;;             -- second line
+        ;;
+        ;; else 45)); -- comment _not_ matching GNAT style check
+        ;;             -- comment matching GNAT
+        ;;
+        (+ indent (- ada-indent (% indent ada-indent))))
+
+       ((code comment)
+        ;; After code with no trailing comment, or after comment
+        ;; test/ada_mode-conditional_expressions.adb
+        ;; (if J > 42
+        ;; -- comment indent matching GNAT style check
+        ;; -- second line of comment
+        prev-indent)
+
+       ))
+     )))
+
+(defun ada-wisi-comment ()
+  "Modify indentation of a comment:
+For `wisi-indent-calculate-functions'.
+- align to previous comment after code.
+- respect `ada-indent-comment-gnat'."
+  ;; We know we are at the first token on a line. We check for comment
+  ;; syntax, not comment-start, to accomodate gnatprep, skeleton
+  ;; placeholders, etc.
+  ;;
+  ;; The normal indentation algorithm has already indented the
+  ;; comment.
+  (when (and (not (eobp))
+            (= 11 (syntax-class (syntax-after (point)))))
+
+    ;; We are looking at a comment; check for preceding comments, code
+    (let (after
+         (indent (current-column)))
+      (if (save-excursion (forward-line -1) (looking-at "\\s *$"))
+         ;; after blank line
+         (setq after 'code)
+
+       (save-excursion
+         (forward-comment -1)
+         (if (or (not ada-indent-after-trailing-comment) ;; ignore comment on 
previous line
+                 (looking-at "\\s *$"))                  ;; no comment on 
previous line
+             (setq after 'code)
+
+           (setq indent (current-column))
+           (if (not (= indent (progn (back-to-indentation) (current-column))))
+               ;; previous line has comment following code
+               (setq after 'code-comment)
+             ;; previous line has plain comment
+             (setq indent (current-column))
+             (setq after 'comment)
+             )))
+       )
+
+      (cl-ecase after
+       (code
+        (if ada-indent-comment-gnat
+            (ada-wisi-comment-gnat indent 'code)
+          indent))
+
+       (comment
+        indent)
+
+       (code-comment
+        (if ada-indent-comment-gnat
+            (ada-wisi-comment-gnat indent 'code-comment)
+
+          ;; After comment that follows code on the same line
+          ;; test/ada_mode-nominal.adb
+          ;;
+          ;; begin -- 2
+          ;;       --EMACSCMD:(progn 
(ada-goto-declarative-region-start)(looking-at "Bad_Thing"))
+          (save-excursion (forward-comment -1)(current-column)))
+        ))
+      )))
+
+(defun ada-wisi-post-parse-fail ()
+  "For `wisi-post-parse-fail-hook'."
+  ;; Parse indent succeeded, so we assume parse navigate will as well
+  (wisi-validate-cache (point-min) (line-end-position) nil 'navigate)
+  (save-excursion
+    (let ((start-cache (wisi-goto-start (or (wisi-get-cache (point)) 
(wisi-backward-cache)))))
+      (when start-cache
+       ;; nil when in a comment at point-min
+       (indent-region (point) (wisi-cache-end start-cache)))
+      ))
+  (back-to-indentation))
+
+;;;; ada-mode functions (alphabetical)
+
+(defun ada-wisi-declarative-region-start-p (cache)
+  "Return t if cache is a keyword starting a declarative region."
+  (memq (wisi-cache-token cache) '(DECLARE IS PRIVATE))
+  ;; IS has a cache only if start of declarative region
+  )
+
+(defun ada-wisi-context-clause ()
+  "For `ada-fix-context-clause'."
+  (wisi-validate-cache (point-min) (point-max) t 'navigate)
+  (save-excursion
+    (goto-char (point-min))
+    (let ((begin nil)
+         (end nil)
+         cache)
+
+      (while (not end)
+       (setq cache (wisi-forward-cache))
+       (cl-case (wisi-cache-nonterm cache)
+         (pragma_g (wisi-goto-end-1 cache))
+         (use_clause (wisi-goto-end-1 cache))
+         (with_clause
+          (when (not begin)
+            (setq begin (line-beginning-position)))
+          (wisi-goto-end-1 cache))
+         (t
+          ;; start of compilation unit
+          (setq end (line-beginning-position))
+          (unless begin
+            (setq begin end)))
+         ))
+      (cons begin end)
+    )))
+
+(defun ada-wisi-fix-error (_msg source-buffer _source-window)
+  "For ’ada-fix-error-hook’. Calls ’wisi-repair-error’ if appropriate."
+  (when (equal compilation-last-buffer wisi-error-buffer)
+    (set-buffer source-buffer)
+    (wisi-repair-error)
+    t))
+
+(defun ada-wisi-on-context-clause ()
+  "For `ada-on-context-clause'."
+  (let (cache)
+    (save-excursion
+      ;; Don't require parse of large file just for ada-find-other-file
+      (and (< (point-max) wisi-size-threshold)
+          (setq cache (wisi-goto-statement-start))
+          (memq (wisi-cache-nonterm cache) '(use_clause with_clause))
+          ))))
+
+(defun ada-wisi-in-case-expression ()
+  "For `ada-in-case-expression'."
+  (save-excursion
+    ;; Used by ada-align; we know we are in a paren.
+    (ada-goto-open-paren 1)
+    (while (forward-comment 1))
+    (looking-at "case")))
+
+(defun ada-wisi-goto-subunit-name ()
+  "For `ada-goto-subunit-name'."
+  (wisi-validate-cache (point-min) (point-max) t 'navigate)
+
+  (let (cache
+       (name-pos nil))
+    (save-excursion
+      ;; move to top declaration
+      (goto-char (point-min))
+      (setq cache (or (wisi-get-cache (point))
+                     (wisi-forward-cache)))
+
+      (when (eq (wisi-cache-nonterm cache) 'subunit)
+       (setq name-pos (car (wisi-next-name-region))))
+      )
+    (when name-pos
+      (goto-char name-pos))
+    ))
+
+(defun ada-wisi-goto-declaration-start (&optional include-type)
+  "For `ada-goto-declaration-start', which see.
+Also return cache at start."
+  (wisi-validate-cache (point-min) (point-max) t 'navigate)
+  (ada-wisi-goto-declaration-start-1 include-type))
+
+(defun ada-wisi-goto-declaration-start-1 (include-type)
+  "Subroutine of `ada-wisi-goto-declaration-start'."
+  (let ((start (point))
+       (cache (wisi-get-cache (point)))
+       (done nil))
+    (unless cache
+      (setq cache (wisi-backward-cache)))
+    ;; cache is null at bob
+    (while (not done)
+      (if cache
+         (progn
+           (setq done
+                 (cl-case (wisi-cache-nonterm cache)
+                   ((entry_body entry_declaration)
+                    (eq (wisi-cache-token cache) 'ENTRY))
+
+                   (full_type_declaration
+                    (when include-type
+                      (eq (wisi-cache-token cache) 'TYPE)))
+
+                   ((generic_package_declaration 
generic_subprogram_declaration)
+                    (eq (wisi-cache-token cache) 'GENERIC))
+
+                   ((package_body package_declaration)
+                    (eq (wisi-cache-token cache) 'PACKAGE))
+
+                   ((protected_body protected_type_declaration 
single_protected_declaration)
+                    (eq (wisi-cache-token cache) 'PROTECTED))
+
+                   ((abstract_subprogram_declaration
+                     expression_function_declaration
+                     subprogram_body
+                     subprogram_declaration
+                     subprogram_renaming_declaration
+                     null_procedure_declaration)
+                    (memq (wisi-cache-token cache) '(NOT OVERRIDING FUNCTION 
PROCEDURE)))
+
+                   ((single_task_declaration task_body task_type_declaration)
+                    (eq (wisi-cache-token cache) 'TASK))
+
+                   ))
+           (unless (< start (wisi-cache-end cache))
+             ;; found declaration does not include start; find containing one.
+             (setq done nil))
+           (unless done
+             (setq cache (wisi-goto-containing cache nil))))
+       (setq done t))
+       )
+    cache))
+
+(defun ada-wisi-goto-declaration-end ()
+  "For `ada-goto-declaration-end', which see."
+  ;; first goto-declaration-start, so we get the right end, not just
+  ;; the current statement end.
+  (wisi-goto-end-1 (ada-wisi-goto-declaration-start)))
+
+(defun ada-wisi-goto-declarative-region-start ()
+  "For `ada-goto-declarative-region-start', which see."
+  (wisi-validate-cache (point-min) (point-max) t 'navigate)
+
+  (let ((done nil)
+       start-pos
+       (in-package-spec nil)
+       (cache (or (wisi-get-cache (point))
+                  (wisi-backward-cache))))
+
+    ;; We use backward-cache, not forward-cache, to handle the case
+    ;; where point is in the whitespace or comment before a block; we
+    ;; want the containing block, not the next block.
+
+    (when cache ;; nil at bob
+      ;; If this is called with point in a comment after 'is', then the
+      ;; declarative region starts after the comment; don't hang in a
+      ;; package spec.
+      (setq start-pos (point))
+      (while (not done)
+       (if (and (or (not in-package-spec)
+                    (< (point) start-pos))
+                (ada-wisi-declarative-region-start-p cache))
+           (progn
+             (forward-word);; past 'is'
+             (setq done t))
+         (cl-case (wisi-cache-class cache)
+           (motion
+            (setq cache (wisi-goto-containing cache)));; statement-start
+
+           (statement-end
+            (setq cache (wisi-goto-containing cache)) ;; statement-start
+            (cl-case (wisi-cache-nonterm cache)
+              ((generic_package_declaration
+                package_declaration
+                entry_body package_body package_declaration protected_body 
subprogram_body task_body
+                protected_type_declaration single_protected_declaration 
single_task_declaration task_type_declaration)
+               ;; This is a block scope before the starting point; we want the 
containing scope
+               (setq cache (wisi-goto-containing cache)))
+
+              (t
+               nil)
+              ))
+
+           (statement-start
+            (cl-case (wisi-cache-nonterm cache)
+              (generic_package_declaration
+               (setq in-package-spec t)
+               (setq cache (wisi-next-statement-cache cache)) ;; 'package'
+               (setq cache (wisi-next-statement-cache cache))) ;; 'is'
+
+              (package_declaration
+               (setq in-package-spec t)
+               (setq cache (wisi-next-statement-cache cache))) ;; 'is'
+
+              ((entry_body package_body package_declaration protected_body 
subprogram_body task_body)
+               (while (not (eq 'IS (wisi-cache-token cache)))
+                 (setq cache (wisi-next-statement-cache cache))))
+
+              ((protected_type_declaration single_protected_declaration 
single_task_declaration task_type_declaration)
+               (while (not (eq 'IS (wisi-cache-token cache)))
+                 (setq cache (wisi-next-statement-cache cache)))
+               (when (looking-at "\<new\>")
+                 (while (not (eq 'WITH (wisi-cache-token cache)))
+                   (setq cache (wisi-next-statement-cache cache)))))
+
+              (t
+               (setq cache (wisi-goto-containing cache t)))
+              ))
+
+           (t
+            (setq cache (wisi-goto-containing cache t)))
+           )))
+
+      ;; point is at start of first code statement after
+      ;; declaration-start keyword and comment; move back to end of
+      ;; keyword.
+      (while (forward-comment -1))
+      )))
+
+(defun ada-wisi-in-paramlist-p (&optional parse-result)
+  "For `ada-in-paramlist-p'."
+  (wisi-validate-cache (point-min) (point-max) nil 'navigate)
+  ;; (info "(elisp)Parser State" "*syntax-ppss*")
+  (let ((parse-result (or parse-result (syntax-ppss)))
+        cache)
+    (and (> (nth 0 parse-result) 0)
+        ;; cache is nil if the parse failed
+        (setq cache (wisi-get-cache (nth 1 parse-result)))
+        (eq 'formal_part (wisi-cache-nonterm cache)))
+    ))
+
+(defun ada-wisi-refactor (action)
+  (wisi-validate-cache (line-end-position -7) (line-end-position 7) t 
'navigate)
+  (save-excursion
+    (skip-syntax-backward "w_.\"")
+    (let* ((edit-begin (point))
+          (cache (wisi-goto-statement-start))
+          (parse-begin (point))
+          (parse-end (wisi-cache-end cache)))
+      (if parse-end
+         (setq parse-end (+ parse-end (wisi-cache-last (wisi-get-cache 
(wisi-cache-end cache)))))
+       ;; else there is a syntax error; missing end of statement
+       (setq parse-end (point-max)))
+      (wisi-refactor wisi--parser action parse-begin parse-end edit-begin)
+      )))
+
+(defun ada-wisi-refactor-1 ()
+  "Refactor Method (Object) => Object.Method.
+Point must be in Method."
+  (interactive)
+  (ada-wisi-refactor ada-refactor-method-object-to-object-method))
+
+(defun ada-wisi-refactor-2 ()
+  "Refactor Object.Method => Method (Object).
+Point must be in Object.Method."
+  (interactive)
+  (ada-wisi-refactor ada-refactor-object-method-to-method-object))
+
+(defun ada-wisi-refactor-3 ()
+  "Refactor Element (Object, Index) => Object (Index).
+Point must be in Element"
+  (interactive)
+  (ada-wisi-refactor ada-refactor-element-object-to-object-index))
+
+(defun ada-wisi-refactor-4 ()
+  "Refactor Object (Index) => Element (Object, Index).
+Point must be in Object"
+  (interactive)
+  (ada-wisi-refactor ada-refactor-object-index-to-element-object))
+
+(defun ada-wisi-make-subprogram-body ()
+  "For `ada-make-subprogram-body'."
+  ;; point is at start of subprogram specification;
+  ;; ada-wisi-expand-region will find the terminal semicolon.
+  (wisi-validate-cache (point-min) (point-max) t 'navigate)
+
+  (let* ((begin (point))
+        (end (wisi-cache-end (wisi-get-cache (point))))
+        (name (wisi-next-name)))
+    (goto-char end)
+    (newline)
+    (insert " is begin\n\nend ");; legal syntax; parse does not fail
+    (insert name)
+    (forward-char 1)
+
+    ;; newline after body to separate from next body
+    (newline-and-indent)
+    (indent-region begin (point))
+    (forward-line -2)
+    (back-to-indentation)
+    ))
+
+(defun ada-wisi-which-function-1 (keyword add-body)
+  "Used in `ada-wisi-which-function'."
+  (let* ((result (wisi-next-name)))
+
+    ;; See comment in ada-mode.el ada-which-function on why we don't
+    ;; overwrite ff-function-name.
+    (when (not ff-function-name)
+      (setq ff-function-name
+           (concat
+            keyword
+            (when add-body "\\s-+body")
+            "\\s-+"
+            result
+            ada-symbol-end)))
+    result))
+
+(defun ada-wisi-which-function (include-type)
+  "For `ada-which-function'."
+  ;; Fail gracefully and silently, since this could be called from
+  ;; which-function-mode.
+  (let ((parse-begin (max (point-min) (- (point) (/ ada-which-func-parse-size 
2))))
+       (parse-end   (min (point-max) (+ (point) (/ ada-which-func-parse-size 
2)))))
+    (save-excursion
+      (condition-case nil
+         ;; Throwing an error here disables which-function-mode, so don't do 
it.
+         (progn
+           (wisi-validate-cache parse-begin parse-end nil 'navigate)
+           (when (wisi-cache-covers-region parse-begin parse-end 'navigate)
+             (let ((result nil)
+                   (cache (ada-wisi-goto-declaration-start-1 include-type)))
+               (if (null cache)
+                   ;; bob or failed parse
+                   (setq result "")
+
+                 (when (memq (wisi-cache-nonterm cache)
+                             '(generic_package_declaration 
generic_subprogram_declaration))
+                   ;; name is after next statement keyword
+                   (setq cache (wisi-next-statement-cache cache)))
+
+                 ;; add or delete 'body' as needed
+                 (cl-ecase (wisi-cache-nonterm cache)
+                   ((entry_body entry_declaration)
+                    (setq result (ada-wisi-which-function-1 "entry" nil)))
+
+                   (full_type_declaration
+                    (setq result (ada-wisi-which-function-1 "type" nil)))
+
+                   (package_body
+                    (setq result (ada-wisi-which-function-1 "package" nil)))
+
+                   ((package_declaration
+                     package_specification) ;; after 'generic'
+                    (setq result (ada-wisi-which-function-1 "package" t)))
+
+                   (protected_body
+                    (setq result (ada-wisi-which-function-1 "protected" nil)))
+
+                   ((protected_type_declaration single_protected_declaration)
+                    (setq result (ada-wisi-which-function-1 "protected" t)))
+
+                   ((abstract_subprogram_declaration
+                     expression_function_declaration
+                     subprogram_declaration
+                     subprogram_renaming_declaration
+                     generic_subprogram_declaration ;; after 'generic'
+                     null_procedure_declaration)
+                    (setq result (ada-wisi-which-function-1
+                                  (progn (search-forward-regexp 
"function\\|procedure")(match-string 0))
+                                  nil))) ;; no 'body' keyword in subprogram 
bodies
+
+                   (subprogram_body
+                    (setq result (ada-wisi-which-function-1
+                                  (progn (search-forward-regexp 
"function\\|procedure")(match-string 0))
+                                  nil)))
+
+                   ((single_task_declaration task_type_declaration)
+                    (setq result (ada-wisi-which-function-1 "task" t)))
+
+
+                   (task_body
+                    (setq result (ada-wisi-which-function-1 "task" nil)))
+                   ))
+               result)))
+       (error "")))
+    ))
+
+(cl-defstruct (ada-wisi-parser (:include wisi-process--parser))
+  ;; no new slots
+  )
+
+(cl-defmethod wisi-parse-format-language-options ((_parser ada-wisi-parser))
+  (format "%d %d %d %d %d %d %d %d %d %d %d %d %d"
+         ada-indent
+         ada-indent-broken
+         (if ada-indent-comment-col-0 1 0)
+         (if ada-indent-comment-gnat 1 0)
+         ada-indent-label
+         ada-indent-record-rel-type
+         ada-indent-renames
+         ada-indent-return
+         ada-indent-use
+         ada-indent-when
+         ada-indent-with
+         (if ada-indent-hanging-rel-exp 1 0)
+         (if ada-end-name-optional 1 0)
+         ))
+
+(defconst ada-wisi-named-begin-regexp
+  "\\bfunction\\b\\|\\bpackage\\b\\|\\bprocedure\\b\\|\\btask\\b"
+  )
+
+(defconst ada-wisi-partial-begin-regexp
+  (concat "\\bbegin\\b\\|\\bdeclare\\b\\|"
+         ada-wisi-named-begin-regexp
+         "\\|\\bend;\\|\\bend " ada-name-regexp ";"))
+
+(defconst ada-wisi-partial-end-regexp
+  (concat ada-wisi-partial-begin-regexp
+         "\\|;"))
+
+(defun ada-wisi-find-begin ()
+  "Starting at current point, search backward for a parse start point."
+
+  ;; There is a trade-off in deciding where to start parsing for indent. If we 
have:
+  ;;
+  ;; procedure ...
+  ;; is
+  ;;
+  ;; and are inserting a new line after 'is', we need to include
+  ;; 'is' in the parse to see the indent. On the other hand, if we
+  ;; have:
+  ;;
+  ;;    ...
+  ;;    end;
+  ;; begin
+  ;;    Foo;
+  ;;
+  ;; Inserting new line after 'Foo;'; if we include 'begin', there
+  ;; is no error (begin starts a statement), and the indent is
+  ;; computed incorrectly.
+  ;;
+  ;; This is handled by the set of keywords in
+  ;; ada-wisi-partial-begin-regexp.
+  (cond
+   ((wisi-search-backward-skip
+     ada-wisi-partial-begin-regexp
+     (lambda () (or (ada-in-string-or-comment-p)
+                   (looking-back "access " (line-beginning-position)))))
+     ;; "access" rejects subprobram access parameters; 
test/ada_mode-recover_partial_20.adb
+
+    (let ((found (match-string 0))
+         cache)
+      (cond
+       ((and (>= (length found) 3)
+            (string-equal "end" (substring found 0 3)))
+       (match-end 0))
+
+       (t
+       (setq cache (wisi-get-cache (point)))
+       (when cache
+         ;; This distinguishes 'begin' as a statement start from
+         ;; 'begin' following 'declare', 'procedure' etc.  We don't
+         ;; force a parse to get this; the user may choose to do so.
+         (wisi-goto-start cache))
+       (point))
+       )))
+
+   (t
+    (point-min))
+   ))
+
+(defun ada-wisi-find-end ()
+  "Starting at current point, search forward for a reasonable parse end point."
+  (forward-comment (point-max)) ;; get past any current comments
+  (forward-line 1) ;; contain at least some code (see 
ada_mode-partial_parse.adb 'blank line before "end"')
+
+  (let ((start (point))
+       match
+       (end-cand nil))
+
+    (while (not end-cand)
+      (if (search-forward-regexp ada-wisi-partial-end-regexp nil 1) ;; moves 
to eob if not found
+         (unless (or (ada-in-string-or-comment-p)
+                     (ada-in-paren-p))
+           (setq match t)
+           (setq end-cand (point)))
+
+       ;; No reasonable end point found (maybe a missing right
+       ;; paren); return line after start for minimal parse, compute
+       ;; indent for line containing start.
+       (setq match nil)
+       (goto-char start)
+       (setq end-cand (line-end-position 2)))
+      )
+
+    (when (and match
+              (not (string-equal ";" (match-string 0))))
+      (setq end-cand (match-beginning 0)))
+
+    end-cand))
+
+(defun ada-wisi-find-matching-end ()
+  "Starting at current point, search forward for a matching end.
+Point must have been set by `ada-wisi-find-begin'."
+  (let (end-regexp)
+    ;; Point is at bol
+    (back-to-indentation)
+    (when (looking-at ada-wisi-named-begin-regexp)
+      (skip-syntax-forward "ws")
+      (skip-syntax-forward " ")
+      (when (looking-at "body\\|type")
+       (goto-char (match-end 0))
+       (skip-syntax-forward " "))
+      (setq end-regexp
+           (concat "end +"
+                   (buffer-substring-no-properties
+                    (point)
+                    (progn
+                      (skip-syntax-forward "ws._")
+                      (point)))
+                   ";"))
+      (if (search-forward-regexp end-regexp nil t)
+         (progn
+           (while (and (ada-in-string-or-comment-p)
+                       (search-forward-regexp end-regexp nil t)))
+           (point))
+
+       ;; matching end not found
+       nil)
+      )))
+
+(cl-defmethod wisi-parse-expand-region ((_parser ada-wisi-parser) begin end)
+  (let (begin-cand end-cand result)
+    (save-excursion
+      (goto-char begin)
+
+      (setq begin-cand (ada-wisi-find-begin))
+      (if (= begin-cand (point-min)) ;; No code between BEGIN and bob
+         (progn
+           (goto-char end)
+           (setq result (cons begin-cand (ada-wisi-find-end))))
+
+       (setq end-cand (ada-wisi-find-matching-end))
+       (if (and end-cand
+                (>= end-cand end))
+           (setq result (cons begin-cand end-cand))
+         (goto-char end)
+         (setq result (cons begin-cand (ada-wisi-find-end))))
+
+       ))
+    result))
+
+(cl-defmethod wisi-parse-adjust-indent ((_parser ada-wisi-parser) indent 
repair)
+  (cond
+   ((or (wisi-list-memq (wisi--parse-error-repair-inserted repair) '(BEGIN IF 
LOOP))
+       (wisi-list-memq (wisi--parse-error-repair-deleted repair) '(END)))
+    ;; Error token terminates the block containing the start token
+    (- indent ada-indent))
+
+   ((equal '(CASE IS) (wisi--parse-error-repair-inserted repair))
+        (- indent (+ ada-indent ada-indent-when)))
+
+   ((equal '(END CASE SEMICOLON) (wisi--parse-error-repair-inserted repair))
+        (+ indent (+ ada-indent ada-indent-when)))
+
+   (t indent)
+   ))
+
+(defvar ada-parser nil) ;; declared, set in ada-mode.el for parser detection
+
+(defun ada-wisi-setup ()
+  "Set up a buffer for parsing Ada files with wisi."
+  (add-hook 'ada-fix-error-hook #'ada-wisi-fix-error)
+
+  (wisi-setup
+   :indent-calculate '(ada-wisi-comment)
+   :post-indent-fail 'ada-wisi-post-parse-fail
+   :parser
+   (wisi-process-parse-get
+    (make-ada-wisi-parser
+     :label "Ada"
+     :language-protocol-version ada-wisi-language-protocol-version
+     :exec-file ada-process-parse-exec
+     :exec-opts ada-process-parse-exec-opts
+     :face-table ada-process-face-table
+     :token-table ada-process-token-table
+     :repair-image ada-process-repair-image)))
+
+  (set (make-local-variable 'comment-indent-function) 'wisi-comment-indent)
+
+  (add-hook 'hack-local-variables-hook 'ada-wisi-post-local-vars nil t)
+  )
+
+(defun ada-wisi-post-local-vars ()
+  "See wisi-setup."
+  (setq hack-local-variables-hook (delq 'ada-wisi-post-local-vars 
hack-local-variables-hook))
+
+  (setq wisi-indent-comment-col-0 ada-indent-comment-col-0)
+  )
+
+(add-hook 'ada-mode-hook 'ada-wisi-setup)
+
+(setq ada-fix-context-clause 'ada-wisi-context-clause)
+(setq ada-goto-declaration-end 'ada-wisi-goto-declaration-end)
+(setq ada-goto-declaration-start 'ada-wisi-goto-declaration-start)
+(setq ada-goto-declarative-region-start 
'ada-wisi-goto-declarative-region-start)
+(setq ada-goto-end 'wisi-goto-statement-end)
+(setq ada-goto-subunit-name 'ada-wisi-goto-subunit-name)
+(setq ada-in-case-expression 'ada-wisi-in-case-expression)
+(setq ada-in-paramlist-p 'ada-wisi-in-paramlist-p)
+(setq ada-indent-statement 'wisi-indent-statement)
+(setq ada-make-subprogram-body 'ada-wisi-make-subprogram-body)
+(setq ada-on-context-clause 'ada-wisi-on-context-clause)
+(setq ada-reset-parser 'wisi-reset-parser)
+(setq ada-show-parse-error 'wisi-show-parse-error)
+(setq ada-which-function 'ada-wisi-which-function)
+
+(provide 'ada-wisi)
+;; end of file
diff --git a/packages/ada-mode/ada.wy b/packages/ada-mode/ada.wy
index 912be15..dcdd709 100644
--- a/packages/ada-mode/ada.wy
+++ b/packages/ada-mode/ada.wy
@@ -38,7 +38,6 @@
 ;; see wisi.el for discussion of using the wisi parser for an
 ;; indentation engine.
 
-%generate LALR elisp elisp
 %generate LALR Ada_Emacs re2c Process
 %generate LR1 Ada_Emacs text_rep re2c Process
 
@@ -154,20 +153,17 @@
 ;; this (sigh).
 %token <punctuation> TICK_1 "'"
 
-%if lexer = re2c
-%token <punctuation> TICK_2 %[ "'" / 
"('"([\x20-\U0010FFFF]|GNAT_Char_Coding)"'" ]%
-%end if
+%token <regexp> TICK_2
+    %[ "'" / "('"([\x20-\U0010FFFF]|GNAT_Char_Coding)"'" ]%
+  "'"
 
-%if lexer = elisp
-%token <number> NUMERIC_LITERAL ada-wisi-number-p
-%end if
-%if lexer = re2c
 ;; This regexp allows a lot of things that are not Ada numeric
 ;; literals, but it's faster than a strictly conforming regexp. For
 ;; non-based literals, force a trailing integer so (1..Length) is
 ;; parsed correctly.
-%token <number> NUMERIC_LITERAL %[ 
([0-9])|([0-9][0-9eE._-]*[0-9])|([0-9]+"#"[0-9a-fA-F._-]+"#") ]%
-%end if
+%token <regexp> NUMERIC_LITERAL
+    %[ ([0-9])|([0-9][0-9eE._-]*[0-9])|([0-9]+"#"[0-9a-fA-F._-]+"#") ]%
+  "1234567890"
 
 ;; non_grammar are not seen by the elisp lexer, but are needed by the re2c 
lexer
 %non_grammar <non-reporting> WHITESPACE %[ [ \t]+ ]%
@@ -176,16 +172,22 @@
 %non_grammar <new-line> NEW_LINE %[ [\x0a]|[\x0d][\x0a] ]%
 
 ;; Treat Ada comments, gnatprep preprocessor lines, and skeleton
-;; placeholders as comments. x04 is EOF.
-%non_grammar <comment> COMMENT %[ 
(("--"|"#if"|"#elsif"|"#else"|"#end")[^\n\x04]*)|("{"[^}]*"}") ]%
+;; placeholders as comments. Also terminate placeholder on newline,
+;; EOF, to handle missing }. x04 is EOF.
+%non_grammar <comment> COMMENT %[ 
(("--"|"#if"|"#elsif"|"#else"|"#end")[^\n\x04]*)|("{"[^}\n\x04]*[}\n\x04]) ]%
 
 ;; '$' for gnatprep symbols.
 %token <symbol> IDENTIFIER
     %[ 
([$a-zA-Z\x80-\U0010FFFF]|GNAT_Char_Coding)([0-9a-zA-Z_\x80-\U0010FFFF]|GNAT_Char_Coding)*
 ]%
+  "A_Bogus_Identifier"
 
-%token <string-double> STRING_LITERAL %[ 
(["]([\x20-\x21\x23-\U0010FFFF]|GNAT_Char_Coding)*["])+ ]%
+%token <string-double> STRING_LITERAL
+    %[ (["]([\x20-\x21\x23-\U0010FFFF]|GNAT_Char_Coding)*["])+ ]%
+  '""'
 
-%token <string-single> CHARACTER_LITERAL %[ 
"'"([\x20-\U0010FFFF]|GNAT_Char_Coding)"'" ]%
+%token <string-single> CHARACTER_LITERAL
+    %[ "'"([\x20-\U0010FFFF]|GNAT_Char_Coding)"'" ]%
+  "' '"
 
 %start compilation_unit_list
 
@@ -266,9 +268,8 @@
 ;; Minimal_Complete.
 %mckenzie_cost_delete RIGHT_PAREN 1
 
-;; test/ada_mode-recover_29.adb requires 30_000
-;; test/ada_mode-recover_partial_02_lr1.adb requires 45_000
-%mckenzie_enqueue_limit 45_000
+;; test/ada_mode-recover_partial_02_lr1.adb requires 45_000; wisitoken got 30% 
faster
+%mckenzie_enqueue_limit 58_000
 
 ;; 4 required for test/ada_mode-recover_match_names.adb.
 %mckenzie_check_limit 4
@@ -282,12 +283,12 @@
 ;; known conflicts that are resolved by generalized LALR parser
 %conflict REDUCE/REDUCE in state abstract_limited_opt, 
abstract_limited_synchronized_opt on token NEW
 %conflict REDUCE/REDUCE in state actual_parameter_part, actual_parameter_part  
on token RIGHT_PAREN
+%conflict REDUCE/REDUCE in state aggregate, aggregate on token RIGHT_PAREN ( 
580)
 %conflict REDUCE/REDUCE in state association_opt, expression_opt on token 
RIGHT_PAREN
 %conflict REDUCE/REDUCE in state derived_type_definition, 
derived_type_definition  on token WITH
 %conflict REDUCE/REDUCE in state full_type_declaration, full_type_declaration  
on token NEW
 %conflict REDUCE/REDUCE in state identifier_list, name on token COMMA
 %conflict REDUCE/REDUCE in state name, direct_name on token USE
-%conflict REDUCE/REDUCE in state paren_expression, paren_expression  on token 
RIGHT_PAREN
 %conflict REDUCE/REDUCE in state primary, subtype_indication on token COMMA
 %if parser = LALR
 %conflict REDUCE/REDUCE in state primary, subtype_indication on token 
EQUAL_GREATER
@@ -299,7 +300,7 @@
 %conflict SHIFT/REDUCE in state accept_statement, accept_statement  on token 
LEFT_PAREN
 %conflict SHIFT/REDUCE in state aspect_clause, name on token USE
 %conflict SHIFT/REDUCE in state association_opt, name on token EQUAL_GREATER
-%conflict SHIFT/REDUCE in state attribute_reference, attribute_designator  on 
token TICK_1
+%conflict SHIFT/REDUCE in state attribute_designator, attribute_designator  on 
token LEFT_PAREN
 %conflict SHIFT/REDUCE in state block_label, identifier_list  on token COLON
 %conflict SHIFT/REDUCE in state compilation_unit_list, compilation_unit_list  
on token FOR
 %conflict SHIFT/REDUCE in state declaration, declaration  on token CONSTANT
@@ -310,7 +311,6 @@
 %conflict SHIFT/REDUCE in state generic_renaming_declaration, 
generic_formal_part  on token PACKAGE
 %conflict SHIFT/REDUCE in state generic_renaming_declaration, 
generic_formal_part  on token PROCEDURE
 %conflict SHIFT/REDUCE in state membership_choice_list, relation  on token BAR
-%conflict SHIFT/REDUCE in state name, attribute_designator  on token LEFT_PAREN
 %conflict SHIFT/REDUCE in state null_procedure_declaration, 
subprogram_specification on token IS
 %conflict SHIFT/REDUCE in state object_renaming_declaration, identifier_list  
on token COLON
 %conflict SHIFT/REDUCE in state package_body, package_body  on token IS
@@ -322,14 +322,9 @@
 %conflict SHIFT/REDUCE in state relation_or_else_list, expression  on token OR
 %conflict SHIFT/REDUCE in state relation_or_list, expression  on token OR
 %conflict SHIFT/REDUCE in state relation_xor_list, expression  on token XOR
-%conflict SHIFT/REDUCE in state selected_component, attribute_designator  on 
token DOT
 %conflict SHIFT/REDUCE in state task_body, task_body  on token IS
 %conflict SHIFT/REDUCE in state wisitoken_accept, wisitoken_accept  on token 
FOR
 
-%if lexer = re2c
-%conflict SHIFT/REDUCE in state attribute_reference, attribute_designator  on 
token TICK_2
-%end if
-
 ;;;; grammar rules
 ;;
 ;; The actions cache information in keywords that are significant for
@@ -391,9 +386,7 @@ accept_statement
   : ACCEPT IDENTIFIER actual_parameter_part_opt parameter_profile_opt DO 
handled_sequence_of_statements END identifier_opt SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 5 motion 9 statement-end])
-      (wisi-containing-action 1 4) ;; for goto-declaration-start
-      (wisi-containing-action 1 6) ;; ""
-      (wisi-motion-action [1 5 [6 EXCEPTION WHEN] 9])
+      (wisi-motion-action [1 5 [6 WHEN] 9])
       (wisi-face-apply-action [2 nil font-lock-function-name-face 8 nil 
font-lock-function-name-face])
       (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken [nil ada-indent] [ada-indent ada-indent] nil nil nil])))%
     %((wisi-match-names 2 8))%
@@ -401,7 +394,6 @@ accept_statement
   | ACCEPT IDENTIFIER actual_parameter_part_opt parameter_profile_opt SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-containing-action 1 4) ;; for goto-declaration-start
       (wisi-face-apply-action [2 nil font-lock-function-name-face])
       (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil])))%
   ;
@@ -501,7 +493,6 @@ assignment_statement
   : name COLON_EQUAL expression_opt SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 4 statement-end])
-      (wisi-containing-action 1 3)
       (wisi-indent-action [nil
                            ada-indent-broken
                            (wisi-hanging
@@ -553,11 +544,10 @@ association_list
 asynchronous_select
   : SELECT triggering_alternative THEN ABORT sequence_of_statements_opt END 
SELECT SEMICOLON
     %((progn
-      (wisi-statement-action [1 statement-start 3 motion 8 statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 5)
-      (wisi-indent-action [nil [ada-indent ada-indent] [nil ada-indent-broken] 
ada-indent-broken
-                           [ada-indent ada-indent] nil nil nil])))%
+        (wisi-statement-action [1 statement-start 3 motion 8 statement-end])
+        (wisi-motion-action [1 3 8])
+        (wisi-indent-action [nil [ada-indent ada-indent] [nil 
ada-indent-broken] ada-indent-broken
+                                 [ada-indent ada-indent] nil nil nil])))%
   ;
 
 at_clause
@@ -568,8 +558,8 @@ at_clause
 attribute_reference : name tick attribute_designator ;
 
 attribute_designator
-;; IDENTIFIER LEFT_PAREN expression RIGHT_PAREN is redundant with name
-  : name
+  : IDENTIFIER LEFT_PAREN expression RIGHT_PAREN
+  | IDENTIFIER
   | ACCESS
   | DELTA
   | DIGITS
@@ -597,17 +587,14 @@ block_label_opt
 block_statement
   : block_label_opt DECLARE declarative_part_opt BEGIN 
handled_sequence_of_statements END identifier_opt SEMICOLON
     %((progn
-      (wisi-statement-action [1 statement-start 2 misc 4 motion 8 
statement-end])
-      (wisi-containing-action 2 3)
-      (wisi-containing-action 2 5)
-      (wisi-motion-action [2 4 [5 EXCEPTION WHEN] 8])
+      (wisi-statement-action [1 statement-start 2 motion 4 motion 8 
statement-end])
+      (wisi-motion-action [2 4 [5 WHEN] 8])
       (wisi-indent-action [nil nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil nil nil])))%
     %((wisi-match-names 1 7))%
   | block_label_opt BEGIN handled_sequence_of_statements END identifier_opt 
SEMICOLON
     %((progn
-      (wisi-statement-action [1 statement-start 2 misc 6 statement-end])
-      (wisi-containing-action 2 3)
-      (wisi-motion-action [2 [3 EXCEPTION WHEN] 6])
+      (wisi-statement-action [1 statement-start 2 motion 6 statement-end])
+      (wisi-motion-action [2 [3 WHEN] 6])
       (wisi-indent-action [nil nil [ada-indent ada-indent] nil nil nil])))%
     %((wisi-match-names 1 5))%
   ;
@@ -619,7 +606,10 @@ body_stub
 
 case_expression
   : CASE expression_opt IS case_expression_alternative_list
-    %((wisi-indent-action [nil ada-indent-broken nil ada-indent-when]))%
+    %((progn
+      (wisi-statement-action [1 motion])
+      (wisi-motion-action [1 4])
+      (wisi-indent-action [nil ada-indent-broken nil ada-indent-when])))%
   ;
 
 case_expression_alternative
@@ -628,23 +618,26 @@ case_expression_alternative
  ;; when A =>
  ;;    J = 4
  ;;      or else M, --  test case from Piotr Trojanek
-    %((wisi-indent-action [nil ada-indent-broken ada-indent-broken
+    %((progn
+      (wisi-statement-action [1 motion])
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken
                            (wisi-hanging (wisi-anchored% 1 ada-indent)
-                                         (wisi-anchored% 1 (+ ada-indent 
ada-indent-broken)))]))%
+                                         (wisi-anchored% 1 (+ ada-indent 
ada-indent-broken)))])))%
   ;
 
 case_expression_alternative_list
   : case_expression_alternative_list COMMA case_expression_alternative
-    %((wisi-indent-action [nil [nil ada-indent-when] nil]))%
+    %((progn
+        (wisi-motion-action [1 3])
+        (wisi-indent-action [nil [nil ada-indent-when] nil])))%
   | case_expression_alternative
   ;
 
 case_statement
   : CASE expression_opt IS case_statement_alternative_list END CASE SEMICOLON
     %((progn
-      (wisi-statement-action [1 statement-start 3 motion 7 statement-end])
-      (wisi-containing-action 1 4)
-      (wisi-motion-action [1 [4 WHEN] 7])
+      (wisi-statement-action [1 statement-start 7 statement-end])
+      (wisi-motion-action [1 4 7])
       (wisi-indent-action [nil ada-indent-broken nil [ada-indent-when 
ada-indent-when] nil nil nil])))%
   ;
 
@@ -661,6 +654,7 @@ case_statement_alternative
 ;; inserts an empty when =>
 case_statement_alternative_list
   : case_statement_alternative_list case_statement_alternative
+    %((wisi-motion-action [1 2]))%
   | case_statement_alternative
   ;
 
@@ -710,14 +704,12 @@ component_declaration
   : identifier_list COLON component_definition COLON_EQUAL expression_opt 
aspect_specification_opt SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 3) ;; for goto-declaration-start
       (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken
                                (wisi-anchored% 4 ada-indent-broken)
                                ada-indent-broken nil])))%
   | identifier_list COLON component_definition aspect_specification_opt 
SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-containing-action 1 3) ;; for goto-declaration-start
       (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil])))%
   ;
 
@@ -760,10 +752,9 @@ compound_statement
 conditional_entry_call
   : SELECT entry_call_alternative ELSE sequence_of_statements_opt END SELECT 
SEMICOLON
     %((progn
-      (wisi-statement-action [1 statement-start 3 motion 7 statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
-      (wisi-indent-action [nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil nil nil])))%
+        (wisi-statement-action [1 statement-start 3 motion 7 statement-end])
+        (wisi-motion-action [1 3 7])
+        (wisi-indent-action [nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil nil nil])))%
   ;
 
 conditional_quantified_expression
@@ -805,7 +796,6 @@ declaration
   | identifier_list COLON CONSTANT COLON_EQUAL expression_opt SEMICOLON ;; 
number_declaration
     %((progn
       (wisi-statement-action [1 statement-start 6 statement-end])
-      (wisi-containing-action 1 5)
       (wisi-indent-action [(wisi-hanging nil ada-indent-broken) 
ada-indent-broken ada-indent-broken ada-indent-broken
                            (wisi-anchored% 4 ada-indent-broken) nil])))%
   | object_declaration
@@ -913,13 +903,14 @@ discriminant_specification_list
 elsif_expression_item
   : ELSIF expression_opt THEN expression_opt
     %((progn
-      (wisi-statement-action [1 motion 3 motion])
-      (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent])))%
- ;; motion set in if_expression
+        (wisi-statement-action [1 motion 3 motion])
+        (wisi-motion-action [1 3])
+        (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent])))%
   ;
 
 elsif_expression_list
   : elsif_expression_list elsif_expression_item
+    %((wisi-motion-action [1 2]))%
   | elsif_expression_item
   ;
 
@@ -927,12 +918,13 @@ elsif_statement_item
   : ELSIF expression_opt THEN sequence_of_statements_opt
     %((progn
       (wisi-statement-action [1 motion 3 motion])
+      (wisi-motion-action [1 3])
       (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
[ada-indent ada-indent]])))%
- ;; motion set in if_statement
   ;
 
 elsif_statement_list
   : elsif_statement_list elsif_statement_item
+    %((wisi-motion-action [1 2]))%
   | elsif_statement_item
   ;
 
@@ -942,10 +934,7 @@ entry_body
     %((progn
         (wisi-statement-action [1 statement-start 4 motion 6 motion 8 motion 
12 statement-end])
         (wisi-name-action 2)
-        (wisi-containing-action 1 3) ;; for goto-declaration-start
-        (wisi-containing-action 1 7)
-        (wisi-containing-action 1 9)
-        (wisi-motion-action [1 4 6 8 12])
+        (wisi-motion-action [1 4 6 8 [9 WHEN] 12])
         (wisi-face-apply-action [2 nil font-lock-function-name-face 11 nil 
font-lock-function-name-face])
 
         ;; test/ada_mode-nominal.adb
@@ -979,17 +968,15 @@ entry_declaration
   : overriding_indicator_opt ENTRY IDENTIFIER LEFT_PAREN 
discrete_subtype_definition RIGHT_PAREN
     parameter_profile_opt aspect_specification_opt SEMICOLON
     %((progn
-        (wisi-statement-action [1 statement-start 2 motion 8 statement-end])
+        (wisi-statement-action [1 statement-start 2 statement-override 8 
statement-end])
         (wisi-name-action 3)
-        (wisi-containing-action 2 7) ;; for goto-declaration-start
         (wisi-face-apply-action [3 nil font-lock-function-name-face])
         (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
(wisi-anchored 4 1) (wisi-anchored 4 0)
                                ada-indent-broken nil nil])))%
   | overriding_indicator_opt ENTRY IDENTIFIER parameter_profile_opt 
aspect_specification_opt SEMICOLON
     %((progn
-        (wisi-statement-action [1 statement-start 2 motion 6 statement-end])
+        (wisi-statement-action [1 statement-start 2 statement-override 6 
statement-end])
         (wisi-name-action 3)
-        (wisi-containing-action 2 4) ;; for goto-declaration-start
         (wisi-face-apply-action [3 nil font-lock-function-name-face])
         (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil])))%
   ;
@@ -1045,6 +1032,7 @@ exception_handler
 
 exception_handler_list
   : exception_handler_list exception_handler
+    %((wisi-motion-action [1 2]))%
   | exception_handler
   | pragma_g
   ;
@@ -1081,12 +1069,9 @@ expression_function_declaration
   : overriding_indicator_opt function_specification IS paren_expression 
aspect_specification_opt SEMICOLON
  ;; IS does not start a block, so it is not "motion".
  ;;
- ;; We override the cache on "function_specification", so
- ;; wisi-statement-action will handle an empty
- ;; "overriding_indicator_opt" correctly.
     %((progn
       (wisi-statement-action [1 statement-start 2 statement-override 6 
statement-end])
-      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken nil 
nil])))%
+      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil])))%
   ;
 
 extended_return_object_declaration
@@ -1106,8 +1091,7 @@ extended_return_statement
   : RETURN extended_return_object_declaration_opt DO 
handled_sequence_of_statements END RETURN SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 3 motion 7 statement-end])
-      (wisi-containing-action 1 4)
-      (wisi-motion-action [1 3 7])
+      (wisi-motion-action [1 3 [4 WHEN] 7])
       (wisi-indent-action [[nil ada-indent] ada-indent-broken nil [ada-indent 
ada-indent] nil nil nil])))%
   | RETURN extended_return_object_declaration SEMICOLON
     %((progn
@@ -1188,7 +1172,6 @@ formal_type_declaration
  ;; formal_complete_type_declaration
     %((progn
       (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 5) ;; for goto-declaration-start
       (wisi-face-apply-action [2 nil font-lock-type-face])
       (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken
                              ada-indent-broken ada-indent-broken nil])))%
@@ -1254,7 +1237,6 @@ full_type_declaration
     %((progn
         (wisi-statement-action [1 statement-start 7 statement-end])
         (wisi-name-action 2)
-        (wisi-containing-action 1 5) ;; for goto-declaration-start
         (wisi-face-apply-action [2 nil font-lock-type-face])
 
         ;; FIXME: indentation of comment after 'is' (and 'with' in
@@ -1271,7 +1253,6 @@ function_specification
     %((progn
         (wisi-statement-action [1 statement-start])
         (wisi-name-action 2)
-        (wisi-containing-action 1 3) ;; for goto-declaration-start
         (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-function-name-face])
         (wisi-indent-action [nil ada-indent-broken ada-indent-broken])))%
     %((wisi-propagate-name 2))%
@@ -1326,14 +1307,14 @@ generic_instantiation
         (wisi-indent-action [nil ada-indent-broken nil ada-indent-broken 
ada-indent-broken ada-indent-broken nil])))%
   | overriding_indicator_opt PROCEDURE name IS NEW name 
aspect_specification_opt SEMICOLON
     %((progn
-        (wisi-statement-action [1 statement-start 2 motion 8 statement-end])
+        (wisi-statement-action [1 statement-start 2 statement-override 8 
statement-end])
         (wisi-name-action 3)
         (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-function-name-face
                                    6 font-lock-function-name-face 
font-lock-function-name-face])
         (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken nil])))%
   | overriding_indicator_opt FUNCTION name IS NEW name 
aspect_specification_opt SEMICOLON
     %((progn
-        (wisi-statement-action [1 statement-start 2 motion 8 statement-end])
+        (wisi-statement-action [1 statement-start 2 statement-override 8 
statement-end])
         (wisi-name-action 3)
         (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-function-name-face
                                    6 font-lock-function-name-face 
font-lock-function-name-face])
@@ -1344,7 +1325,7 @@ generic_instantiation
 generic_package_declaration
   : generic_formal_part package_specification SEMICOLON
     %((progn
-      (wisi-statement-action [1 statement-start 2 motion 3 statement-end])
+      (wisi-statement-action [1 statement-start 3 statement-end])
       (wisi-motion-action [1 2 3])
       (wisi-indent-action [[nil ada-indent] nil nil])))%
   ;
@@ -1378,7 +1359,7 @@ generic_renaming_declaration
 generic_subprogram_declaration
   : generic_formal_part subprogram_specification aspect_specification_opt 
SEMICOLON
     %((progn
-      (wisi-statement-action [1 statement-start 2 motion 4 statement-end])
+      (wisi-statement-action [1 statement-start 2 statement-override 4 
statement-end])
       (wisi-motion-action [1 2 4])))%
   ;
 
@@ -1392,10 +1373,9 @@ goto_label
 handled_sequence_of_statements
   : sequence_of_statements_opt EXCEPTION exception_handler_list_opt
     %((progn
-      (wisi-statement-action [2 motion])
-      (wisi-indent-action [[nil nil]
-                           (- ada-indent)
-                           [(- ada-indent-when ada-indent) (- ada-indent-when 
ada-indent)]])))%
+        (wisi-indent-action [[nil nil]
+                             (- ada-indent)
+                             [(- ada-indent-when ada-indent) (- 
ada-indent-when ada-indent)]])))%
   | sequence_of_statements_opt
   ;
 
@@ -1418,26 +1398,22 @@ identifier_opt
 if_expression
   : IF expression_opt THEN expression_opt elsif_expression_list ELSE 
expression_opt
     %((progn
-      (wisi-statement-action [1 statement-start 3 motion 6 motion])
-      (wisi-containing-action 1 2)
-      (wisi-motion-action [1 3 [5 ELSIF THEN] 6])
+      (wisi-statement-action [1 motion 3 motion 6 motion])
+      (wisi-motion-action [1 3 5 6])
       (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent nil nil ada-indent])))%
   | IF expression_opt THEN expression_opt ELSE expression_opt
     %((progn
-      (wisi-statement-action [1 statement-start 3 motion 5 motion])
-      (wisi-containing-action 1 2)
+      (wisi-statement-action [1 motion 3 motion 5 motion])
       (wisi-motion-action [1 3 5])
       (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent nil ada-indent])))%
   | IF expression_opt THEN expression_opt elsif_expression_list
     %((progn
-      (wisi-statement-action [1 statement-start 3 motion])
-      (wisi-containing-action 1 2)
-      (wisi-motion-action [1 3 [5 ELSIF THEN]])
+      (wisi-statement-action [1 motion 3 motion])
+      (wisi-motion-action [1 3 5])
       (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent nil])))%
   | IF expression_opt THEN expression_opt
     %((progn
-      (wisi-statement-action [1 statement-start 3 motion])
-      (wisi-containing-action 1 2)
+      (wisi-statement-action [1 motion 3 motion])
       (wisi-motion-action [1 3])
       (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent])))%
   ;
@@ -1447,22 +1423,16 @@ if_statement
     sequence_of_statements_opt END IF SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 3 motion 6 motion 10 
statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
-      (wisi-containing-action 1 5)
-      (wisi-containing-action 1 7)
-      (wisi-motion-action [1 3 [5 ELSIF THEN] 6 10])
-      (wisi-indent-action [nil [(wisi-hanging% ada-indent-broken (* 2 
ada-indent-broken))
-                              ada-indent-broken]
-                             nil
-                             [ada-indent ada-indent] nil nil
-                             [ada-indent ada-indent] nil nil nil])))%
+      (wisi-motion-action [1 3 5 6 10])
+      (wisi-indent-action [nil
+                           [(wisi-hanging% ada-indent-broken (* 2 
ada-indent-broken))
+                            ada-indent-broken]
+                           nil
+                           [ada-indent ada-indent] nil nil
+                           [ada-indent ada-indent] nil nil nil])))%
   | IF expression_opt THEN sequence_of_statements_opt ELSE 
sequence_of_statements_opt END IF SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 3 motion 5 motion 9 
statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
-      (wisi-containing-action 1 6)
       (wisi-motion-action [1 3 5 9])
       (wisi-indent-action [nil [(wisi-hanging% ada-indent-broken (* 2 
ada-indent-broken))
                               ada-indent-broken]
@@ -1472,10 +1442,7 @@ if_statement
   | IF expression_opt THEN sequence_of_statements_opt elsif_statement_list END 
IF SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 3 motion 8 statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
-      (wisi-containing-action 1 5)
-      (wisi-motion-action [1 3 [5 ELSIF THEN] 8])
+      (wisi-motion-action [1 3 5 8])
       (wisi-indent-action [nil [(wisi-hanging% ada-indent-broken (* 2 
ada-indent-broken))
                               ada-indent-broken]
                              nil
@@ -1483,8 +1450,6 @@ if_statement
   | IF expression_opt THEN sequence_of_statements_opt END IF SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 3 motion 7 statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
       (wisi-motion-action [1 3 7])
       (wisi-indent-action [nil [(wisi-hanging% ada-indent-broken (* 2 
ada-indent-broken))
                               ada-indent-broken]
@@ -1584,15 +1549,14 @@ iterator_specification_opt
 loop_statement
   : block_label_opt iteration_scheme LOOP sequence_of_statements_opt END LOOP 
identifier_opt SEMICOLON
     %((progn
-      (wisi-statement-action [1 statement-start 2 misc 3 motion 8 
statement-end])
-      (wisi-containing-action 2 4)
+      (wisi-statement-action [1 statement-start 2 statement-override 3 motion 
8 statement-end])
       (wisi-motion-action [2 3 8])
       (wisi-indent-action [nil nil nil [ada-indent ada-indent] nil nil nil 
nil])))%
     %((wisi-match-names 1 7))%
   | block_label_opt LOOP sequence_of_statements_opt END LOOP identifier_opt 
SEMICOLON
     %((progn
-      (wisi-statement-action [1 statement-start 2 misc 7 statement-end])
-      (wisi-containing-action 2 3)
+      (wisi-statement-action [1 statement-start 2 statement-override 4 motion 
7 statement-end])
+      (wisi-motion-action [2 4 7])
       (wisi-indent-action [nil nil [ada-indent ada-indent] nil nil nil nil])))%
     %((wisi-match-names 1 6))%
   ;
@@ -1674,8 +1638,6 @@ name
  ;;        (A => True,
  ;;         B => True);
     %((progn
-      (wisi-statement-action [1 misc])
-      (wisi-containing-action 1 2)
       (wisi-indent-action [nil (if ada-indent-hanging-rel-exp
                                  (wisi-anchored 1 ada-indent-broken)
                                (wisi-anchored% 1 ada-indent-broken))])))%
@@ -1743,21 +1705,18 @@ object_declaration
     expression_opt aspect_specification_opt SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 9 statement-end])
-      (wisi-containing-action 1 7)
       (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken
                              (wisi-anchored%- 6 ada-indent-broken) 
ada-indent-broken nil])))%
   | identifier_list COLON aliased_opt constant_opt access_definition 
COLON_EQUAL
     expression_opt aspect_specification_opt SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 9 statement-end])
-      (wisi-containing-action 1 5) ;; for goto-declaration-start
       (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken
                              (wisi-anchored% 6 ada-indent-broken) 
ada-indent-broken nil])))%
   | identifier_list COLON aliased_opt constant_opt array_type_definition 
COLON_EQUAL
     expression_opt aspect_specification_opt SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 9 statement-end])
-      (wisi-containing-action 1 5) ;; for goto-declaration-start
       (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken
                              (wisi-anchored% 6 ada-indent-broken) 
ada-indent-broken nil])))%
   | identifier_list COLON aliased_opt constant_opt subtype_indication 
aspect_specification_opt SEMICOLON
@@ -1768,13 +1727,11 @@ object_declaration
   | identifier_list COLON aliased_opt constant_opt access_definition 
aspect_specification_opt SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 5) ;; for goto-declaration-start
       (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
                                ada-indent-broken nil])))%
   | identifier_list COLON aliased_opt constant_opt array_type_definition 
aspect_specification_opt SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 5) ;; for goto-declaration-start
       (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
                                ada-indent-broken nil])))%
   | single_task_declaration
@@ -1793,7 +1750,6 @@ object_renaming_declaration
     %((progn
         (wisi-statement-action [1 statement-start 7 statement-end])
         (wisi-name-action 1)
-        (wisi-containing-action 1 3) ;; for goto-declaration-start
         (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
                                  ada-indent-broken nil])))%
   | IDENTIFIER COLON EXCEPTION RENAMES name aspect_specification_opt SEMICOLON 
;; exception_renaming_declaration
@@ -1821,9 +1777,7 @@ package_body
     %((progn
         (wisi-statement-action [1 statement-start 5 motion 7 motion 11 
statement-end])
         (wisi-name-action 3)
-        (wisi-containing-action 1 6)
-        (wisi-containing-action 1 8)
-        (wisi-motion-action [1 5 7 [8 EXCEPTION WHEN] 11])
+        (wisi-motion-action [1 5 7 [8 WHEN] 11])
         (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-function-name-face
                                    10 font-lock-function-name-face 
font-lock-function-name-face])
         (wisi-indent-action [nil ada-indent-broken ada-indent-broken nil nil 
[ada-indent ada-indent]
@@ -1834,7 +1788,6 @@ package_body
     %((progn
         (wisi-statement-action [1 statement-start 5 motion 9 statement-end])
         (wisi-name-action 3)
-        (wisi-containing-action 1 6)
         (wisi-motion-action [1 5 9])
         (wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-function-name-face
                                    8 font-lock-function-name-face 
font-lock-function-name-face])
@@ -1856,7 +1809,7 @@ package_declaration
   : package_specification SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 2 statement-end])
-      (wisi-motion-action [[1 PRIVATE] 2])))%
+      (wisi-motion-action [1 2])))%
   ;
 
 package_renaming_declaration
@@ -1874,9 +1827,6 @@ package_specification
     %((progn
         (wisi-statement-action [1 statement-start 4 motion 6 motion])
         (wisi-name-action 2)
-        (wisi-containing-action 1 4)
-        (wisi-containing-action 4 5) ;; for goto-declarative-region-start
-        (wisi-containing-action 1 7)
         (wisi-motion-action [1 4 6])
         (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-function-name-face
                                    9 font-lock-function-name-face 
font-lock-function-name-face])
@@ -1887,8 +1837,6 @@ package_specification
     %((progn
       (wisi-statement-action [1 statement-start 4 motion])
       (wisi-name-action 2)
-      (wisi-containing-action 1 4)
-      (wisi-containing-action 4 5) ;; for goto-declarative-region-start
       (wisi-motion-action [1 4])
       (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-function-name-face
                                  7 font-lock-function-name-face 
font-lock-function-name-face])
@@ -1931,27 +1879,22 @@ parameter_specification
 
 parameter_specification_list
   : parameter_specification_list SEMICOLON parameter_specification
-    %((wisi-statement-action [2 motion]))% ;; not integrated with higher level 
motion; just a local stopping point
   | parameter_specification
   ;
 
 paren_expression
   : LEFT_PAREN expression_opt RIGHT_PAREN
- ;;test/ada_mode-parens.ads
- ;; function Expression_Function_1 (V : Integer) return Boolean
- ;;   is ((V = V and then True)
- ;;         or else True);
+    ;;test/ada_mode-parens.ads
+    ;; function Expression_Function_1 (V : Integer) return Boolean
+    ;;   is ((V = V and then True)
+    ;;         or else True);
     %((wisi-indent-action [nil
-                         (wisi-hanging (wisi-anchored 1 1)
-                                       (wisi-anchored 1 (+ 1 
ada-indent-broken)))
-                         (wisi-anchored 1 0)]))%
-
-  | LEFT_PAREN association_list RIGHT_PAREN
-    %((wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 0)]))%
+                           (wisi-hanging (wisi-anchored 1 1)
+                                         (wisi-anchored 1 (+ 1 
ada-indent-broken)))
+                           (wisi-anchored 1 0)]))%
 
- ;; ARM 4.5.7(7), ARM 4.5.8(4) allow ( conditional|quantified_expression ) 
instead of (( ... ))
-  | LEFT_PAREN conditional_quantified_expression RIGHT_PAREN
-    %((wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 0)]))%
+  ;; AI12-0157[1] aggregate instead of (aggregate)
+  | aggregate
   ;
 
 pragma_g
@@ -2024,7 +1967,6 @@ procedure_specification
     %((progn
         (wisi-statement-action [1 statement-start])
         (wisi-name-action 2)
-        (wisi-containing-action 1 3) ;; for goto-declaration-start
         (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-function-name-face])
         (wisi-indent-action [nil ada-indent-broken ada-indent-broken])))%
     %((wisi-propagate-name 2))%
@@ -2042,7 +1984,6 @@ protected_body
     %((progn
         (wisi-statement-action [1 statement-start 5 motion 9 statement-end])
         (wisi-name-action 3)
-        (wisi-containing-action 1 6)
         (wisi-motion-action [1 5 9])
         (wisi-face-apply-action [3 nil font-lock-type-face 8 nil 
font-lock-type-face])
         (wisi-indent-action [nil ada-indent-broken ada-indent-broken nil nil 
ada-indent nil nil nil])))%
@@ -2101,9 +2042,8 @@ protected_type_declaration
   : PROTECTED TYPE IDENTIFIER discriminant_part_opt aspect_specification_opt IS
     NEW interface_list WITH protected_definition SEMICOLON
     %((progn
-        (wisi-statement-action [1 statement-start 6 motion 9 motion 11 
statement-end])
+        (wisi-statement-action [1 statement-start 6 motion 11 statement-end])
         (wisi-name-action 3)
-        (wisi-containing-action 1 10)
         (wisi-motion-action [1 6 [10 PRIVATE] 11])
         (wisi-face-apply-action [3 nil font-lock-type-face])
         (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil nil
@@ -2113,7 +2053,6 @@ protected_type_declaration
     %((progn
         (wisi-statement-action [1 statement-start 6 motion 8 statement-end])
         (wisi-name-action 3)
-        (wisi-containing-action 1 7)
         (wisi-motion-action [1 6 [7 PRIVATE] 8])
         (wisi-face-apply-action [3 nil font-lock-type-face])
         (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil [nil ada-indent] nil nil])))%
@@ -2147,8 +2086,7 @@ raise_expression
 raise_statement
   : RAISE name WITH expression_opt SEMICOLON
     %((progn
-      (wisi-statement-action [1 statement-start 4 motion 5 statement-end])
-      (wisi-containing-action 1 4)
+      (wisi-statement-action [1 statement-start 5 statement-end])
       ;; test/ada_mode-nominal.adb
       ;; raise Constraint_Error with
       ;;   "help " &
@@ -2305,14 +2243,12 @@ selective_accept
   : SELECT select_alternative_list_opt ELSE sequence_of_statements_opt END 
SELECT SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 3 motion 7 statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
-      (wisi-motion-action [1 [2 OR WHEN] 3 7])
+      (wisi-motion-action [1 [2 OR] 3 7])
       (wisi-indent-action [[nil ada-indent] [nil ada-indent] nil [ada-indent 
ada-indent] nil nil nil])))%
   | SELECT select_alternative_list_opt END SELECT SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-motion-action [1 [2 OR WHEN] 5])
+      (wisi-motion-action [1 [2 OR] 5])
       (wisi-indent-action [[nil ada-indent] [nil ada-indent] nil nil nil])))%
   ;
 
@@ -2340,8 +2276,9 @@ select_alternative
 select_alternative_list
   : select_alternative_list OR select_alternative
     %((progn
-      (wisi-statement-action [2 motion])
-      (wisi-indent-action [nil nil ada-indent])))%
+        (wisi-statement-action [2 motion])
+        (wisi-motion-action [[1 OR] 2])
+        (wisi-indent-action [nil nil ada-indent])))%
   | select_alternative
     %((wisi-indent-action [ada-indent]))%
   ;
@@ -2384,7 +2321,6 @@ simple_return_statement
  ;;   2.0;
     %((progn
       (wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-containing-action 1 2)
       (wisi-indent-action [nil ada-indent-broken nil])))%
   ;
 
@@ -2414,7 +2350,6 @@ single_protected_declaration
     %((progn
         (wisi-statement-action [1 statement-start 4 motion 7 motion 9 
statement-end])
         (wisi-name-action 2)
-        (wisi-containing-action 1 8)
         (wisi-motion-action [1 4 7 [8 PRIVATE] 9])
         (wisi-face-apply-action [2 nil font-lock-type-face])
         (wisi-indent-action [nil ada-indent-broken nil nil ada-indent-broken 
ada-indent-broken ada-indent-broken nil
@@ -2425,7 +2360,6 @@ single_protected_declaration
     %((progn
         (wisi-statement-action [1 statement-start 4 motion 6 statement-end])
         (wisi-name-action 2)
-        (wisi-containing-action 1 5)
         (wisi-motion-action [1 4 [5 PRIVATE] 6])
         (wisi-face-apply-action [2 nil font-lock-type-face])
         (wisi-indent-action [nil ada-indent-broken nil [nil ada-indent] nil 
nil])))%
@@ -2435,9 +2369,8 @@ single_protected_declaration
 single_task_declaration
   : TASK IDENTIFIER aspect_specification_opt IS NEW interface_list WITH 
task_definition END identifier_opt SEMICOLON
     %((progn
-        (wisi-statement-action [1 statement-start 4 motion 7 motion 11 
statement-end])
+        (wisi-statement-action [1 statement-start 4 motion 11 statement-end])
         (wisi-name-action 2)
-        (wisi-containing-action 1 8)
         (wisi-motion-action [1 4 [8 PRIVATE] 11])
         (wisi-face-apply-action [2 nil font-lock-type-face 9 nil 
font-lock-type-face])
         (wisi-indent-action [nil ada-indent-broken nil nil ada-indent-broken 
ada-indent-broken ada-indent-broken nil
@@ -2448,7 +2381,6 @@ single_task_declaration
     %((progn
         (wisi-statement-action [1 statement-start 4 motion 8 statement-end])
         (wisi-name-action 2)
-        (wisi-containing-action 1 5)
         (wisi-motion-action [1 4 [5 PRIVATE] 8])
         (wisi-face-apply-action [2 nil font-lock-type-face 6 nil 
font-lock-type-face])
         (wisi-indent-action [nil ada-indent-broken nil [nil ada-indent] nil 
nil nil nil])))%
@@ -2473,10 +2405,7 @@ subprogram_body
     BEGIN handled_sequence_of_statements END name_opt SEMICOLON
     %((progn
       (wisi-statement-action [1 statement-start 2 statement-override 4 motion 
6 motion 10 statement-end])
-      (wisi-containing-action 2 4)
-      (wisi-containing-action 4 5) ;; for goto_declarative_region_start
-      (wisi-containing-action 2 7)
-      (wisi-motion-action [1 [2 FUNCTION PROCEDURE] 4 6 10])
+      (wisi-motion-action [1 2 4 6 [7 WHEN] 10])
       (wisi-face-apply-action [9 font-lock-function-name-face 
font-lock-function-name-face])
       (wisi-indent-action [nil [nil ada-indent] nil nil [ada-indent ada-indent]
                              nil [ada-indent ada-indent] nil ada-indent-broken 
nil])))%
@@ -2546,7 +2475,7 @@ subtype_indication
 subunit
   : SEPARATE LEFT_PAREN name RIGHT_PAREN proper_body
     %((progn
-      (wisi-statement-action [1 statement-start 5 motion])
+      (wisi-statement-action [1 statement-start 5 statement-override])
       (wisi-indent-action [nil ada-indent-broken (wisi-anchored 2 1) 
(wisi-anchored 2 0) nil])))%
   ;
 
@@ -2556,9 +2485,7 @@ task_body
     %((progn
         (wisi-statement-action [1 statement-start 5 motion 7 motion 11 
statement-end])
         (wisi-name-action 3)
-        (wisi-containing-action 1 6)
-        (wisi-containing-action 1 8)
-        (wisi-motion-action [1 5 7 11])
+        (wisi-motion-action [1 5 7 [8 WHEN] 11])
         (wisi-face-apply-action [3 nil font-lock-type-face 10 nil 
font-lock-type-face])
         (wisi-indent-action [nil nil ada-indent-broken nil nil [ada-indent 
ada-indent]
                                nil [ada-indent ada-indent] nil nil nil])))%
@@ -2581,7 +2508,6 @@ task_definition
   : declarative_part_opt PRIVATE declarative_part_opt
     %((progn
       (wisi-statement-action [2 motion])
-      (wisi-containing-action 2 3)
       (wisi-indent-action [[ada-indent ada-indent] nil [ada-indent 
ada-indent]])))%
   | declarative_part_opt
     %((wisi-indent-action [[ada-indent ada-indent]]))%
@@ -2595,7 +2521,6 @@ task_type_declaration
     %((progn
         (wisi-statement-action [1 statement-start 6 motion 9 motion 13 
statement-end])
         (wisi-name-action 3)
-        (wisi-containing-action 1 10)
         (wisi-motion-action [1 6 9 [10 PRIVATE] 13])
         (wisi-face-apply-action [3 nil font-lock-type-face 12 nil 
font-lock-type-face])
         (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil nil
@@ -2605,7 +2530,6 @@ task_type_declaration
     %((progn
         (wisi-statement-action [1 statement-start 6 motion 10 statement-end])
         (wisi-name-action 3)
-        (wisi-containing-action 1 7)
         (wisi-face-apply-action [3 nil font-lock-type-face 9 nil 
font-lock-type-face])
         (wisi-motion-action [1 6 [7 PRIVATE] 10])
         (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil [nil ada-indent] nil nil nil
@@ -2632,18 +2556,15 @@ term_list
 
 tick
   : TICK_1
-%if lexer = re2c
   | TICK_2
-%end if
   ;
 
 timed_entry_call
   : SELECT entry_call_alternative OR delay_alternative END SELECT SEMICOLON
     %((progn
-      (wisi-statement-action [1 statement-start 3 motion 6 statement-end])
-      (wisi-containing-action 1 2)
-      (wisi-containing-action 1 4)
-      (wisi-indent-action [nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil nil nil])))%
+        (wisi-statement-action [1 statement-start 3 motion 6 statement-end])
+        (wisi-motion-action [1 3 6])
+        (wisi-indent-action [nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil nil nil])))%
   ;
 
 triggering_alternative
@@ -2676,13 +2597,14 @@ type_definition
 variant_part
   : CASE direct_name_opt IS variant_list END CASE SEMICOLON
     %((progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 4) ;; for goto-declaration-start
-      (wisi-indent-action [nil ada-indent-broken nil ada-indent-when nil nil 
nil])))%
+        (wisi-statement-action [1 statement-start 7 statement-end])
+        (wisi-motion-action [1 4 7])
+        (wisi-indent-action [nil ada-indent-broken nil ada-indent-when nil nil 
nil])))%
   ;
 
 variant_list
   : variant_list variant
+    %((wisi-motion-action [1 2]))%
   | variant
   ;
 
diff --git a/packages/ada-mode/ada_lr1_parse_table.txt.gz 
b/packages/ada-mode/ada_lr1_parse_table.txt.gz
index 9a9fe47..c5912bb 100644
Binary files a/packages/ada-mode/ada_lr1_parse_table.txt.gz and 
b/packages/ada-mode/ada_lr1_parse_table.txt.gz differ
diff --git a/packages/ada-mode/ada_process_actions.adb 
b/packages/ada-mode/ada_process_actions.adb
index ba5a0bc..e59620b 100644
--- a/packages/ada-mode/ada_process_actions.adb
+++ b/packages/ada-mode/ada_process_actions.adb
@@ -56,10 +56,8 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Motion), (9, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 6);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(5, Empty_IDs) & (6, 26 & 72) & (9,
-         Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (5, Invalid_Token_ID) & (6, 72) &
+         (9, Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 3, 1), (8, 
3, 1)));
       when Indent =>
@@ -94,7 +92,6 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 3, 
1)));
       when Indent =>
@@ -366,7 +363,6 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 3);
       when Face =>
          null;
       when Indent =>
@@ -466,8 +462,8 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (8, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 5);
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (8,
+         Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -550,12 +546,10 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Misc), (4, Motion), (8,
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Motion), (4, Motion), (8,
          Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 2, 3);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 2, 5);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, Empty_IDs) & 
(4, Empty_IDs) & (5, 26 & 72) & (8,
-         Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (5, 72) &
+         (8, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -588,9 +582,8 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Misc), (6, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 2, 3);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, Empty_IDs) & 
(3, 26 & 72) & (6, Empty_IDs)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Motion), (6, Statement_End)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 
Invalid_Token_ID) & (3, 72) & (6, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -622,7 +615,8 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         null;
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Motion)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -641,7 +635,7 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         null;
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Motion)));
       when Face =>
          null;
       when Indent =>
@@ -661,7 +655,7 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         null;
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -680,9 +674,9 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(4, +72) & (7, Empty_IDs)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (7,
+         Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -713,6 +707,24 @@ package body Ada_Process_Actions is
       end case;
    end case_statement_alternative_0;
 
+   procedure case_statement_alternative_list_0
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array)
+   is
+      Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
+   begin
+      case Parse_Data.Post_Parse_Action is
+      when Navigate =>
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID)));
+      when Face =>
+         null;
+      when Indent =>
+         null;
+      end case;
+   end case_statement_alternative_list_0;
+
    procedure compilation_unit_2
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
@@ -813,7 +825,6 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 3);
       when Face =>
          null;
       when Indent =>
@@ -835,7 +846,6 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 3);
       when Face =>
          null;
       when Indent =>
@@ -874,8 +884,8 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (7,
+         Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -897,7 +907,6 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 5);
       when Face =>
          null;
       when Indent =>
@@ -1012,6 +1021,7 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Motion), 
(3, Motion)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -1021,6 +1031,24 @@ package body Ada_Process_Actions is
       end case;
    end elsif_expression_item_0;
 
+   procedure elsif_expression_list_0
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array)
+   is
+      Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
+   begin
+      case Parse_Data.Post_Parse_Action is
+      when Navigate =>
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID)));
+      when Face =>
+         null;
+      when Indent =>
+         null;
+      end case;
+   end elsif_expression_list_0;
+
    procedure elsif_statement_item_0
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
@@ -1032,6 +1060,7 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Motion), 
(3, Motion)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -1041,6 +1070,24 @@ package body Ada_Process_Actions is
       end case;
    end elsif_statement_item_0;
 
+   procedure elsif_statement_list_0
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array)
+   is
+      Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
+   begin
+      case Parse_Data.Post_Parse_Action is
+      when Navigate =>
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID)));
+      when Face =>
+         null;
+      when Indent =>
+         null;
+      end case;
+   end elsif_statement_list_0;
+
    procedure entry_body_0
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
@@ -1054,11 +1101,8 @@ package body Ada_Process_Actions is
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (6, Motion), (8,
          Motion), (12, Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 3);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 7);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 9);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(4, Empty_IDs) & (6, Empty_IDs) & (8,
-         Empty_IDs) & (12, Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (6,
+         Invalid_Token_ID) & (8, Invalid_Token_ID) & (9, 72) & (12, 
Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 3, 1), 
(11, 3, 1)));
       when Indent =>
@@ -1114,9 +1158,9 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Motion), (8, Statement_End)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (8,
+         Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 2, 7);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 3, 
1)));
       when Indent =>
@@ -1137,9 +1181,9 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Motion), (6, Statement_End)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (6,
+         Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 2, 4);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 3, 
1)));
       when Indent =>
@@ -1247,6 +1291,24 @@ package body Ada_Process_Actions is
       end case;
    end exception_handler_1;
 
+   procedure exception_handler_list_0
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array)
+   is
+      Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
+   begin
+      case Parse_Data.Post_Parse_Action is
+      when Navigate =>
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID)));
+      when Face =>
+         null;
+      when Indent =>
+         null;
+      end case;
+   end exception_handler_list_0;
+
    procedure exit_statement_0
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
@@ -1302,7 +1364,7 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Label => None))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int, Ada_Indent_Broken))),
-         (False, (Simple, (Label => None))), (False, (Simple, (Label => 
None)))));
+         (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Label 
=> None)))));
       end case;
    end expression_function_declaration_0;
 
@@ -1358,8 +1420,8 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(3, Empty_IDs) & (7, Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (4, 72) &
+         (7, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -1582,7 +1644,6 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 5);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 3, 
2)));
       when Indent =>
@@ -1704,7 +1765,6 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 5);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 3, 
2)));
       when Indent =>
@@ -1727,7 +1787,6 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Statement_Start)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 3);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 1, 
1)));
       when Indent =>
@@ -1817,7 +1876,8 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Motion), (8, Statement_End)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (8,
+         Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), (6, 
1, 1)));
@@ -1839,7 +1899,8 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Motion), (8, Statement_End)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (8,
+         Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), (6, 
1, 1)));
@@ -1861,8 +1922,9 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Motion), (3, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(2, Empty_IDs) & (3, Empty_IDs)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID) & (3,
+         Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -1947,8 +2009,10 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Motion), (4, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(2, Empty_IDs) & (4, Empty_IDs)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (4,
+         Statement_End)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID) & (4,
+         Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -1985,7 +2049,7 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 
Motion)));
+         null;
       when Face =>
          null;
       when Indent =>
@@ -2054,10 +2118,9 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (6, Motion)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(3, Empty_IDs) & (5, 23 & 68) & (6,
-         Empty_IDs)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Motion), 
(3, Motion), (6, Motion)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (5,
+         Invalid_Token_ID) & (6, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -2078,9 +2141,9 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (5, Motion)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(3, Empty_IDs) & (5, Empty_IDs)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Motion), 
(3, Motion), (5, Motion)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (5,
+         Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -2100,9 +2163,9 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(3, Empty_IDs) & (5, 23 & 68)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Motion), 
(3, Motion)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (5,
+         Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -2122,9 +2185,8 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(3, Empty_IDs)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Motion), 
(3, Motion)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -2146,12 +2208,8 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (6, Motion), (10,
          Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 5);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 7);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(3, Empty_IDs) & (5, 23 & 68) & (6,
-         Empty_IDs) & (10, Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (5,
+         Invalid_Token_ID) & (6, Invalid_Token_ID) & (10, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -2176,11 +2234,8 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (5, Motion), (9,
          Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 6);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(3, Empty_IDs) & (5, Empty_IDs) & (9,
-         Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (5,
+         Invalid_Token_ID) & (9, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -2203,11 +2258,8 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (8, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 5);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(3, Empty_IDs) & (5, 23 & 68) & (8,
-         Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (5,
+         Invalid_Token_ID) & (8, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -2230,9 +2282,8 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(3, Empty_IDs) & (7, Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (7,
+         Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -2423,10 +2474,10 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Misc), (3, Motion), (8,
-         Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 2, 4);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, Empty_IDs) & 
(3, Empty_IDs) & (8, Empty_IDs)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (3,
+         Motion), (8, Statement_End)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (8,
+         Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -2459,8 +2510,10 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Misc), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 2, 3);
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (4,
+         Motion), (7, Statement_End)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (7,
+         Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -2513,8 +2566,7 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Misc)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
+         null;
       when Face =>
          null;
       when Indent =>
@@ -2694,7 +2746,6 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (9, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 7);
       when Face =>
          null;
       when Indent =>
@@ -2717,7 +2768,6 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (9, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 5);
       when Face =>
          null;
       when Indent =>
@@ -2740,7 +2790,6 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (9, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 5);
       when Face =>
          null;
       when Indent =>
@@ -2784,7 +2833,6 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 5);
       when Face =>
          null;
       when Indent =>
@@ -2806,7 +2854,6 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 5);
       when Face =>
          null;
       when Indent =>
@@ -2851,7 +2898,6 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 1);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 3);
       when Face =>
          null;
       when Indent =>
@@ -2933,10 +2979,8 @@ package body Ada_Process_Actions is
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Motion), (7, Motion), (11,
          Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 6);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 8);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(5, Empty_IDs) & (7, Empty_IDs) & (8, 26 &
-         72) & (11, Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (5, Invalid_Token_ID) & (7,
+         Invalid_Token_ID) & (8, 72) & (11, Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), 
(10, 1, 1)));
       when Indent =>
@@ -2972,8 +3016,8 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Motion), (9, Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 6);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(5, Empty_IDs) & (9, Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (5, Invalid_Token_ID) & (9,
+         Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), (8, 
1, 1)));
       when Indent =>
@@ -3030,7 +3074,7 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, +49) & (2, 
Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -3071,10 +3115,8 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (6, Motion)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 4, 5);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 7);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(4, Empty_IDs) & (6, Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (6,
+         Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 1, 1), (9, 
1, 1)));
       when Indent =>
@@ -3110,9 +3152,7 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 4, 5);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(4, Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 1, 1), (7, 
1, 1)));
       when Indent =>
@@ -3238,24 +3278,6 @@ package body Ada_Process_Actions is
       end case;
    end parameter_specification_3;
 
-   procedure parameter_specification_list_0
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array)
-   is
-      Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
-   begin
-      case Parse_Data.Post_Parse_Action is
-      when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 
Motion)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end parameter_specification_list_0;
-
    procedure paren_expression_0
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
@@ -3275,44 +3297,6 @@ package body Ada_Process_Actions is
       end case;
    end paren_expression_0;
 
-   procedure paren_expression_1
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array)
-   is
-      Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
-   begin
-      case Parse_Data.Post_Parse_Action is
-      when Navigate =>
-         null;
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 0)))));
-      end case;
-   end paren_expression_1;
-
-   procedure paren_expression_2
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array)
-   is
-      Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
-   begin
-      case Parse_Data.Post_Parse_Action is
-      when Navigate =>
-         null;
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 0)))));
-      end case;
-   end paren_expression_2;
-
    procedure pragma_g_0
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
@@ -3504,7 +3488,6 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Statement_Start)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 3);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 1, 
1)));
       when Indent =>
@@ -3537,8 +3520,8 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Motion), (9, Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 6);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(5, Empty_IDs) & (9, Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (5, Invalid_Token_ID) & (9,
+         Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 3, 2), (8, 
3, 2)));
       when Indent =>
@@ -3656,12 +3639,11 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Motion), (9, Motion), (11,
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Motion), (11,
          Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 10);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(6, Empty_IDs) & (10, +49) & (11,
-         Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (6, Invalid_Token_ID) & (10, 49) &
+         (11, Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 3, 
2)));
       when Indent =>
@@ -3697,9 +3679,8 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Motion), (8, Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 7);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(6, Empty_IDs) & (7, +49) & (8,
-         Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (6, Invalid_Token_ID) & (7, 49) &
+         (8, Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 3, 
2)));
       when Indent =>
@@ -3792,8 +3773,7 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (5, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
       when Face =>
          null;
       when Indent =>
@@ -4086,10 +4066,8 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(2, 43 & 72) & (3, Empty_IDs) & (7,
-         Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, 43) & (3, Invalid_Token_ID) &
+         (7, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -4111,7 +4089,7 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(2, 43 & 72) & (5, Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, 43) & (5, Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -4210,6 +4188,7 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 
Motion)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 43) & (2, 
Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -4247,7 +4226,6 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
       when Face =>
          null;
       when Indent =>
@@ -4323,9 +4301,8 @@ package body Ada_Process_Actions is
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (7, Motion), (9,
          Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 8);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(4, Empty_IDs) & (7, Empty_IDs) & (8, +49)
-         & (9, Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (7,
+         Invalid_Token_ID) & (8, 49) & (9, Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 3, 
2)));
       when Indent =>
@@ -4360,9 +4337,8 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (6, Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 5);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(4, Empty_IDs) & (5, +49) & (6,
-         Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (5, 49) &
+         (6, Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 3, 
2)));
       when Indent =>
@@ -4394,12 +4370,11 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (7, Motion), (11,
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (11,
          Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 8);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(4, Empty_IDs) & (8, +49) & (11,
-         Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (8, 49) &
+         (11, Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 3, 2), (9, 
3, 2)));
       when Indent =>
@@ -4435,9 +4410,8 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (8, Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 5);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(4, Empty_IDs) & (5, +49) & (8,
-         Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (5, 49) &
+         (8, Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 3, 2), (6, 
3, 2)));
       when Indent =>
@@ -4492,11 +4466,8 @@ package body Ada_Process_Actions is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (4,
          Motion), (6, Motion), (10, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 2, 4);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 4, 5);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 2, 7);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(2, 29 & 50) & (4, Empty_IDs) & (6,
-         Empty_IDs) & (10, Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID) & (4,
+         Invalid_Token_ID) & (6, Invalid_Token_ID) & (7, 72) & (10, 
Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (9, 1, 
1)));
       when Indent =>
@@ -4726,7 +4697,7 @@ package body Ada_Process_Actions is
    begin
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Motion)));
+         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_Override)));
       when Face =>
          null;
       when Indent =>
@@ -4749,10 +4720,8 @@ package body Ada_Process_Actions is
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Motion), (7, Motion), (11,
          Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 6);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 8);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(5, Empty_IDs) & (7, Empty_IDs) & (11,
-         Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (5, Invalid_Token_ID) & (7,
+         Invalid_Token_ID) & (8, 72) & (11, Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 3, 2), 
(10, 3, 2)));
       when Indent =>
@@ -4809,7 +4778,6 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 
Motion)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 2, 3);
       when Face =>
          null;
       when Indent =>
@@ -4851,9 +4819,8 @@ package body Ada_Process_Actions is
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Motion), (9, Motion), (13,
          Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 10);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(6, Empty_IDs) & (9, Empty_IDs) & (10,
-         +49) & (13, Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (6, Invalid_Token_ID) & (9,
+         Invalid_Token_ID) & (10, 49) & (13, Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 3, 2), 
(12, 3, 2)));
       when Indent =>
@@ -4891,9 +4858,8 @@ package body Ada_Process_Actions is
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Motion), (10,
          Statement_End)));
          Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 7);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Empty_IDs) & 
(6, Empty_IDs) & (7, +49) & (10,
-         Empty_IDs)));
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (6, Invalid_Token_ID) & (7, 49) &
+         (10, Invalid_Token_ID)));
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 3, 2), (9, 
3, 2)));
       when Indent =>
@@ -4949,8 +4915,8 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (6, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 2);
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (6,
+         Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -4972,7 +4938,8 @@ package body Ada_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (7,
+         Invalid_Token_ID)));
       when Face =>
          null;
       when Indent =>
@@ -4982,6 +4949,24 @@ package body Ada_Process_Actions is
       end case;
    end variant_part_0;
 
+   procedure variant_list_0
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array)
+   is
+      Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
+   begin
+      case Parse_Data.Post_Parse_Action is
+      when Navigate =>
+         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID)));
+      when Face =>
+         null;
+      when Indent =>
+         null;
+      end case;
+   end variant_list_0;
+
    procedure variant_0
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
diff --git a/packages/ada-mode/ada_process_actions.ads 
b/packages/ada-mode/ada_process_actions.ads
index 31a4f2c..bb8a6bf 100644
--- a/packages/ada-mode/ada_process_actions.ads
+++ b/packages/ada-mode/ada_process_actions.ads
@@ -869,6 +869,11 @@ package Ada_Process_Actions is
      Tree      : in out WisiToken.Syntax_Trees.Tree;
      Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+   procedure case_statement_alternative_list_0
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
    procedure compilation_unit_2
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
@@ -944,11 +949,21 @@ package Ada_Process_Actions is
      Tree      : in out WisiToken.Syntax_Trees.Tree;
      Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+   procedure elsif_expression_list_0
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
    procedure elsif_statement_item_0
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
      Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+   procedure elsif_statement_list_0
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
    procedure entry_body_0
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
@@ -994,6 +1009,11 @@ package Ada_Process_Actions is
      Tree      : in out WisiToken.Syntax_Trees.Tree;
      Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+   procedure exception_handler_list_0
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
    procedure exit_statement_0
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
@@ -1434,26 +1454,11 @@ package Ada_Process_Actions is
      Tree      : in out WisiToken.Syntax_Trees.Tree;
      Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
-   procedure parameter_specification_list_0
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
    procedure paren_expression_0
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
      Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
-   procedure paren_expression_1
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
-   procedure paren_expression_2
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
    procedure pragma_g_0
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
@@ -1804,6 +1809,11 @@ package Ada_Process_Actions is
      Tree      : in out WisiToken.Syntax_Trees.Tree;
      Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+   procedure variant_list_0
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
    procedure variant_0
     (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
      Tree      : in out WisiToken.Syntax_Trees.Tree;
diff --git a/packages/ada-mode/ada_process_lalr_main.adb 
b/packages/ada-mode/ada_process_lalr_main.adb
index 186dbcd..9d686df 100644
--- a/packages/ada-mode/ada_process_lalr_main.adb
+++ b/packages/ada-mode/ada_process_lalr_main.adb
@@ -76,7 +76,7 @@ package body Ada_Process_LALR_Main is
          Task_Count  => 0,
          Check_Limit => 4,
          Check_Delta_Limit => 100,
-         Enqueue_Limit => 45000);
+         Enqueue_Limit => 58000);
 
       Table : constant Parse_Table_Ptr := new Parse_Table
         (State_First       => 0,
@@ -90,6 +90,7 @@ package body Ada_Process_LALR_Main is
       declare
          procedure Subr_1
          is begin
+            Table.States (0).Action_List.Set_Capacity (38);
             Add_Action (Table.States (0), 4, 1);
             Add_Action (Table.States (0), 5, 2);
             Add_Action (Table.States (0), 13, Reduce, (132, 1), 0, null, null);
@@ -129,7 +130,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (0), 104, 32);
             Add_Action (Table.States (0), 105, 33);
             Add_Action (Table.States (0), 106, 34);
-            Add_Error (Table.States (0));
+            Table.States (0).Goto_List.Set_Capacity (83);
             Add_Goto (Table.States (0), 112, 35);
             Add_Goto (Table.States (0), 113, 36);
             Add_Goto (Table.States (0), 121, 37);
@@ -214,20 +215,22 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (0), 331, 116);
             Add_Goto (Table.States (0), 332, 117);
             Table.States (0).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 13)));
+            Table.States (1).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1), 104, 118);
-            Add_Error (Table.States (1));
             Table.States (1).Kernel := To_Vector (((113, 4, 4, False), (113, 
4, 2, False)));
             Table.States (1).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 118)));
+            Table.States (2).Action_List.Set_Capacity (3);
             Add_Action (Table.States (2), 104, 119);
             Add_Action (Table.States (2), 105, 33);
             Add_Action (Table.States (2), 106, 34);
-            Add_Error (Table.States (2));
+            Table.States (2).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (2), 128, 41);
             Add_Goto (Table.States (2), 239, 120);
             Add_Goto (Table.States (2), 272, 92);
             Add_Goto (Table.States (2), 293, 97);
             Table.States (2).Kernel := To_Vector ((0 => (303, 5, 2, False)));
             Table.States (2).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (3).Action_List.Set_Capacity (13);
             Add_Action (Table.States (3), 3, 121);
             Add_Action (Table.States (3), 35, Reduce, (192, 1), 0, null, null);
             Add_Action (Table.States (3), 39, 122);
@@ -241,7 +244,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (3), 104, 119);
             Add_Action (Table.States (3), 105, 33);
             Add_Action (Table.States (3), 106, 34);
-            Add_Error (Table.States (3));
+            Table.States (3).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (3), 117, 130);
             Add_Goto (Table.States (3), 128, 41);
             Add_Goto (Table.States (3), 191, 131);
@@ -264,6 +267,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (3), 330, 146);
             Table.States (3).Kernel := To_Vector ((0 => (139, 15, 6, False)));
             Table.States (3).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (4).Action_List.Set_Capacity (14);
             Add_Action (Table.States (4), 3, 121);
             Add_Action (Table.States (4), 39, 122);
             Add_Action (Table.States (4), 40, 123);
@@ -278,7 +282,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (4), 104, 119);
             Add_Action (Table.States (4), 105, 33);
             Add_Action (Table.States (4), 106, 34);
-            Add_Error (Table.States (4));
+            Table.States (4).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (4), 117, 130);
             Add_Goto (Table.States (4), 128, 41);
             Add_Goto (Table.States (4), 191, 131);
@@ -301,17 +305,19 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (4), 330, 146);
             Table.States (4).Kernel := To_Vector (((161, 18, 2, False), (161, 
18, 1, False)));
             Table.States (4).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (5).Action_List.Set_Capacity (3);
             Add_Action (Table.States (5), 72, Reduce, (220, 1), 0, null, null);
             Add_Action (Table.States (5), 96, Reduce, (220, 1), 0, null, null);
             Add_Action (Table.States (5), 104, 149);
-            Add_Error (Table.States (5));
+            Table.States (5).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (5), 220, 150);
             Table.States (5).Kernel := To_Vector (((190, 27, 2, False), (190, 
27, 1, False)));
             Table.States (5).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (6).Action_List.Set_Capacity (3);
             Add_Action (Table.States (6), 104, 151);
             Add_Action (Table.States (6), 105, 152);
             Add_Action (Table.States (6), 106, 34);
-            Add_Error (Table.States (6));
+            Table.States (6).Goto_List.Set_Capacity (7);
             Add_Goto (Table.States (6), 128, 153);
             Add_Goto (Table.States (6), 163, 154);
             Add_Goto (Table.States (6), 230, 155);
@@ -322,16 +328,18 @@ package body Ada_Process_LALR_Main is
             Table.States (6).Kernel := To_Vector (((121, 28, 5, False), (127, 
28, 4, False), (182, 28, 5, False), (229,
             28, 0, False), (281, 28, 14, False)));
             Table.States (6).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 231, 0)));
+            Table.States (7).Action_List.Set_Capacity (3);
             Add_Action (Table.States (7), 104, 119);
             Add_Action (Table.States (7), 105, 33);
             Add_Action (Table.States (7), 106, 34);
-            Add_Error (Table.States (7));
+            Table.States (7).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (7), 128, 41);
             Add_Goto (Table.States (7), 239, 158);
             Add_Goto (Table.States (7), 272, 92);
             Add_Goto (Table.States (7), 293, 97);
             Table.States (7).Kernel := To_Vector ((0 => (207, 29, 2, False)));
             Table.States (7).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (8).Action_List.Set_Capacity (8);
             Add_Action (Table.States (8), 29, 159);
             Add_Conflict (Table.States (8), 29, (210, 1), 1, 
generic_formal_part_1'Access, null);
             Add_Action (Table.States (8), 47, 160);
@@ -343,7 +351,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (8), 71, 28);
             Add_Action (Table.States (8), 74, 163);
             Add_Action (Table.States (8), 104, 164);
-            Add_Error (Table.States (8));
+            Table.States (8).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (8), 198, 165);
             Add_Goto (Table.States (8), 200, 166);
             Add_Goto (Table.States (8), 201, 167);
@@ -356,10 +364,11 @@ package body Ada_Process_LALR_Main is
             Table.States (8).Kernel := To_Vector (((210, 30, 3, False), (210, 
30, 0, False), (215, 30, 5, False), (215,
             30, 5, False), (215, 30, 5, False)));
             Table.States (8).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 210, 1)));
+            Table.States (9).Action_List.Set_Capacity (1);
             Add_Action (Table.States (9), 104, 174);
-            Add_Error (Table.States (9));
             Table.States (9).Kernel := To_Vector ((0 => (303, 31, 2, False)));
             Table.States (9).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 174)));
+            Table.States (10).Action_List.Set_Capacity (13);
             Add_Action (Table.States (10), 3, 121);
             Add_Action (Table.States (10), 39, 122);
             Add_Action (Table.States (10), 40, 123);
@@ -373,7 +382,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (10), 104, 119);
             Add_Action (Table.States (10), 105, 33);
             Add_Action (Table.States (10), 106, 34);
-            Add_Error (Table.States (10));
+            Table.States (10).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (10), 117, 130);
             Add_Goto (Table.States (10), 128, 41);
             Add_Goto (Table.States (10), 191, 131);
@@ -397,27 +406,29 @@ package body Ada_Process_LALR_Main is
             Table.States (10).Kernel := To_Vector (((222, 32, 7, False), (222, 
32, 5, False), (222, 32, 6, False),
             (222, 32, 4, False)));
             Table.States (10).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (11).Action_List.Set_Capacity (2);
             Add_Action (Table.States (11), 49, 176);
             Add_Action (Table.States (11), 74, 177);
-            Add_Error (Table.States (11));
             Table.States (11).Kernel := To_Vector (((332, 36, 4, False), (332, 
36, 3, False)));
             Table.States (11).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 177)));
+            Table.States (12).Action_List.Set_Capacity (1);
             Add_Action (Table.States (12), 46, 178);
-            Add_Error (Table.States (12));
             Table.States (12).Kernel := To_Vector ((0 => (246, 40, 1, False)));
             Table.States (12).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 46, 178)));
+            Table.States (13).Action_List.Set_Capacity (1);
             Add_Action (Table.States (13), 96, 179);
-            Add_Error (Table.States (13));
             Table.States (13).Kernel := To_Vector ((0 => (303, 41, 1, False)));
             Table.States (13).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 179)));
+            Table.States (14).Action_List.Set_Capacity (3);
             Add_Action (Table.States (14), (25, 29, 50), (246, 1), 1, 
overriding_indicator_opt_1'Access, null);
             Table.States (14).Kernel := To_Vector ((0 => (246, 46, 0, False)));
             Table.States (14).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 246, 1)));
+            Table.States (15).Action_List.Set_Capacity (4);
             Add_Action (Table.States (15), 14, 180);
             Add_Action (Table.States (15), 104, 119);
             Add_Action (Table.States (15), 105, 33);
             Add_Action (Table.States (15), 106, 34);
-            Add_Error (Table.States (15));
+            Table.States (15).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (15), 128, 41);
             Add_Goto (Table.States (15), 239, 181);
             Add_Goto (Table.States (15), 272, 92);
@@ -425,10 +436,11 @@ package body Ada_Process_LALR_Main is
             Table.States (15).Kernel := To_Vector (((213, 47, 5, False), (247, 
47, 6, False), (247, 47, 5, False),
             (248, 47, 5, False), (250, 47, 4, False), (251, 47, 4, False), 
(251, 47, 3, False)));
             Table.States (15).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (16).Action_List.Set_Capacity (1);
             Add_Action (Table.States (16), 104, 182);
-            Add_Error (Table.States (16));
             Table.States (16).Kernel := To_Vector (((257, 48, 4, False), (257, 
48, 6, False), (257, 48, 2, False)));
             Table.States (16).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 182)));
+            Table.States (17).Action_List.Set_Capacity (15);
             Add_Action (Table.States (17), 25, Reduce, (246, 2), 0, null, 
null);
             Add_Action (Table.States (17), 28, 183);
             Add_Action (Table.States (17), 29, Reduce, (246, 2), 0, null, 
null);
@@ -444,7 +456,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (17), 71, 28);
             Add_Action (Table.States (17), 74, 184);
             Add_Action (Table.States (17), 104, 185);
-            Add_Error (Table.States (17));
+            Table.States (17).Goto_List.Set_Capacity (50);
             Add_Goto (Table.States (17), 112, 35);
             Add_Goto (Table.States (17), 121, 37);
             Add_Goto (Table.States (17), 127, 40);
@@ -497,44 +509,48 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (17), 331, 116);
             Table.States (17).Kernel := To_Vector (((142, 49, 3, False), (332, 
49, 3, False)));
             Table.States (17).Minimal_Complete_Actions := To_Vector (((Reduce, 
246, 0), (Shift, 74, 184)));
+            Table.States (18).Action_List.Set_Capacity (3);
             Add_Action (Table.States (18), 104, 119);
             Add_Action (Table.States (18), 105, 33);
             Add_Action (Table.States (18), 106, 34);
-            Add_Error (Table.States (18));
+            Table.States (18).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (18), 128, 41);
             Add_Goto (Table.States (18), 239, 187);
             Add_Goto (Table.States (18), 272, 92);
             Add_Goto (Table.States (18), 293, 97);
             Table.States (18).Kernel := To_Vector ((0 => (262, 50, 1, False)));
             Table.States (18).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (19).Action_List.Set_Capacity (3);
             Add_Action (Table.States (19), 14, 188);
             Add_Action (Table.States (19), 69, 189);
             Add_Action (Table.States (19), 104, 190);
-            Add_Error (Table.States (19));
             Table.States (19).Kernel := To_Vector (((264, 51, 5, False), (265, 
51, 5, False), (271, 51, 8, False),
             (271, 51, 5, False), (304, 51, 7, False), (304, 51, 4, False)));
             Table.States (19).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 190)));
+            Table.States (20).Action_List.Set_Capacity (4);
             Add_Action (Table.States (20), 96, 191);
             Add_Action (Table.States (20), 104, 119);
             Add_Action (Table.States (20), 105, 33);
             Add_Action (Table.States (20), 106, 34);
-            Add_Error (Table.States (20));
+            Table.States (20).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (20), 128, 41);
             Add_Goto (Table.States (20), 239, 192);
             Add_Goto (Table.States (20), 272, 92);
             Add_Goto (Table.States (20), 293, 97);
             Table.States (20).Kernel := To_Vector (((276, 52, 3, False), (276, 
52, 2, False), (276, 52, 1, False)));
             Table.States (20).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 191)));
+            Table.States (21).Action_List.Set_Capacity (3);
             Add_Action (Table.States (21), 104, 119);
             Add_Action (Table.States (21), 105, 33);
             Add_Action (Table.States (21), 106, 34);
-            Add_Error (Table.States (21));
+            Table.States (21).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (21), 128, 41);
             Add_Goto (Table.States (21), 239, 193);
             Add_Goto (Table.States (21), 272, 92);
             Add_Goto (Table.States (21), 293, 97);
             Table.States (21).Kernel := To_Vector (((290, 57, 4, False), (290, 
57, 2, False)));
             Table.States (21).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (22).Action_List.Set_Capacity (14);
             Add_Action (Table.States (22), 3, 121);
             Add_Action (Table.States (22), 21, Reduce, (195, 1), 0, null, 
null);
             Add_Action (Table.States (22), 39, 122);
@@ -549,7 +565,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (22), 104, 194);
             Add_Action (Table.States (22), 105, 33);
             Add_Action (Table.States (22), 106, 34);
-            Add_Error (Table.States (22));
+            Table.States (22).Goto_List.Set_Capacity (22);
             Add_Goto (Table.States (22), 117, 130);
             Add_Goto (Table.States (22), 128, 41);
             Add_Goto (Table.States (22), 191, 131);
@@ -574,10 +590,11 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (22), 330, 146);
             Table.States (22).Kernel := To_Vector (((196, 58, 4, False), (196, 
58, 4, False), (302, 58, 1, False)));
             Table.States (22).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (23).Action_List.Set_Capacity (1);
             Add_Action (Table.States (23), 76, 198);
-            Add_Error (Table.States (23));
             Table.States (23).Kernel := To_Vector ((0 => (315, 60, 9, False)));
             Table.States (23).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 76, 198)));
+            Table.States (24).Action_List.Set_Capacity (9);
             Add_Action (Table.States (24), 4, 1);
             Add_Action (Table.States (24), 18, 4);
             Add_Action (Table.States (24), 22, Reduce, (297, 1), 0, null, 
null);
@@ -587,7 +604,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (24), 104, 119);
             Add_Action (Table.States (24), 105, 33);
             Add_Action (Table.States (24), 106, 34);
-            Add_Error (Table.States (24));
+            Table.States (24).Goto_List.Set_Capacity (13);
             Add_Goto (Table.States (24), 113, 201);
             Add_Goto (Table.States (24), 128, 41);
             Add_Goto (Table.States (24), 160, 202);
@@ -604,28 +621,29 @@ package body Ada_Process_LALR_Main is
             Table.States (24).Kernel := To_Vector (((126, 61, 6, False), (152, 
61, 5, False), (294, 61, 4, False),
             (294, 61, 3, False), (323, 61, 7, False)));
             Table.States (24).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 297, 0)));
+            Table.States (25).Action_List.Set_Capacity (1);
             Add_Action (Table.States (25), 104, 211);
-            Add_Error (Table.States (25));
             Table.States (25).Kernel := To_Vector ((0 => (313, 63, 4, False)));
             Table.States (25).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 211)));
+            Table.States (26).Action_List.Set_Capacity (3);
             Add_Action (Table.States (26), 14, 212);
             Add_Action (Table.States (26), 69, 213);
             Add_Action (Table.States (26), 104, 214);
-            Add_Error (Table.States (26));
             Table.States (26).Kernel := To_Vector (((305, 66, 7, False), (305, 
66, 4, False), (305, 66, 2, False),
             (316, 66, 6, False), (317, 66, 5, False), (319, 66, 8, False), 
(319, 66, 5, False), (319, 66, 3, False)));
             Table.States (26).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 214)));
+            Table.States (27).Action_List.Set_Capacity (1);
             Add_Action (Table.States (27), 104, 215);
-            Add_Error (Table.States (27));
             Table.States (27).Kernel := To_Vector (((206, 69, 4, False), (223, 
69, 4, False), (223, 69, 2, False),
             (259, 69, 7, False), (260, 69, 4, False)));
             Table.States (27).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 215)));
+            Table.States (28).Action_List.Set_Capacity (5);
             Add_Action (Table.States (28), 9, 216);
             Add_Action (Table.States (28), 69, 217);
             Add_Action (Table.States (28), 104, 119);
             Add_Action (Table.States (28), 105, 33);
             Add_Action (Table.States (28), 106, 34);
-            Add_Error (Table.States (28));
+            Table.States (28).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (28), 128, 41);
             Add_Goto (Table.States (28), 238, 218);
             Add_Goto (Table.States (28), 239, 219);
@@ -633,6 +651,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (28), 293, 97);
             Table.States (28).Kernel := To_Vector (((331, 71, 4, False), (331, 
71, 3, False), (331, 71, 2, False)));
             Table.States (28).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (29).Action_List.Set_Capacity (13);
             Add_Action (Table.States (29), 3, 121);
             Add_Action (Table.States (29), 37, Reduce, (192, 1), 0, null, 
null);
             Add_Action (Table.States (29), 39, 122);
@@ -646,7 +665,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (29), 104, 119);
             Add_Action (Table.States (29), 105, 33);
             Add_Action (Table.States (29), 106, 34);
-            Add_Error (Table.States (29));
+            Table.States (29).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (29), 117, 130);
             Add_Goto (Table.States (29), 128, 41);
             Add_Goto (Table.States (29), 191, 131);
@@ -669,10 +688,11 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (29), 330, 146);
             Table.States (29).Kernel := To_Vector ((0 => (229, 73, 0, False)));
             Table.States (29).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (30).Action_List.Set_Capacity (3);
             Add_Action (Table.States (30), 104, 119);
             Add_Action (Table.States (30), 105, 33);
             Add_Action (Table.States (30), 106, 34);
-            Add_Error (Table.States (30));
+            Table.States (30).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (30), 128, 41);
             Add_Goto (Table.States (30), 238, 221);
             Add_Goto (Table.States (30), 239, 219);
@@ -680,10 +700,11 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (30), 293, 97);
             Table.States (30).Kernel := To_Vector ((0 => (332, 74, 2, False)));
             Table.States (30).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (31).Action_List.Set_Capacity (1);
             Add_Action (Table.States (31), 104, 222);
-            Add_Error (Table.States (31));
             Table.States (31).Kernel := To_Vector ((0 => (217, 93, 2, False)));
             Table.States (31).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 222)));
+            Table.States (32).Action_List.Set_Capacity (8);
             Add_Action (Table.States (32), 76, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (32), 81, 223);
             Add_Conflict (Table.States (32), 81, (219, 1), 1, 
identifier_list_1'Access, null);
@@ -693,95 +714,111 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (32), 96, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (32), 101, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (32), 102, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Error (Table.States (32));
             Table.States (32).Kernel := To_Vector (((131, 104, 1, False), 
(219, 104, 0, False), (239, 104, 0, False),
             (245, 104, 5, False), (245, 104, 6, False), (245, 104, 5, False)));
             Table.States (32).Minimal_Complete_Actions := To_Vector (((Reduce, 
219, 1), (Reduce, 239, 1)));
+            Table.States (33).Action_List.Set_Capacity (62);
             Add_Action (Table.States (33), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
-            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
-            88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (239, 7), 1, null,
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 73, 74, 75, 
76, 77, 78, 79, 82, 83, 84, 85, 86, 87, 88,
+            89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 105, 
106), (239, 7), 1, null,
             name_7_check'Access);
             Table.States (33).Kernel := To_Vector ((0 => (239, 105, 0, 
False)));
             Table.States (33).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 1)));
+            Table.States (34).Action_List.Set_Capacity (63);
             Add_Action (Table.States (34), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (239, 6), 1, null, null);
             Table.States (34).Kernel := To_Vector ((0 => (239, 106, 0, 
False)));
             Table.States (34).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 1)));
+            Table.States (35).Action_List.Set_Capacity (40);
             Add_Action (Table.States (35), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 0), 1, null,
             null);
             Table.States (35).Kernel := To_Vector ((0 => (157, 112, 0, 
False)));
             Table.States (35).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (36).Action_List.Set_Capacity (46);
             Add_Action (Table.States (36), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (151, 5), 1, null, null);
             Table.States (36).Kernel := To_Vector ((0 => (151, 113, 0, 
False)));
             Table.States (36).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 151, 1)));
+            Table.States (37).Action_List.Set_Capacity (40);
             Add_Action (Table.States (37), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 1), 1, null,
             null);
             Table.States (37).Kernel := To_Vector ((0 => (157, 121, 0, 
False)));
             Table.States (37).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (38).Action_List.Set_Capacity (46);
             Add_Action (Table.States (38), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (303, 1), 1, null, null);
             Table.States (38).Kernel := To_Vector ((0 => (303, 123, 0, 
False)));
             Table.States (38).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 303, 1)));
+            Table.States (39).Action_List.Set_Capacity (46);
             Add_Action (Table.States (39), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (298, 3), 1, null, null);
             Table.States (39).Kernel := To_Vector ((0 => (298, 126, 0, 
False)));
             Table.States (39).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 298, 1)));
+            Table.States (40).Action_List.Set_Capacity (41);
             Add_Action (Table.States (40), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 72, 73, 
74, 93, 104, 105, 106, 107), (121, 3), 1,
             null, null);
             Table.States (40).Kernel := To_Vector ((0 => (121, 127, 0, 
False)));
             Table.States (40).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 121, 1)));
+            Table.States (41).Action_List.Set_Capacity (62);
             Add_Action (Table.States (41), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
-            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
-            88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (239, 3), 1, null, null);
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 73, 74, 75, 
76, 77, 78, 79, 82, 83, 84, 85, 86, 87, 88,
+            89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 105, 
106), (239, 3), 1, null, null);
             Table.States (41).Kernel := To_Vector ((0 => (239, 128, 0, True)));
             Table.States (41).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 1)));
             Table.States (41).Minimal_Complete_Actions_Recursive := True;
+            Table.States (42).Action_List.Set_Capacity (5);
             Add_Action (Table.States (42), (13, 17, 28, 37, 73), (132, 0), 1, 
null, block_label_opt_0_check'Access);
             Table.States (42).Kernel := To_Vector ((0 => (132, 131, 0, 
False)));
             Table.States (42).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 132, 1)));
+            Table.States (43).Action_List.Set_Capacity (5);
             Add_Action (Table.States (43), 13, 224);
             Add_Action (Table.States (43), 17, 225);
             Add_Action (Table.States (43), 28, 226);
             Add_Action (Table.States (43), 37, 227);
             Add_Action (Table.States (43), 73, 29);
-            Add_Error (Table.States (43));
+            Table.States (43).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (43), 229, 228);
             Table.States (43).Kernel := To_Vector (((133, 132, 4, False), 
(133, 132, 3, False), (232, 132, 5, False),
             (232, 132, 4, False)));
             Table.States (43).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 224)));
+            Table.States (44).Action_List.Set_Capacity (46);
             Add_Action (Table.States (44), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (151, 3), 1, null, null);
             Table.States (44).Kernel := To_Vector ((0 => (151, 133, 0, 
False)));
             Table.States (44).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 151, 1)));
+            Table.States (45).Action_List.Set_Capacity (40);
             Add_Action (Table.States (45), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 2), 1, null,
             null);
             Table.States (45).Kernel := To_Vector ((0 => (157, 134, 0, 
False)));
             Table.States (45).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (46).Action_List.Set_Capacity (40);
             Add_Action (Table.States (46), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (134, 1), 1, null,
             null);
             Table.States (46).Kernel := To_Vector ((0 => (134, 135, 0, 
False)));
             Table.States (46).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 134, 1)));
+            Table.States (47).Action_List.Set_Capacity (46);
             Add_Action (Table.States (47), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (151, 1), 1, null, null);
             Table.States (47).Kernel := To_Vector ((0 => (151, 139, 0, 
False)));
             Table.States (47).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 151, 1)));
+            Table.States (48).Action_List.Set_Capacity (39);
             Add_Action (Table.States (48), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
             48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 93, 
104, 105, 106, 107), (143, 1), 1,
             compilation_unit_list_1'Access, 
compilation_unit_list_1_check'Access);
             Table.States (48).Kernel := To_Vector ((0 => (143, 142, 0, 
False)));
             Table.States (48).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 143, 1)));
+            Table.States (49).Action_List.Set_Capacity (39);
             Add_Action (Table.States (49), 4, 1);
             Add_Action (Table.States (49), 5, 2);
             Add_Action (Table.States (49), 13, Reduce, (132, 1), 0, null, 
null);
@@ -822,7 +859,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (49), 105, 33);
             Add_Action (Table.States (49), 106, 34);
             Add_Action (Table.States (49), 107, Accept_It, (108, 0), 1, null, 
null);
-            Add_Error (Table.States (49));
+            Table.States (49).Goto_List.Set_Capacity (82);
             Add_Goto (Table.States (49), 112, 35);
             Add_Goto (Table.States (49), 113, 36);
             Add_Goto (Table.States (49), 121, 37);
@@ -909,158 +946,185 @@ package body Ada_Process_LALR_Main is
          end Subr_1;
          procedure Subr_2
          is begin
+            Table.States (50).Action_List.Set_Capacity (46);
             Add_Action (Table.States (50), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (306, 2), 1, null, null);
             Table.States (50).Kernel := To_Vector ((0 => (306, 151, 0, 
False)));
             Table.States (50).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 306, 1)));
+            Table.States (51).Action_List.Set_Capacity (46);
             Add_Action (Table.States (51), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (298, 2), 1, null, null);
             Table.States (51).Kernel := To_Vector ((0 => (298, 152, 0, 
False)));
             Table.States (51).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 298, 1)));
+            Table.States (52).Action_List.Set_Capacity (39);
             Add_Action (Table.States (52), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
             48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 93, 
104, 105, 106, 107), (142, 3), 1, null,
             null);
             Table.States (52).Kernel := To_Vector ((0 => (142, 157, 0, 
False)));
             Table.States (52).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 142, 1)));
+            Table.States (53).Action_List.Set_Capacity (46);
             Add_Action (Table.States (53), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (303, 7), 1, null, null);
             Table.States (53).Kernel := To_Vector ((0 => (303, 161, 0, 
False)));
             Table.States (53).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 303, 1)));
+            Table.States (54).Action_List.Set_Capacity (40);
             Add_Action (Table.States (54), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 3), 1, null,
             null);
             Table.States (54).Kernel := To_Vector ((0 => (157, 179, 0, 
False)));
             Table.States (54).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (55).Action_List.Set_Capacity (41);
             Add_Action (Table.States (55), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 72, 73, 
74, 93, 104, 105, 106, 107), (121, 1), 1,
             null, null);
             Table.States (55).Kernel := To_Vector ((0 => (121, 182, 0, 
False)));
             Table.States (55).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 121, 1)));
+            Table.States (56).Action_List.Set_Capacity (40);
             Add_Action (Table.States (56), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 4), 1, null,
             null);
             Table.States (56).Kernel := To_Vector ((0 => (157, 186, 0, 
False)));
             Table.States (56).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (57).Action_List.Set_Capacity (46);
             Add_Action (Table.States (57), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (303, 2), 1, null, null);
             Table.States (57).Kernel := To_Vector ((0 => (303, 190, 0, 
False)));
             Table.States (57).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 303, 1)));
+            Table.States (58).Action_List.Set_Capacity (40);
             Add_Action (Table.States (58), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 5), 1, null,
             null);
             Table.States (58).Kernel := To_Vector ((0 => (157, 193, 0, 
False)));
             Table.States (58).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (59).Action_List.Set_Capacity (46);
             Add_Action (Table.States (59), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (151, 4), 1, null, null);
             Table.States (59).Kernel := To_Vector ((0 => (151, 196, 0, 
False)));
             Table.States (59).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 151, 1)));
+            Table.States (60).Action_List.Set_Capacity (40);
             Add_Action (Table.States (60), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (325, 0), 1, null,
             null);
             Table.States (60).Kernel := To_Vector ((0 => (325, 206, 0, 
False)));
             Table.States (60).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 325, 1)));
+            Table.States (61).Action_List.Set_Capacity (3);
             Add_Action (Table.States (61), (35, 74, 96), (312, 1), 1, null, 
subprogram_specification_1_check'Access);
             Table.States (61).Kernel := To_Vector ((0 => (312, 207, 0, 
False)));
             Table.States (61).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 312, 1)));
+            Table.States (62).Action_List.Set_Capacity (40);
             Add_Action (Table.States (62), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 6), 1, null,
             null);
             Table.States (62).Kernel := To_Vector ((0 => (157, 209, 0, 
False)));
             Table.States (62).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (63).Action_List.Set_Capacity (3);
             Add_Action (Table.States (63), 29, 7);
             Add_Action (Table.States (63), 47, 230);
             Add_Action (Table.States (63), 50, 18);
-            Add_Error (Table.States (63));
+            Table.States (63).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (63), 207, 61);
             Add_Goto (Table.States (63), 251, 231);
             Add_Goto (Table.States (63), 262, 87);
             Add_Goto (Table.States (63), 312, 232);
             Table.States (63).Kernel := To_Vector (((214, 210, 5, False), 
(216, 210, 3, False)));
             Table.States (63).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 50, 18)));
+            Table.States (64).Action_List.Set_Capacity (40);
             Add_Action (Table.States (64), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 7), 1, null,
             null);
             Table.States (64).Kernel := To_Vector ((0 => (157, 213, 0, 
False)));
             Table.States (64).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (65).Action_List.Set_Capacity (40);
             Add_Action (Table.States (65), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (209, 1), 1, null,
             null);
             Table.States (65).Kernel := To_Vector ((0 => (209, 214, 0, 
False)));
             Table.States (65).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 209, 1)));
+            Table.States (66).Action_List.Set_Capacity (40);
             Add_Action (Table.States (66), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (289, 3), 1, null,
             null);
             Table.States (66).Kernel := To_Vector ((0 => (289, 215, 0, 
False)));
             Table.States (66).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 289, 1)));
+            Table.States (67).Action_List.Set_Capacity (40);
             Add_Action (Table.States (67), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (209, 0), 1, null,
             null);
             Table.States (67).Kernel := To_Vector ((0 => (209, 216, 0, 
False)));
             Table.States (67).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 209, 1)));
+            Table.States (68).Action_List.Set_Capacity (46);
             Add_Action (Table.States (68), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (306, 0), 1, null, null);
             Table.States (68).Kernel := To_Vector ((0 => (306, 217, 0, 
False)));
             Table.States (68).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 306, 1)));
+            Table.States (69).Action_List.Set_Capacity (2);
             Add_Action (Table.States (69), 81, 233);
             Add_Action (Table.States (69), 83, 234);
-            Add_Error (Table.States (69));
             Table.States (69).Kernel := To_Vector (((157, 219, 4, False), 
(186, 219, 3, False), (219, 219, 2, True),
             (244, 219, 4, False), (244, 219, 5, False), (244, 219, 11, False), 
(244, 219, 3, False), (244, 219, 4,
             False), (244, 219, 10, False)));
             Table.States (69).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 233)));
+            Table.States (70).Action_List.Set_Capacity (46);
             Add_Action (Table.States (70), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (151, 0), 1, null, null);
             Table.States (70).Kernel := To_Vector ((0 => (151, 222, 0, 
False)));
             Table.States (70).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 151, 1)));
+            Table.States (71).Action_List.Set_Capacity (40);
             Add_Action (Table.States (71), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (325, 1), 1, null,
             null);
             Table.States (71).Kernel := To_Vector ((0 => (325, 223, 0, 
False)));
             Table.States (71).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 325, 1)));
+            Table.States (72).Action_List.Set_Capacity (46);
             Add_Action (Table.States (72), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (151, 2), 1, null, null);
             Table.States (72).Kernel := To_Vector ((0 => (151, 232, 0, 
False)));
             Table.States (72).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 151, 1)));
+            Table.States (73).Action_List.Set_Capacity (6);
             Add_Action (Table.States (73), 76, 235);
             Add_Action (Table.States (73), 82, 236);
             Add_Action (Table.States (73), 84, 237);
             Add_Action (Table.States (73), 96, 238);
             Add_Action (Table.States (73), 101, 239);
             Add_Action (Table.States (73), 102, 240);
-            Add_Error (Table.States (73));
+            Table.States (73).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (73), 115, 241);
             Add_Goto (Table.States (73), 322, 242);
             Table.States (73).Kernel := To_Vector (((123, 239, 2, False), 
(128, 239, 2, True), (239, 239, 5, True),
             (239, 239, 2, True), (261, 239, 1, False), (272, 239, 3, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (73).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 238)));
+            Table.States (74).Action_List.Set_Capacity (40);
             Add_Action (Table.States (74), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 8), 1, null,
             null);
             Table.States (74).Kernel := To_Vector ((0 => (157, 243, 0, 
False)));
             Table.States (74).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (75).Action_List.Set_Capacity (40);
             Add_Action (Table.States (75), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 10), 1,
             null, null);
             Table.States (75).Kernel := To_Vector ((0 => (157, 244, 0, 
False)));
             Table.States (75).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (76).Action_List.Set_Capacity (40);
             Add_Action (Table.States (76), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (289, 0), 1, null,
             null);
             Table.States (76).Kernel := To_Vector ((0 => (289, 245, 0, 
False)));
             Table.States (76).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 289, 1)));
+            Table.States (77).Action_List.Set_Capacity (3);
             Add_Action (Table.States (77), 25, 243);
             Add_Action (Table.States (77), 29, 244);
             Add_Action (Table.States (77), 50, 245);
-            Add_Error (Table.States (77));
+            Table.States (77).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (77), 207, 246);
             Add_Goto (Table.States (77), 262, 247);
             Add_Goto (Table.States (77), 312, 248);
@@ -1068,99 +1132,118 @@ package body Ada_Process_LALR_Main is
             (193, 246, 7, False), (213, 246, 6, False), (213, 246, 6, False), 
(243, 246, 5, False), (307, 246, 6,
             False), (308, 246, 5, False), (309, 246, 3, False), (311, 246, 5, 
False)));
             Table.States (77).Minimal_Complete_Actions := To_Vector (((Shift, 
25, 243), (Shift, 50, 245)));
+            Table.States (78).Action_List.Set_Capacity (40);
             Add_Action (Table.States (78), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (263, 1), 1, null,
             null);
             Table.States (78).Kernel := To_Vector ((0 => (263, 247, 0, 
False)));
             Table.States (78).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 263, 1)));
+            Table.States (79).Action_List.Set_Capacity (40);
             Add_Action (Table.States (79), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (135, 1), 1, null,
             null);
             Table.States (79).Kernel := To_Vector ((0 => (135, 248, 0, 
False)));
             Table.States (79).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 135, 1)));
+            Table.States (80).Action_List.Set_Capacity (40);
             Add_Action (Table.States (80), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 11), 1,
             null, null);
             Table.States (80).Kernel := To_Vector ((0 => (157, 249, 0, 
False)));
             Table.States (80).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (81).Action_List.Set_Capacity (40);
             Add_Action (Table.States (81), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (289, 1), 1, null,
             null);
             Table.States (81).Kernel := To_Vector ((0 => (289, 250, 0, 
False)));
             Table.States (81).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 289, 1)));
+            Table.States (82).Action_List.Set_Capacity (1);
             Add_Action (Table.States (82), 96, 249);
-            Add_Error (Table.States (82));
             Table.States (82).Kernel := To_Vector ((0 => (249, 251, 1, 
False)));
             Table.States (82).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 249)));
+            Table.States (83).Action_List.Set_Capacity (46);
             Add_Action (Table.States (83), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (303, 10), 1, null, null);
             Table.States (83).Kernel := To_Vector ((0 => (303, 257, 0, 
False)));
             Table.States (83).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 303, 1)));
+            Table.States (84).Action_List.Set_Capacity (40);
             Add_Action (Table.States (84), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (325, 3), 1, null,
             null);
             Table.States (84).Kernel := To_Vector ((0 => (325, 259, 0, 
False)));
             Table.States (84).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 325, 1)));
+            Table.States (85).Action_List.Set_Capacity (40);
             Add_Action (Table.States (85), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (325, 2), 1, null,
             null);
             Table.States (85).Kernel := To_Vector ((0 => (325, 260, 0, 
False)));
             Table.States (85).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 325, 1)));
+            Table.States (86).Action_List.Set_Capacity (46);
             Add_Action (Table.States (86), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (303, 4), 1, null, null);
             Table.States (86).Kernel := To_Vector ((0 => (303, 261, 0, 
False)));
             Table.States (86).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 303, 1)));
+            Table.States (87).Action_List.Set_Capacity (3);
             Add_Action (Table.States (87), (35, 74, 96), (312, 0), 1, null, 
subprogram_specification_0_check'Access);
             Table.States (87).Kernel := To_Vector ((0 => (312, 262, 0, 
False)));
             Table.States (87).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 312, 1)));
+            Table.States (88).Action_List.Set_Capacity (40);
             Add_Action (Table.States (88), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (134, 0), 1, null,
             null);
             Table.States (88).Kernel := To_Vector ((0 => (134, 263, 0, 
False)));
             Table.States (88).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 134, 1)));
+            Table.States (89).Action_List.Set_Capacity (40);
             Add_Action (Table.States (89), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (263, 3), 1, null,
             null);
             Table.States (89).Kernel := To_Vector ((0 => (263, 264, 0, 
False)));
             Table.States (89).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 263, 1)));
+            Table.States (90).Action_List.Set_Capacity (40);
             Add_Action (Table.States (90), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (135, 3), 1, null,
             null);
             Table.States (90).Kernel := To_Vector ((0 => (135, 265, 0, 
False)));
             Table.States (90).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 135, 1)));
+            Table.States (91).Action_List.Set_Capacity (40);
             Add_Action (Table.States (91), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (206, 2), 1, null,
             null);
             Table.States (91).Kernel := To_Vector ((0 => (206, 271, 0, 
False)));
             Table.States (91).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 206, 1)));
+            Table.States (92).Action_List.Set_Capacity (63);
             Add_Action (Table.States (92), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (239, 4), 1, null, null);
             Table.States (92).Kernel := To_Vector ((0 => (239, 272, 0, True)));
             Table.States (92).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 1)));
             Table.States (92).Minimal_Complete_Actions_Recursive := True;
+            Table.States (93).Action_List.Set_Capacity (46);
             Add_Action (Table.States (93), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (303, 9), 1, null, null);
             Table.States (93).Kernel := To_Vector ((0 => (303, 276, 0, 
False)));
             Table.States (93).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 303, 1)));
+            Table.States (94).Action_List.Set_Capacity (41);
             Add_Action (Table.States (94), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 72, 73, 
74, 93, 104, 105, 106, 107), (121, 2), 1,
             null, null);
             Table.States (94).Kernel := To_Vector ((0 => (121, 281, 0, 
False)));
             Table.States (94).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 121, 1)));
+            Table.States (95).Action_List.Set_Capacity (40);
             Add_Action (Table.States (95), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 12), 1,
             null, null);
             Table.States (95).Kernel := To_Vector ((0 => (157, 289, 0, 
False)));
             Table.States (95).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (96).Action_List.Set_Capacity (46);
             Add_Action (Table.States (96), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (303, 6), 1, null, null);
             Table.States (96).Kernel := To_Vector ((0 => (303, 290, 0, 
False)));
             Table.States (96).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 303, 1)));
+            Table.States (97).Action_List.Set_Capacity (63);
             Add_Action (Table.States (97), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (239, 2), 1, null,
@@ -1168,133 +1251,157 @@ package body Ada_Process_LALR_Main is
             Table.States (97).Kernel := To_Vector ((0 => (239, 293, 0, True)));
             Table.States (97).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 1)));
             Table.States (97).Minimal_Complete_Actions_Recursive := True;
+            Table.States (98).Action_List.Set_Capacity (46);
             Add_Action (Table.States (98), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (298, 0), 1, null, null);
             Table.States (98).Kernel := To_Vector ((0 => (298, 294, 0, 
False)));
             Table.States (98).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 298, 1)));
+            Table.States (99).Action_List.Set_Capacity (46);
             Add_Action (Table.States (99), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (151, 6), 1, null, null);
             Table.States (99).Kernel := To_Vector ((0 => (151, 298, 0, 
False)));
             Table.States (99).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 151, 1)));
+            Table.States (100).Action_List.Set_Capacity (46);
             Add_Action (Table.States (100), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (303, 5), 1, null, null);
             Table.States (100).Kernel := To_Vector ((0 => (303, 302, 0, 
False)));
             Table.States (100).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 303, 1)));
+            Table.States (101).Action_List.Set_Capacity (46);
             Add_Action (Table.States (101), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (306, 1), 1, null, null);
             Table.States (101).Kernel := To_Vector ((0 => (306, 303, 0, 
False)));
             Table.States (101).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 306, 1)));
+            Table.States (102).Action_List.Set_Capacity (40);
             Add_Action (Table.States (102), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (244, 7), 1, null,
             null);
             Table.States (102).Kernel := To_Vector ((0 => (244, 304, 0, 
False)));
             Table.States (102).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 244, 1)));
+            Table.States (103).Action_List.Set_Capacity (40);
             Add_Action (Table.States (103), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (244, 6), 1, null,
             null);
             Table.States (103).Kernel := To_Vector ((0 => (244, 305, 0, 
False)));
             Table.States (103).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 244, 1)));
+            Table.States (104).Action_List.Set_Capacity (39);
             Add_Action (Table.States (104), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
             48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 93, 
104, 105, 106, 107), (142, 4), 1, null,
             null);
             Table.States (104).Kernel := To_Vector ((0 => (142, 306, 0, 
False)));
             Table.States (104).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 142, 1)));
+            Table.States (105).Action_List.Set_Capacity (40);
             Add_Action (Table.States (105), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (263, 0), 1, null,
             null);
             Table.States (105).Kernel := To_Vector ((0 => (263, 307, 0, 
False)));
             Table.States (105).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 263, 1)));
+            Table.States (106).Action_List.Set_Capacity (40);
             Add_Action (Table.States (106), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (135, 0), 1, null,
             null);
             Table.States (106).Kernel := To_Vector ((0 => (135, 308, 0, 
False)));
             Table.States (106).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 135, 1)));
+            Table.States (107).Action_List.Set_Capacity (40);
             Add_Action (Table.States (107), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 13), 1,
             null, null);
             Table.States (107).Kernel := To_Vector ((0 => (157, 309, 0, 
False)));
             Table.States (107).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (108).Action_List.Set_Capacity (40);
             Add_Action (Table.States (108), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (289, 2), 1, null,
             null);
             Table.States (108).Kernel := To_Vector ((0 => (289, 311, 0, 
False)));
             Table.States (108).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 289, 1)));
+            Table.States (109).Action_List.Set_Capacity (40);
             Add_Action (Table.States (109), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 14), 1,
             null, null);
             Table.States (109).Kernel := To_Vector ((0 => (157, 313, 0, 
False)));
             Table.States (109).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (110).Action_List.Set_Capacity (39);
             Add_Action (Table.States (110), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
             48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 93, 
104, 105, 106, 107), (142, 1), 1, null,
             null);
             Table.States (110).Kernel := To_Vector ((0 => (142, 315, 0, 
False)));
             Table.States (110).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 142, 1)));
+            Table.States (111).Action_List.Set_Capacity (40);
             Add_Action (Table.States (111), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (263, 2), 1, null,
             null);
             Table.States (111).Kernel := To_Vector ((0 => (263, 316, 0, 
False)));
             Table.States (111).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 263, 1)));
+            Table.States (112).Action_List.Set_Capacity (40);
             Add_Action (Table.States (112), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (135, 2), 1, null,
             null);
             Table.States (112).Kernel := To_Vector ((0 => (135, 317, 0, 
False)));
             Table.States (112).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 135, 1)));
+            Table.States (113).Action_List.Set_Capacity (40);
             Add_Action (Table.States (113), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (206, 1), 1, null,
             null);
             Table.States (113).Kernel := To_Vector ((0 => (206, 319, 0, 
False)));
             Table.States (113).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 206, 1)));
+            Table.States (114).Action_List.Set_Capacity (46);
             Add_Action (Table.States (114), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (298, 1), 1, null, null);
             Table.States (114).Kernel := To_Vector ((0 => (298, 323, 0, 
False)));
             Table.States (114).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 298, 1)));
+            Table.States (115).Action_List.Set_Capacity (40);
             Add_Action (Table.States (115), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 15), 1,
             null, null);
             Table.States (115).Kernel := To_Vector ((0 => (157, 325, 0, 
False)));
             Table.States (115).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (116).Action_List.Set_Capacity (40);
             Add_Action (Table.States (116), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 16), 1,
             null, null);
             Table.States (116).Kernel := To_Vector ((0 => (157, 331, 0, 
False)));
             Table.States (116).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
+            Table.States (117).Action_List.Set_Capacity (39);
             Add_Action (Table.States (117), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
             48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 93, 
104, 105, 106, 107), (142, 0), 1, null,
             null);
             Table.States (117).Kernel := To_Vector ((0 => (142, 332, 0, 
False)));
             Table.States (117).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 142, 1)));
+            Table.States (118).Action_List.Set_Capacity (3);
             Add_Action (Table.States (118), 21, Reduce, (116, 1), 0, null, 
null);
             Add_Action (Table.States (118), 76, 250);
             Add_Conflict (Table.States (118), 76, (116, 1), 0, null, null);
             Add_Action (Table.States (118), 96, Reduce, (116, 1), 0, null, 
null);
-            Add_Error (Table.States (118));
+            Table.States (118).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (118), 115, 251);
             Add_Goto (Table.States (118), 116, 252);
             Table.States (118).Kernel := To_Vector (((113, 104, 3, False), 
(113, 104, 1, False)));
             Table.States (118).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 116, 0)));
+            Table.States (119).Action_List.Set_Capacity (62);
             Add_Action (Table.States (119), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
-            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
-            88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (239, 5), 1, name_5'Access,
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 73, 74, 75, 
76, 77, 78, 79, 82, 83, 84, 85, 86, 87, 88,
+            89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 105, 
106), (239, 5), 1, name_5'Access,
             name_5_check'Access);
             Table.States (119).Kernel := To_Vector ((0 => (239, 104, 0, 
False)));
             Table.States (119).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 1)));
+            Table.States (120).Action_List.Set_Capacity (5);
             Add_Action (Table.States (120), 76, 235);
             Add_Action (Table.States (120), 84, 237);
             Add_Action (Table.States (120), 96, 253);
             Add_Action (Table.States (120), 101, 239);
             Add_Action (Table.States (120), 102, 240);
-            Add_Error (Table.States (120));
+            Table.States (120).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (120), 115, 241);
             Add_Goto (Table.States (120), 322, 242);
             Table.States (120).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (272, 239, 3, True), (293, 239, 2, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (303, 239, 1, False)));
             Table.States (120).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 253)));
+            Table.States (121).Action_List.Set_Capacity (7);
             Add_Action (Table.States (121), 39, 122);
             Add_Action (Table.States (121), 41, 124);
             Add_Action (Table.States (121), 76, 126);
@@ -1302,7 +1409,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (121), 104, 119);
             Add_Action (Table.States (121), 105, 33);
             Add_Action (Table.States (121), 106, 34);
-            Add_Error (Table.States (121));
+            Table.States (121).Goto_List.Set_Capacity (6);
             Add_Goto (Table.States (121), 117, 130);
             Add_Goto (Table.States (121), 128, 41);
             Add_Goto (Table.States (121), 239, 134);
@@ -1311,16 +1418,18 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (121), 293, 97);
             Table.States (121).Kernel := To_Vector ((0 => (197, 3, 1, False)));
             Table.States (121).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (122).Action_List.Set_Capacity (3);
             Add_Action (Table.States (122), 104, 119);
             Add_Action (Table.States (122), 105, 33);
             Add_Action (Table.States (122), 106, 34);
-            Add_Error (Table.States (122));
+            Table.States (122).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (122), 128, 41);
             Add_Goto (Table.States (122), 239, 255);
             Add_Goto (Table.States (122), 272, 92);
             Add_Goto (Table.States (122), 293, 97);
             Table.States (122).Kernel := To_Vector ((0 => (258, 39, 1, 
False)));
             Table.States (122).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (123).Action_List.Set_Capacity (7);
             Add_Action (Table.States (123), 39, 122);
             Add_Action (Table.States (123), 41, 124);
             Add_Action (Table.States (123), 76, 126);
@@ -1328,7 +1437,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (123), 104, 119);
             Add_Action (Table.States (123), 105, 33);
             Add_Action (Table.States (123), 106, 34);
-            Add_Error (Table.States (123));
+            Table.States (123).Goto_List.Set_Capacity (6);
             Add_Goto (Table.States (123), 117, 130);
             Add_Goto (Table.States (123), 128, 41);
             Add_Goto (Table.States (123), 239, 134);
@@ -1337,20 +1446,23 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (123), 293, 97);
             Table.States (123).Kernel := To_Vector ((0 => (197, 40, 1, 
False)));
             Table.States (123).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (124).Action_List.Set_Capacity (36);
             Add_Action (Table.States (124), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
             78, 79, 82, 83, 85, 86, 87, 88, 89, 91, 92, 94, 95, 96, 97, 98, 
99, 100), (258, 1), 1, null, null);
             Table.States (124).Kernel := To_Vector ((0 => (258, 41, 0, 
False)));
             Table.States (124).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 1)));
+            Table.States (125).Action_List.Set_Capacity (3);
             Add_Action (Table.States (125), 104, 119);
             Add_Action (Table.States (125), 105, 33);
             Add_Action (Table.States (125), 106, 34);
-            Add_Error (Table.States (125));
+            Table.States (125).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (125), 128, 41);
             Add_Goto (Table.States (125), 239, 257);
             Add_Goto (Table.States (125), 272, 92);
             Add_Goto (Table.States (125), 293, 97);
             Table.States (125).Kernel := To_Vector (((275, 52, 2, True), (275, 
52, 1, False)));
             Table.States (125).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (126).Action_List.Set_Capacity (21);
             Add_Action (Table.States (126), 3, 121);
             Add_Action (Table.States (126), 15, 258);
             Add_Action (Table.States (126), 28, 259);
@@ -1372,7 +1484,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (126), 104, 119);
             Add_Action (Table.States (126), 105, 33);
             Add_Action (Table.States (126), 106, 264);
-            Add_Error (Table.States (126));
+            Table.States (126).Goto_List.Set_Capacity (29);
             Add_Goto (Table.States (126), 117, 130);
             Add_Goto (Table.States (126), 124, 265);
             Add_Goto (Table.States (126), 125, 266);
@@ -1405,35 +1517,42 @@ package body Ada_Process_LALR_Main is
             Table.States (126).Kernel := To_Vector (((117, 76, 4, False), 
(117, 76, 2, False), (117, 76, 3, False),
             (117, 76, 3, False), (117, 76, 1, False)));
             Table.States (126).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 0)));
+            Table.States (127).Action_List.Set_Capacity (9);
             Add_Action (Table.States (127), (3, 39, 40, 41, 76, 103, 104, 105, 
106), (330, 1), 1, null, null);
             Table.States (127).Kernel := To_Vector ((0 => (330, 94, 0, 
False)));
             Table.States (127).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 330, 1)));
+            Table.States (128).Action_List.Set_Capacity (9);
             Add_Action (Table.States (128), (3, 39, 40, 41, 76, 103, 104, 105, 
106), (330, 0), 1, null, null);
             Table.States (128).Kernel := To_Vector ((0 => (330, 95, 0, 
False)));
             Table.States (128).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 330, 1)));
+            Table.States (129).Action_List.Set_Capacity (36);
             Add_Action (Table.States (129), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
             78, 79, 82, 83, 85, 86, 87, 88, 89, 91, 92, 94, 95, 96, 97, 98, 
99, 100), (258, 0), 1, primary_0'Access,
             null);
             Table.States (129).Kernel := To_Vector ((0 => (258, 103, 0, 
False)));
             Table.States (129).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 1)));
+            Table.States (130).Action_List.Set_Capacity (36);
             Add_Action (Table.States (130), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
             78, 79, 82, 83, 85, 86, 87, 88, 89, 91, 92, 94, 95, 96, 97, 98, 
99, 100), (258, 2), 1, primary_2'Access,
             null);
             Table.States (130).Kernel := To_Vector ((0 => (258, 117, 0, 
False)));
             Table.States (130).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 1)));
+            Table.States (131).Action_List.Set_Capacity (17);
             Add_Action (Table.States (131), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (192,
             0), 1, null, null);
             Table.States (131).Kernel := To_Vector ((0 => (192, 191, 0, 
True)));
             Table.States (131).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 1)));
             Table.States (131).Minimal_Complete_Actions_Recursive := True;
+            Table.States (132).Action_List.Set_Capacity (1);
             Add_Action (Table.States (132), 35, 278);
-            Add_Error (Table.States (132));
             Table.States (132).Kernel := To_Vector ((0 => (139, 192, 6, 
False)));
             Table.States (132).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 278)));
+            Table.States (133).Action_List.Set_Capacity (35);
             Add_Action (Table.States (133), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
             78, 79, 82, 83, 85, 86, 87, 88, 89, 91, 92, 94, 95, 96, 97, 98, 
99), (320, 1), 1, null, null);
             Table.States (133).Kernel := To_Vector ((0 => (320, 197, 0, 
False)));
             Table.States (133).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 320, 1)));
+            Table.States (134).Action_List.Set_Capacity (40);
             Add_Action (Table.States (134), 10, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (134), 20, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (134), 21, Reduce, (258, 3), 1, null, 
null);
@@ -1474,13 +1593,14 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (134), 100, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (134), 101, 239);
             Add_Action (Table.States (134), 102, 240);
-            Add_Error (Table.States (134));
+            Table.States (134).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (134), 115, 241);
             Add_Goto (Table.States (134), 322, 242);
             Table.States (134).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (258, 239, 0, False), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (134).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 1)));
+            Table.States (135).Action_List.Set_Capacity (36);
             Add_Action (Table.States (135), 10, Reduce, (197, 1), 1, null, 
null);
             Add_Action (Table.States (135), 20, Reduce, (197, 1), 1, null, 
null);
             Add_Action (Table.States (135), 21, Reduce, (197, 1), 1, null, 
null);
@@ -1517,14 +1637,15 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (135), 98, Reduce, (197, 1), 1, null, 
null);
             Add_Action (Table.States (135), 99, Reduce, (197, 1), 1, null, 
null);
             Add_Action (Table.States (135), 100, 279);
-            Add_Error (Table.States (135));
             Table.States (135).Kernel := To_Vector (((197, 258, 2, False), 
(197, 258, 0, False)));
             Table.States (135).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 197, 1)));
+            Table.States (136).Action_List.Set_Capacity (17);
             Add_Action (Table.States (136), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (287,
             4), 1, null, null);
             Table.States (136).Kernel := To_Vector ((0 => (287, 275, 0, 
True)));
             Table.States (136).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 287, 1)));
             Table.States (136).Minimal_Complete_Actions_Recursive := True;
+            Table.States (137).Action_List.Set_Capacity (17);
             Add_Action (Table.States (137), 10, 280);
             Add_Conflict (Table.States (137), 10, (191, 1), 1, null, null);
             Add_Action (Table.States (137), 20, Reduce, (191, 1), 1, null, 
null);
@@ -1543,10 +1664,10 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (137), 83, Reduce, (191, 1), 1, null, 
null);
             Add_Action (Table.States (137), 87, Reduce, (191, 1), 1, null, 
null);
             Add_Action (Table.States (137), 96, Reduce, (191, 1), 1, null, 
null);
-            Add_Error (Table.States (137));
             Table.States (137).Kernel := To_Vector (((191, 282, 0, True), 
(282, 282, 2, True)));
             Table.States (137).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 191, 1)));
             Table.States (137).Minimal_Complete_Actions_Recursive := True;
+            Table.States (138).Action_List.Set_Capacity (17);
             Add_Action (Table.States (138), 10, 281);
             Add_Conflict (Table.States (138), 10, (191, 2), 1, null, null);
             Add_Action (Table.States (138), 20, Reduce, (191, 2), 1, null, 
null);
@@ -1565,10 +1686,10 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (138), 83, Reduce, (191, 2), 1, null, 
null);
             Add_Action (Table.States (138), 87, Reduce, (191, 2), 1, null, 
null);
             Add_Action (Table.States (138), 96, Reduce, (191, 2), 1, null, 
null);
-            Add_Error (Table.States (138));
             Table.States (138).Kernel := To_Vector (((191, 283, 0, True), 
(283, 283, 3, True)));
             Table.States (138).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 191, 1)));
             Table.States (138).Minimal_Complete_Actions_Recursive := True;
+            Table.States (139).Action_List.Set_Capacity (17);
             Add_Action (Table.States (139), 10, Reduce, (191, 3), 1, null, 
null);
             Add_Action (Table.States (139), 20, Reduce, (191, 3), 1, null, 
null);
             Add_Action (Table.States (139), 21, Reduce, (191, 3), 1, null, 
null);
@@ -1587,10 +1708,13 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (139), 83, Reduce, (191, 3), 1, null, 
null);
             Add_Action (Table.States (139), 87, Reduce, (191, 3), 1, null, 
null);
             Add_Action (Table.States (139), 96, Reduce, (191, 3), 1, null, 
null);
-            Add_Error (Table.States (139));
             Table.States (139).Kernel := To_Vector (((191, 284, 0, True), 
(284, 284, 2, True)));
             Table.States (139).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 191, 1)));
             Table.States (139).Minimal_Complete_Actions_Recursive := True;
+         end Subr_2;
+         procedure Subr_3
+         is begin
+            Table.States (140).Action_List.Set_Capacity (17);
             Add_Action (Table.States (140), 10, Reduce, (191, 4), 1, null, 
null);
             Add_Action (Table.States (140), 20, Reduce, (191, 4), 1, null, 
null);
             Add_Action (Table.States (140), 21, Reduce, (191, 4), 1, null, 
null);
@@ -1609,13 +1733,10 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (140), 83, Reduce, (191, 4), 1, null, 
null);
             Add_Action (Table.States (140), 87, Reduce, (191, 4), 1, null, 
null);
             Add_Action (Table.States (140), 96, Reduce, (191, 4), 1, null, 
null);
-            Add_Error (Table.States (140));
             Table.States (140).Kernel := To_Vector (((191, 285, 0, True), 
(285, 285, 3, True)));
             Table.States (140).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 191, 1)));
             Table.States (140).Minimal_Complete_Actions_Recursive := True;
-         end Subr_2;
-         procedure Subr_3
-         is begin
+            Table.States (141).Action_List.Set_Capacity (17);
             Add_Action (Table.States (141), 10, Reduce, (191, 5), 1, null, 
null);
             Add_Action (Table.States (141), 20, Reduce, (191, 5), 1, null, 
null);
             Add_Action (Table.States (141), 21, Reduce, (191, 5), 1, null, 
null);
@@ -1634,10 +1755,10 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (141), 83, Reduce, (191, 5), 1, null, 
null);
             Add_Action (Table.States (141), 87, Reduce, (191, 5), 1, null, 
null);
             Add_Action (Table.States (141), 96, Reduce, (191, 5), 1, null, 
null);
-            Add_Error (Table.States (141));
             Table.States (141).Kernel := To_Vector (((191, 286, 0, True), 
(286, 286, 2, True)));
             Table.States (141).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 191, 1)));
             Table.States (141).Minimal_Complete_Actions_Recursive := True;
+            Table.States (142).Action_List.Set_Capacity (17);
             Add_Action (Table.States (142), 10, 285);
             Add_Conflict (Table.States (142), 10, (191, 0), 1, null, null);
             Add_Action (Table.States (142), 20, Reduce, (191, 0), 1, null, 
null);
@@ -1658,11 +1779,11 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (142), 83, Reduce, (191, 0), 1, null, 
null);
             Add_Action (Table.States (142), 87, Reduce, (191, 0), 1, null, 
null);
             Add_Action (Table.States (142), 96, Reduce, (191, 0), 1, null, 
null);
-            Add_Error (Table.States (142));
             Table.States (142).Kernel := To_Vector (((191, 287, 0, True), 
(282, 287, 2, True), (283, 287, 3, True),
             (284, 287, 2, True), (285, 287, 3, True), (286, 287, 2, True)));
             Table.States (142).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 191, 1)));
             Table.States (142).Minimal_Complete_Actions_Recursive := True;
+            Table.States (143).Action_List.Set_Capacity (25);
             Add_Action (Table.States (143), 10, Reduce, (287, 3), 1, null, 
null);
             Add_Action (Table.States (143), 20, Reduce, (287, 3), 1, null, 
null);
             Add_Action (Table.States (143), 21, Reduce, (287, 3), 1, null, 
null);
@@ -1688,11 +1809,12 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (143), 92, 294);
             Add_Action (Table.States (143), 96, Reduce, (287, 3), 1, null, 
null);
             Add_Action (Table.States (143), 98, 295);
-            Add_Error (Table.States (143));
+            Table.States (143).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (143), 288, 296);
             Table.States (143).Kernel := To_Vector (((287, 301, 3, False), 
(287, 301, 2, False), (287, 301, 2, False),
             (287, 301, 0, False)));
             Table.States (143).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 287, 1)));
+            Table.States (144).Action_List.Set_Capacity (35);
             Add_Action (Table.States (144), 10, Reduce, (321, 1), 1, null, 
null);
             Add_Action (Table.States (144), 20, Reduce, (321, 1), 1, null, 
null);
             Add_Action (Table.States (144), 21, Reduce, (321, 1), 1, null, 
null);
@@ -1728,10 +1850,11 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (144), 97, 299);
             Add_Action (Table.States (144), 98, Reduce, (321, 1), 1, null, 
null);
             Add_Action (Table.States (144), 99, 300);
-            Add_Error (Table.States (144));
+            Table.States (144).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (144), 237, 301);
             Table.States (144).Kernel := To_Vector (((320, 320, 2, True), 
(321, 320, 0, False)));
             Table.States (144).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 321, 1)));
+            Table.States (145).Action_List.Set_Capacity (31);
             Add_Action (Table.States (145), 10, Reduce, (301, 1), 1, null, 
null);
             Add_Action (Table.States (145), 20, Reduce, (301, 1), 1, null, 
null);
             Add_Action (Table.States (145), 21, Reduce, (301, 1), 1, null, 
null);
@@ -1763,10 +1886,11 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (145), 95, 304);
             Add_Action (Table.States (145), 96, Reduce, (301, 1), 1, null, 
null);
             Add_Action (Table.States (145), 98, Reduce, (301, 1), 1, null, 
null);
-            Add_Error (Table.States (145));
+            Table.States (145).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (145), 130, 305);
             Table.States (145).Kernel := To_Vector (((301, 321, 0, False), 
(321, 321, 2, True)));
             Table.States (145).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 1)));
+            Table.States (146).Action_List.Set_Capacity (9);
             Add_Action (Table.States (146), 3, 121);
             Add_Action (Table.States (146), 39, 122);
             Add_Action (Table.States (146), 40, 123);
@@ -1776,7 +1900,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (146), 104, 119);
             Add_Action (Table.States (146), 105, 33);
             Add_Action (Table.States (146), 106, 34);
-            Add_Error (Table.States (146));
+            Table.States (146).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (146), 117, 130);
             Add_Goto (Table.States (146), 128, 41);
             Add_Goto (Table.States (146), 197, 133);
@@ -1788,6 +1912,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (146), 321, 306);
             Table.States (146).Kernel := To_Vector ((0 => (301, 330, 1, 
False)));
             Table.States (146).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (147).Action_List.Set_Capacity (13);
             Add_Action (Table.States (147), 3, 121);
             Add_Action (Table.States (147), 39, 122);
             Add_Action (Table.States (147), 40, 123);
@@ -1801,7 +1926,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (147), 104, 119);
             Add_Action (Table.States (147), 105, 33);
             Add_Action (Table.States (147), 106, 34);
-            Add_Error (Table.States (147));
+            Table.States (147).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (147), 117, 130);
             Add_Goto (Table.States (147), 128, 41);
             Add_Goto (Table.States (147), 191, 131);
@@ -1824,18 +1949,20 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (147), 330, 146);
             Table.States (147).Kernel := To_Vector ((0 => (161, 70, 1, 
False)));
             Table.States (147).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (148).Action_List.Set_Capacity (1);
             Add_Action (Table.States (148), 96, 308);
-            Add_Error (Table.States (148));
             Table.States (148).Kernel := To_Vector ((0 => (161, 192, 1, 
False)));
             Table.States (148).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 308)));
+            Table.States (149).Action_List.Set_Capacity (2);
             Add_Action (Table.States (149), (72, 96), (220, 0), 1, null, 
identifier_opt_0_check'Access);
             Table.States (149).Kernel := To_Vector ((0 => (220, 104, 0, 
False)));
             Table.States (149).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 1)));
+            Table.States (150).Action_List.Set_Capacity (2);
             Add_Action (Table.States (150), 72, 309);
             Add_Action (Table.States (150), 96, 310);
-            Add_Error (Table.States (150));
             Table.States (150).Kernel := To_Vector (((190, 220, 2, False), 
(190, 220, 1, False)));
             Table.States (150).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 310)));
+            Table.States (151).Action_List.Set_Capacity (8);
             Add_Action (Table.States (151), 33, 311);
             Add_Action (Table.States (151), 42, 312);
             Add_Action (Table.States (151), 71, Reduce, (163, 0), 1, null, 
null);
@@ -1845,58 +1972,61 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (151), 84, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (151), 101, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (151), 102, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Error (Table.States (151));
             Table.States (151).Kernel := To_Vector (((163, 104, 0, False), 
(230, 104, 5, False), (230, 104, 4, False),
             (230, 104, 3, False), (230, 104, 3, False), (230, 104, 2, False), 
(230, 104, 2, False), (239, 104, 0,
             False)));
             Table.States (151).Minimal_Complete_Actions := To_Vector 
(((Reduce, 163, 1), (Reduce, 239, 1)));
+            Table.States (152).Action_List.Set_Capacity (5);
             Add_Action (Table.States (152), 71, Reduce, (163, 1), 1, null, 
null);
             Add_Conflict (Table.States (152), 71, (239, 7), 1, null, 
name_7_check'Access);
             Add_Action (Table.States (152), 76, Reduce, (239, 7), 1, null, 
name_7_check'Access);
             Add_Action (Table.States (152), 84, Reduce, (239, 7), 1, null, 
name_7_check'Access);
             Add_Action (Table.States (152), 101, Reduce, (239, 7), 1, null, 
name_7_check'Access);
             Add_Action (Table.States (152), 102, Reduce, (239, 7), 1, null, 
name_7_check'Access);
-            Add_Error (Table.States (152));
             Table.States (152).Kernel := To_Vector (((163, 105, 0, False), 
(239, 105, 0, False)));
             Table.States (152).Minimal_Complete_Actions := To_Vector 
(((Reduce, 163, 1), (Reduce, 239, 1)));
+            Table.States (153).Action_List.Set_Capacity (5);
             Add_Action (Table.States (153), 71, 314);
             Add_Conflict (Table.States (153), 71, (239, 3), 1, null, null);
             Add_Action (Table.States (153), 76, Reduce, (239, 3), 1, null, 
null);
             Add_Action (Table.States (153), 84, Reduce, (239, 3), 1, null, 
null);
             Add_Action (Table.States (153), 101, Reduce, (239, 3), 1, null, 
null);
             Add_Action (Table.States (153), 102, Reduce, (239, 3), 1, null, 
null);
-            Add_Error (Table.States (153));
             Table.States (153).Kernel := To_Vector (((121, 128, 2, False), 
(239, 128, 0, True)));
             Table.States (153).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 1)));
             Table.States (153).Minimal_Complete_Actions_Recursive := True;
+            Table.States (154).Action_List.Set_Capacity (1);
             Add_Action (Table.States (154), 71, 315);
-            Add_Error (Table.States (154));
             Table.States (154).Kernel := To_Vector ((0 => (127, 163, 3, 
False)));
             Table.States (154).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 71, 315)));
+            Table.States (155).Action_List.Set_Capacity (1);
             Add_Action (Table.States (155), (1 =>  37), (231, 0), 1, null, 
null);
             Table.States (155).Kernel := To_Vector ((0 => (231, 230, 0, 
False)));
             Table.States (155).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 231, 1)));
+            Table.States (156).Action_List.Set_Capacity (1);
             Add_Action (Table.States (156), (1 =>  37), (229, 1), 2, 
iteration_scheme_1'Access, null);
             Table.States (156).Kernel := To_Vector ((0 => (229, 231, 0, 
False)));
             Table.States (156).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 229, 2)));
+            Table.States (157).Action_List.Set_Capacity (5);
             Add_Action (Table.States (157), 71, 316);
             Add_Action (Table.States (157), 76, 235);
             Add_Action (Table.States (157), 84, 237);
             Add_Action (Table.States (157), 101, 239);
             Add_Action (Table.States (157), 102, 240);
-            Add_Error (Table.States (157));
+            Table.States (157).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (157), 115, 241);
             Add_Goto (Table.States (157), 322, 242);
             Table.States (157).Kernel := To_Vector (((128, 239, 2, True), 
(182, 239, 4, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (281, 239, 13, False), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (157).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 71, 316)));
+            Table.States (158).Action_List.Set_Capacity (5);
             Add_Action (Table.States (158), 58, 317);
             Add_Action (Table.States (158), 76, 318);
             Add_Action (Table.States (158), 84, 237);
             Add_Action (Table.States (158), 101, 239);
             Add_Action (Table.States (158), 102, 240);
-            Add_Error (Table.States (158));
+            Table.States (158).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (158), 115, 241);
             Add_Goto (Table.States (158), 199, 319);
             Add_Goto (Table.States (158), 252, 320);
@@ -1906,65 +2036,75 @@ package body Ada_Process_LALR_Main is
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (158).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 58, 317)));
+            Table.States (159).Action_List.Set_Capacity (3);
             Add_Action (Table.States (159), 104, 119);
             Add_Action (Table.States (159), 105, 33);
             Add_Action (Table.States (159), 106, 34);
-            Add_Error (Table.States (159));
+            Table.States (159).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (159), 128, 41);
             Add_Goto (Table.States (159), 239, 322);
             Add_Goto (Table.States (159), 272, 92);
             Add_Goto (Table.States (159), 293, 97);
             Table.States (159).Kernel := To_Vector ((0 => (215, 29, 4, 
False)));
             Table.States (159).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (160).Action_List.Set_Capacity (3);
             Add_Action (Table.States (160), 104, 119);
             Add_Action (Table.States (160), 105, 33);
             Add_Action (Table.States (160), 106, 34);
-            Add_Error (Table.States (160));
+            Table.States (160).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (160), 128, 41);
             Add_Goto (Table.States (160), 239, 323);
             Add_Goto (Table.States (160), 272, 92);
             Add_Goto (Table.States (160), 293, 97);
             Table.States (160).Kernel := To_Vector ((0 => (215, 47, 4, 
False)));
             Table.States (160).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (161).Action_List.Set_Capacity (3);
             Add_Action (Table.States (161), 104, 119);
             Add_Action (Table.States (161), 105, 33);
             Add_Action (Table.States (161), 106, 34);
-            Add_Error (Table.States (161));
+            Table.States (161).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (161), 128, 41);
             Add_Goto (Table.States (161), 239, 324);
             Add_Goto (Table.States (161), 272, 92);
             Add_Goto (Table.States (161), 293, 97);
             Table.States (161).Kernel := To_Vector ((0 => (215, 50, 4, 
False)));
             Table.States (161).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (162).Action_List.Set_Capacity (1);
             Add_Action (Table.States (162), 104, 325);
-            Add_Error (Table.States (162));
             Table.States (162).Kernel := To_Vector (((201, 69, 4, False), 
(201, 69, 4, False), (201, 69, 2, False)));
             Table.States (162).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 325)));
+            Table.States (163).Action_List.Set_Capacity (3);
             Add_Action (Table.States (163), 29, 7);
             Add_Action (Table.States (163), 47, 326);
             Add_Action (Table.States (163), 50, 18);
-            Add_Error (Table.States (163));
+            Table.States (163).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (163), 207, 61);
             Add_Goto (Table.States (163), 262, 87);
             Add_Goto (Table.States (163), 312, 327);
             Table.States (163).Kernel := To_Vector (((200, 74, 6, False), 
(200, 74, 5, False), (200, 74, 5, False),
             (200, 74, 3, False), (204, 74, 6, False)));
             Table.States (163).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 50, 18)));
+            Table.States (164).Action_List.Set_Capacity (2);
             Add_Action (Table.States (164), (81, 83), (219, 1), 1, 
identifier_list_1'Access, null);
             Table.States (164).Kernel := To_Vector ((0 => (219, 104, 0, 
False)));
             Table.States (164).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 219, 1)));
+            Table.States (165).Action_List.Set_Capacity (8);
             Add_Action (Table.States (165), (29, 47, 48, 50, 69, 71, 74, 104), 
(212, 0), 1, null, null);
             Table.States (165).Kernel := To_Vector ((0 => (212, 198, 0, 
False)));
             Table.States (165).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 212, 1)));
+            Table.States (166).Action_List.Set_Capacity (8);
             Add_Action (Table.States (166), (29, 47, 48, 50, 69, 71, 74, 104), 
(212, 2), 1, null, null);
             Table.States (166).Kernel := To_Vector ((0 => (212, 200, 0, 
False)));
             Table.States (166).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 212, 1)));
+            Table.States (167).Action_List.Set_Capacity (8);
             Add_Action (Table.States (167), (29, 47, 48, 50, 69, 71, 74, 104), 
(212, 1), 1, null, null);
             Table.States (167).Kernel := To_Vector ((0 => (212, 201, 0, 
False)));
             Table.States (167).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 212, 1)));
+            Table.States (168).Action_List.Set_Capacity (8);
             Add_Action (Table.States (168), (29, 47, 48, 50, 69, 71, 74, 104), 
(212, 3), 1, null, null);
             Table.States (168).Kernel := To_Vector ((0 => (212, 204, 0, 
False)));
             Table.States (168).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 212, 1)));
+            Table.States (169).Action_List.Set_Capacity (8);
             Add_Action (Table.States (169), 29, Reduce, (210, 0), 2, 
generic_formal_part_0'Access, null);
             Add_Action (Table.States (169), 47, Reduce, (210, 0), 2, 
generic_formal_part_0'Access, null);
             Add_Action (Table.States (169), 48, 16);
@@ -1973,7 +2113,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (169), 71, 28);
             Add_Action (Table.States (169), 74, 163);
             Add_Action (Table.States (169), 104, 164);
-            Add_Error (Table.States (169));
+            Table.States (169).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (169), 198, 165);
             Add_Goto (Table.States (169), 200, 166);
             Add_Goto (Table.States (169), 201, 167);
@@ -1984,38 +2124,42 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (169), 331, 173);
             Table.States (169).Kernel := To_Vector (((210, 211, 0, False), 
(211, 211, 3, True)));
             Table.States (169).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 210, 2)));
+            Table.States (170).Action_List.Set_Capacity (8);
             Add_Action (Table.States (170), (29, 47, 48, 50, 69, 71, 74, 104), 
(211, 1), 1, null, null);
             Table.States (170).Kernel := To_Vector ((0 => (211, 212, 0, 
False)));
             Table.States (170).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 211, 1)));
+            Table.States (171).Action_List.Set_Capacity (2);
             Add_Action (Table.States (171), 81, 329);
             Add_Action (Table.States (171), 83, 234);
-            Add_Error (Table.States (171));
             Table.States (171).Kernel := To_Vector (((198, 219, 4, False), 
(198, 219, 5, False), (198, 219, 3, False),
             (198, 219, 4, False), (219, 219, 2, True)));
             Table.States (171).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 329)));
+            Table.States (172).Action_List.Set_Capacity (8);
             Add_Action (Table.States (172), (29, 47, 48, 50, 69, 71, 74, 104), 
(212, 4), 1, null, null);
             Table.States (172).Kernel := To_Vector ((0 => (212, 257, 0, 
False)));
             Table.States (172).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 212, 1)));
+            Table.States (173).Action_List.Set_Capacity (8);
             Add_Action (Table.States (173), (29, 47, 48, 50, 69, 71, 74, 104), 
(212, 5), 1, null, null);
             Table.States (173).Kernel := To_Vector ((0 => (212, 331, 0, 
False)));
             Table.States (173).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 212, 1)));
+            Table.States (174).Action_List.Set_Capacity (1);
             Add_Action (Table.States (174), 96, 330);
-            Add_Error (Table.States (174));
             Table.States (174).Kernel := To_Vector ((0 => (303, 104, 1, 
False)));
             Table.States (174).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 330)));
+            Table.States (175).Action_List.Set_Capacity (1);
             Add_Action (Table.States (175), 68, 331);
-            Add_Error (Table.States (175));
             Table.States (175).Kernel := To_Vector (((222, 192, 7, False), 
(222, 192, 5, False), (222, 192, 6, False),
             (222, 192, 4, False)));
             Table.States (175).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 331)));
+            Table.States (176).Action_List.Set_Capacity (1);
             Add_Action (Table.States (176), 74, 332);
-            Add_Error (Table.States (176));
             Table.States (176).Kernel := To_Vector ((0 => (332, 49, 3, 
False)));
             Table.States (176).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 332)));
+            Table.States (177).Action_List.Set_Capacity (3);
             Add_Action (Table.States (177), 104, 119);
             Add_Action (Table.States (177), 105, 33);
             Add_Action (Table.States (177), 106, 34);
-            Add_Error (Table.States (177));
+            Table.States (177).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (177), 128, 41);
             Add_Goto (Table.States (177), 238, 333);
             Add_Goto (Table.States (177), 239, 219);
@@ -2023,24 +2167,28 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (177), 293, 97);
             Table.States (177).Kernel := To_Vector ((0 => (332, 74, 2, 
False)));
             Table.States (177).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (178).Action_List.Set_Capacity (3);
             Add_Action (Table.States (178), (25, 29, 50), (246, 0), 2, 
overriding_indicator_opt_0'Access, null);
             Table.States (178).Kernel := To_Vector ((0 => (246, 46, 0, 
False)));
             Table.States (178).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 246, 2)));
+            Table.States (179).Action_List.Set_Capacity (46);
             Add_Action (Table.States (179), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (303, 0), 2, simple_statement_0'Access, null);
             Table.States (179).Kernel := To_Vector ((0 => (303, 96, 0, 
False)));
             Table.States (179).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 303, 2)));
+            Table.States (180).Action_List.Set_Capacity (3);
             Add_Action (Table.States (180), 104, 119);
             Add_Action (Table.States (180), 105, 33);
             Add_Action (Table.States (180), 106, 34);
-            Add_Error (Table.States (180));
+            Table.States (180).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (180), 128, 41);
             Add_Goto (Table.States (180), 239, 334);
             Add_Goto (Table.States (180), 272, 92);
             Add_Goto (Table.States (180), 293, 97);
             Table.States (180).Kernel := To_Vector (((247, 14, 5, False), 
(247, 14, 4, False), (248, 14, 4, False)));
             Table.States (180).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (181).Action_List.Set_Capacity (7);
             Add_Action (Table.States (181), 35, 335);
             Add_Conflict (Table.States (181), 35, (122, 1), 0, null, null);
             Add_Action (Table.States (181), 56, 336);
@@ -2049,7 +2197,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (181), 84, 237);
             Add_Action (Table.States (181), 101, 239);
             Add_Action (Table.States (181), 102, 240);
-            Add_Error (Table.States (181));
+            Table.States (181).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (181), 115, 241);
             Add_Goto (Table.States (181), 122, 338);
             Add_Goto (Table.States (181), 322, 242);
@@ -2057,16 +2205,17 @@ package body Ada_Process_LALR_Main is
             (239, 239, 2, True), (250, 239, 3, False), (251, 239, 3, False), 
(251, 239, 2, False), (272, 239, 3, True),
             (293, 239, 2, True), (293, 239, 2, True), (293, 239, 2, True), 
(293, 239, 2, True)));
             Table.States (181).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (182).Action_List.Set_Capacity (2);
             Add_Action (Table.States (182), 76, 339);
             Add_Action (Table.States (182), 96, 340);
-            Add_Error (Table.States (182));
             Table.States (182).Kernel := To_Vector (((257, 104, 3, False), 
(257, 104, 5, False), (257, 104, 1,
             False)));
             Table.States (182).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 340)));
+            Table.States (183).Action_List.Set_Capacity (3);
             Add_Action (Table.States (183), 104, 341);
             Add_Action (Table.States (183), 105, 152);
             Add_Action (Table.States (183), 106, 34);
-            Add_Error (Table.States (183));
+            Table.States (183).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (183), 128, 153);
             Add_Goto (Table.States (183), 163, 154);
             Add_Goto (Table.States (183), 239, 157);
@@ -2075,10 +2224,11 @@ package body Ada_Process_LALR_Main is
             Table.States (183).Kernel := To_Vector (((121, 28, 5, False), 
(127, 28, 4, False), (182, 28, 5, False),
             (281, 28, 14, False)));
             Table.States (183).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 341)));
+            Table.States (184).Action_List.Set_Capacity (3);
             Add_Action (Table.States (184), 104, 119);
             Add_Action (Table.States (184), 105, 33);
             Add_Action (Table.States (184), 106, 34);
-            Add_Error (Table.States (184));
+            Table.States (184).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (184), 128, 41);
             Add_Goto (Table.States (184), 238, 342);
             Add_Goto (Table.States (184), 239, 219);
@@ -2086,18 +2236,20 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (184), 293, 97);
             Table.States (184).Kernel := To_Vector ((0 => (332, 74, 2, 
False)));
             Table.States (184).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (185).Action_List.Set_Capacity (2);
             Add_Action (Table.States (185), 81, 343);
             Add_Conflict (Table.States (185), 81, (219, 1), 1, 
identifier_list_1'Access, null);
             Add_Action (Table.States (185), 83, Reduce, (219, 1), 1, 
identifier_list_1'Access, null);
-            Add_Error (Table.States (185));
             Table.States (185).Kernel := To_Vector (((219, 104, 0, False), 
(245, 104, 5, False), (245, 104, 6, False),
             (245, 104, 5, False)));
             Table.States (185).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 219, 1)));
+            Table.States (186).Action_List.Set_Capacity (39);
             Add_Action (Table.States (186), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
             48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 93, 
104, 105, 106, 107), (142, 2), 2,
             compilation_unit_2'Access, null);
             Table.States (186).Kernel := To_Vector ((0 => (142, 157, 0, 
False)));
             Table.States (186).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 142, 2)));
+            Table.States (187).Action_List.Set_Capacity (7);
             Add_Action (Table.States (187), 35, Reduce, (253, 1), 0, null, 
null);
             Add_Action (Table.States (187), 74, Reduce, (253, 1), 0, null, 
null);
             Add_Action (Table.States (187), 76, 318);
@@ -2105,7 +2257,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (187), 96, Reduce, (253, 1), 0, null, 
null);
             Add_Action (Table.States (187), 101, 239);
             Add_Action (Table.States (187), 102, 240);
-            Add_Error (Table.States (187));
+            Table.States (187).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (187), 115, 241);
             Add_Goto (Table.States (187), 199, 344);
             Add_Goto (Table.States (187), 253, 345);
@@ -2114,51 +2266,56 @@ package body Ada_Process_LALR_Main is
             (262, 239, 0, False), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (187).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 253, 0)));
+            Table.States (188).Action_List.Set_Capacity (1);
             Add_Action (Table.States (188), 104, 346);
-            Add_Error (Table.States (188));
             Table.States (188).Kernel := To_Vector (((264, 14, 4, False), 
(265, 14, 4, False)));
             Table.States (188).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 346)));
+            Table.States (189).Action_List.Set_Capacity (1);
             Add_Action (Table.States (189), 104, 347);
-            Add_Error (Table.States (189));
             Table.States (189).Kernel := To_Vector (((271, 69, 7, False), 
(271, 69, 4, False)));
             Table.States (189).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 347)));
+            Table.States (190).Action_List.Set_Capacity (2);
             Add_Action (Table.States (190), 35, Reduce, (122, 1), 0, null, 
null);
             Add_Action (Table.States (190), 74, 337);
-            Add_Error (Table.States (190));
+            Table.States (190).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (190), 122, 348);
             Table.States (190).Kernel := To_Vector (((304, 104, 6, False), 
(304, 104, 3, False)));
             Table.States (190).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (191).Action_List.Set_Capacity (46);
             Add_Action (Table.States (191), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (276, 2), 2, raise_statement_2'Access, null);
             Table.States (191).Kernel := To_Vector ((0 => (276, 96, 0, 
False)));
             Table.States (191).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 276, 2)));
+            Table.States (192).Action_List.Set_Capacity (6);
             Add_Action (Table.States (192), 74, 349);
             Add_Action (Table.States (192), 76, 235);
             Add_Action (Table.States (192), 84, 237);
             Add_Action (Table.States (192), 96, 350);
             Add_Action (Table.States (192), 101, 239);
             Add_Action (Table.States (192), 102, 240);
-            Add_Error (Table.States (192));
+            Table.States (192).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (192), 115, 241);
             Add_Goto (Table.States (192), 322, 242);
             Table.States (192).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (272, 239, 3, True), (276, 239, 2, False), (276, 239, 1, False), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (192).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 350)));
+            Table.States (193).Action_List.Set_Capacity (6);
             Add_Action (Table.States (193), 74, 351);
             Add_Action (Table.States (193), 76, 235);
             Add_Action (Table.States (193), 84, 237);
             Add_Action (Table.States (193), 96, 352);
             Add_Action (Table.States (193), 101, 239);
             Add_Action (Table.States (193), 102, 240);
-            Add_Error (Table.States (193));
+            Table.States (193).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (193), 115, 241);
             Add_Goto (Table.States (193), 322, 242);
             Table.States (193).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (272, 239, 3, True), (290, 239, 3, False), (290, 239, 1, False), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (193).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 352)));
+            Table.States (194).Action_List.Set_Capacity (25);
             Add_Action (Table.States (194), 10, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (194), 33, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (194), 38, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
@@ -2184,37 +2341,38 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (194), 100, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (194), 101, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (194), 102, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Error (Table.States (194));
             Table.States (194).Kernel := To_Vector (((194, 104, 3, False), 
(194, 104, 2, False), (239, 104, 0,
             False)));
             Table.States (194).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 1)));
+            Table.States (195).Action_List.Set_Capacity (1);
             Add_Action (Table.States (195), 96, 354);
-            Add_Error (Table.States (195));
             Table.States (195).Kernel := To_Vector ((0 => (302, 192, 1, 
False)));
             Table.States (195).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 354)));
+            Table.States (196).Action_List.Set_Capacity (2);
             Add_Action (Table.States (196), 21, Reduce, (195, 0), 1, null, 
null);
             Add_Action (Table.States (196), 96, 355);
-            Add_Error (Table.States (196));
             Table.States (196).Kernel := To_Vector (((195, 194, 0, False), 
(196, 194, 1, False)));
             Table.States (196).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 195, 1)));
+            Table.States (197).Action_List.Set_Capacity (1);
             Add_Action (Table.States (197), 21, 356);
-            Add_Error (Table.States (197));
             Table.States (197).Kernel := To_Vector ((0 => (196, 195, 4, 
False)));
             Table.States (197).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 356)));
+            Table.States (198).Action_List.Set_Capacity (3);
             Add_Action (Table.States (198), 104, 119);
             Add_Action (Table.States (198), 105, 33);
             Add_Action (Table.States (198), 106, 34);
-            Add_Error (Table.States (198));
+            Table.States (198).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (198), 128, 41);
             Add_Goto (Table.States (198), 239, 357);
             Add_Goto (Table.States (198), 272, 92);
             Add_Goto (Table.States (198), 293, 97);
             Table.States (198).Kernel := To_Vector ((0 => (315, 76, 8, 
False)));
             Table.States (198).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (199).Action_List.Set_Capacity (1);
             Add_Action (Table.States (199), 96, 358);
-            Add_Error (Table.States (199));
             Table.States (199).Kernel := To_Vector ((0 => (295, 67, 1, 
False)));
             Table.States (199).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 358)));
+            Table.States (200).Action_List.Set_Capacity (13);
             Add_Action (Table.States (200), 3, 121);
             Add_Action (Table.States (200), 39, 122);
             Add_Action (Table.States (200), 40, 123);
@@ -2228,7 +2386,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (200), 104, 119);
             Add_Action (Table.States (200), 105, 33);
             Add_Action (Table.States (200), 106, 34);
-            Add_Error (Table.States (200));
+            Table.States (200).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (200), 117, 130);
             Add_Goto (Table.States (200), 128, 41);
             Add_Goto (Table.States (200), 191, 131);
@@ -2254,6 +2412,7 @@ package body Ada_Process_LALR_Main is
          end Subr_3;
          procedure Subr_4
          is begin
+            Table.States (201).Action_List.Set_Capacity (25);
             Add_Action (Table.States (201), 4, 1);
             Add_Action (Table.States (201), 5, 2);
             Add_Action (Table.States (201), 13, Reduce, (132, 1), 0, null, 
null);
@@ -2279,7 +2438,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (201), 104, 360);
             Add_Action (Table.States (201), 105, 33);
             Add_Action (Table.States (201), 106, 34);
-            Add_Error (Table.States (201));
+            Table.States (201).Goto_List.Set_Capacity (31);
             Add_Goto (Table.States (201), 113, 36);
             Add_Goto (Table.States (201), 123, 38);
             Add_Goto (Table.States (201), 126, 39);
@@ -2313,9 +2472,11 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (201), 323, 114);
             Table.States (201).Kernel := To_Vector ((0 => (295, 113, 0, 
False)));
             Table.States (201).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (202).Action_List.Set_Capacity (3);
             Add_Action (Table.States (202), (22, 24, 43), (295, 5), 1, null, 
null);
             Table.States (202).Kernel := To_Vector ((0 => (295, 160, 0, 
False)));
             Table.States (202).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 295, 1)));
+            Table.States (203).Action_List.Set_Capacity (26);
             Add_Action (Table.States (203), 4, 1);
             Add_Action (Table.States (203), 5, 2);
             Add_Action (Table.States (203), 13, Reduce, (132, 1), 0, null, 
null);
@@ -2342,7 +2503,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (203), 104, 360);
             Add_Action (Table.States (203), 105, 33);
             Add_Action (Table.States (203), 106, 34);
-            Add_Error (Table.States (203));
+            Table.States (203).Goto_List.Set_Capacity (31);
             Add_Goto (Table.States (203), 113, 36);
             Add_Goto (Table.States (203), 123, 38);
             Add_Goto (Table.States (203), 126, 39);
@@ -2376,11 +2537,12 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (203), 323, 114);
             Table.States (203).Kernel := To_Vector (((160, 161, 0, False), 
(324, 161, 0, False)));
             Table.States (203).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (204).Action_List.Set_Capacity (2);
             Add_Action (Table.States (204), 22, 365);
             Add_Action (Table.States (204), 43, 366);
-            Add_Error (Table.States (204));
             Table.States (204).Kernel := To_Vector (((152, 178, 4, False), 
(323, 178, 6, False)));
             Table.States (204).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 22, 365)));
+            Table.States (205).Action_List.Set_Capacity (30);
             Add_Action (Table.States (205), 4, 1);
             Add_Action (Table.States (205), 5, 2);
             Add_Action (Table.States (205), 13, Reduce, (132, 1), 0, null, 
null);
@@ -2411,7 +2573,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (205), 104, 360);
             Add_Action (Table.States (205), 105, 33);
             Add_Action (Table.States (205), 106, 34);
-            Add_Error (Table.States (205));
+            Table.States (205).Goto_List.Set_Capacity (33);
             Add_Goto (Table.States (205), 113, 36);
             Add_Goto (Table.States (205), 115, 241);
             Add_Goto (Table.States (205), 123, 38);
@@ -2449,6 +2611,7 @@ package body Ada_Process_LALR_Main is
             (239, 239, 2, True), (261, 239, 1, False), (272, 239, 3, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True), (324, 239, 0, False)));
             Table.States (205).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (206).Action_List.Set_Capacity (25);
             Add_Action (Table.States (206), 4, 1);
             Add_Action (Table.States (206), 5, 2);
             Add_Action (Table.States (206), 13, Reduce, (132, 1), 0, null, 
null);
@@ -2474,7 +2637,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (206), 104, 360);
             Add_Action (Table.States (206), 105, 33);
             Add_Action (Table.States (206), 106, 34);
-            Add_Error (Table.States (206));
+            Table.States (206).Goto_List.Set_Capacity (31);
             Add_Goto (Table.States (206), 113, 36);
             Add_Goto (Table.States (206), 123, 38);
             Add_Goto (Table.States (206), 126, 39);
@@ -2508,60 +2671,64 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (206), 323, 114);
             Table.States (206).Kernel := To_Vector (((178, 261, 0, False), 
(324, 261, 0, False)));
             Table.States (206).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (207).Action_List.Set_Capacity (3);
             Add_Action (Table.States (207), (22, 24, 43), (296, 1), 1, 
select_alternative_list_1'Access, null);
             Table.States (207).Kernel := To_Vector ((0 => (296, 295, 0, 
False)));
             Table.States (207).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 296, 1)));
+            Table.States (208).Action_List.Set_Capacity (3);
             Add_Action (Table.States (208), 22, Reduce, (297, 0), 1, null, 
null);
             Add_Action (Table.States (208), 24, Reduce, (297, 0), 1, null, 
null);
             Add_Action (Table.States (208), 43, 369);
-            Add_Error (Table.States (208));
             Table.States (208).Kernel := To_Vector (((296, 296, 3, True), 
(297, 296, 0, False)));
             Table.States (208).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 297, 1)));
+            Table.States (209).Action_List.Set_Capacity (2);
             Add_Action (Table.States (209), 22, 370);
             Add_Action (Table.States (209), 24, 371);
-            Add_Error (Table.States (209));
             Table.States (209).Kernel := To_Vector (((294, 297, 4, False), 
(294, 297, 3, False)));
             Table.States (209).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 371)));
+            Table.States (210).Action_List.Set_Capacity (1);
             Add_Action (Table.States (210), 68, 372);
-            Add_Error (Table.States (210));
             Table.States (210).Kernel := To_Vector ((0 => (126, 324, 5, 
False)));
             Table.States (210).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 372)));
+            Table.States (211).Action_List.Set_Capacity (1);
             Add_Action (Table.States (211), 35, 373);
-            Add_Error (Table.States (211));
             Table.States (211).Kernel := To_Vector ((0 => (313, 104, 3, 
False)));
             Table.States (211).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 373)));
+            Table.States (212).Action_List.Set_Capacity (1);
             Add_Action (Table.States (212), 104, 374);
-            Add_Error (Table.States (212));
             Table.States (212).Kernel := To_Vector (((316, 14, 5, False), 
(317, 14, 4, False)));
             Table.States (212).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 374)));
+            Table.States (213).Action_List.Set_Capacity (1);
             Add_Action (Table.States (213), 104, 375);
-            Add_Error (Table.States (213));
             Table.States (213).Kernel := To_Vector (((319, 69, 7, False), 
(319, 69, 4, False), (319, 69, 2, False)));
             Table.States (213).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 375)));
+            Table.States (214).Action_List.Set_Capacity (3);
             Add_Action (Table.States (214), 35, Reduce, (122, 1), 0, null, 
null);
             Add_Action (Table.States (214), 74, 337);
             Add_Action (Table.States (214), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (214));
+            Table.States (214).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (214), 122, 376);
             Table.States (214).Kernel := To_Vector (((305, 104, 6, False), 
(305, 104, 3, False), (305, 104, 1,
             False)));
             Table.States (214).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (215).Action_List.Set_Capacity (3);
             Add_Action (Table.States (215), 35, Reduce, (169, 2), 0, null, 
null);
             Add_Action (Table.States (215), 76, 377);
             Add_Action (Table.States (215), 96, Reduce, (169, 2), 0, null, 
null);
-            Add_Error (Table.States (215));
+            Table.States (215).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (215), 169, 378);
             Table.States (215).Kernel := To_Vector (((206, 104, 3, False), 
(223, 104, 3, False), (223, 104, 1, False),
             (259, 104, 6, False), (260, 104, 3, False)));
             Table.States (215).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 169, 0)));
+            Table.States (216).Action_List.Set_Capacity (1);
             Add_Action (Table.States (216), 69, 379);
-            Add_Error (Table.States (216));
             Table.States (216).Kernel := To_Vector ((0 => (331, 9, 3, False)));
             Table.States (216).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 69, 379)));
+            Table.States (217).Action_List.Set_Capacity (3);
             Add_Action (Table.States (217), 104, 119);
             Add_Action (Table.States (217), 105, 33);
             Add_Action (Table.States (217), 106, 34);
-            Add_Error (Table.States (217));
+            Table.States (217).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (217), 128, 41);
             Add_Goto (Table.States (217), 238, 380);
             Add_Goto (Table.States (217), 239, 219);
@@ -2569,36 +2736,39 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (217), 293, 97);
             Table.States (217).Kernel := To_Vector ((0 => (331, 69, 2, 
False)));
             Table.States (217).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (218).Action_List.Set_Capacity (2);
             Add_Action (Table.States (218), 83, 381);
             Add_Action (Table.States (218), 96, 382);
-            Add_Error (Table.States (218));
             Table.States (218).Kernel := To_Vector (((238, 238, 2, True), 
(331, 238, 1, False)));
             Table.States (218).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 382)));
+            Table.States (219).Action_List.Set_Capacity (6);
             Add_Action (Table.States (219), 76, 235);
             Add_Action (Table.States (219), 83, Reduce, (238, 1), 1, null, 
null);
             Add_Action (Table.States (219), 84, 237);
             Add_Action (Table.States (219), 96, Reduce, (238, 1), 1, null, 
null);
             Add_Action (Table.States (219), 101, 239);
             Add_Action (Table.States (219), 102, 240);
-            Add_Error (Table.States (219));
+            Table.States (219).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (219), 115, 241);
             Add_Goto (Table.States (219), 322, 242);
             Table.States (219).Kernel := To_Vector (((128, 239, 2, True), 
(238, 239, 0, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (219).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 238, 1)));
+            Table.States (220).Action_List.Set_Capacity (1);
             Add_Action (Table.States (220), (1 =>  37), (229, 0), 2, 
iteration_scheme_0'Access, null);
             Table.States (220).Kernel := To_Vector ((0 => (229, 192, 0, 
False)));
             Table.States (220).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 229, 2)));
+            Table.States (221).Action_List.Set_Capacity (2);
             Add_Action (Table.States (221), 83, 381);
             Add_Action (Table.States (221), 96, 383);
-            Add_Error (Table.States (221));
             Table.States (221).Kernel := To_Vector (((238, 238, 2, True), 
(332, 238, 1, False)));
             Table.States (221).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 383)));
+            Table.States (222).Action_List.Set_Capacity (1);
             Add_Action (Table.States (222), 90, 384);
-            Add_Error (Table.States (222));
             Table.States (222).Kernel := To_Vector ((0 => (217, 104, 1, 
False)));
             Table.States (222).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 90, 384)));
+            Table.States (223).Action_List.Set_Capacity (11);
             Add_Action (Table.States (223), 7, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (223), 13, Reduce, (131, 0), 2, 
block_label_0'Access, block_label_0_check'Access);
             Add_Action (Table.States (223), 17, Reduce, (131, 0), 2, 
block_label_0'Access, block_label_0_check'Access);
@@ -2610,12 +2780,13 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (223), 104, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (223), 105, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (223), 106, Reduce, (241, 1), 0, null, 
null);
-            Add_Error (Table.States (223));
+            Table.States (223).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (223), 114, 387);
             Add_Goto (Table.States (223), 241, 388);
             Table.States (223).Kernel := To_Vector (((131, 81, 0, False), 
(245, 81, 4, False), (245, 81, 5, False),
             (245, 81, 4, False)));
             Table.States (223).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 131, 2)));
+            Table.States (224).Action_List.Set_Capacity (24);
             Add_Action (Table.States (224), 4, 1);
             Add_Action (Table.States (224), 5, 2);
             Add_Action (Table.States (224), 13, Reduce, (132, 1), 0, null, 
null);
@@ -2640,7 +2811,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (224), 104, 360);
             Add_Action (Table.States (224), 105, 33);
             Add_Action (Table.States (224), 106, 34);
-            Add_Error (Table.States (224));
+            Table.States (224).Goto_List.Set_Capacity (32);
             Add_Goto (Table.States (224), 113, 36);
             Add_Goto (Table.States (224), 123, 38);
             Add_Goto (Table.States (224), 126, 39);
@@ -2675,6 +2846,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (224), 323, 114);
             Table.States (224).Kernel := To_Vector ((0 => (133, 13, 2, 
False)));
             Table.States (224).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 218, 0)));
+            Table.States (225).Action_List.Set_Capacity (16);
             Add_Action (Table.States (225), 13, Reduce, (159, 1), 0, null, 
null);
             Add_Action (Table.States (225), 25, Reduce, (246, 2), 0, null, 
null);
             Add_Action (Table.States (225), 28, 183);
@@ -2691,7 +2863,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (225), 69, 27);
             Add_Action (Table.States (225), 71, 28);
             Add_Action (Table.States (225), 104, 185);
-            Add_Error (Table.States (225));
+            Table.States (225).Goto_List.Set_Capacity (53);
             Add_Goto (Table.States (225), 112, 35);
             Add_Goto (Table.States (225), 121, 37);
             Add_Goto (Table.States (225), 127, 40);
@@ -2747,13 +2919,15 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (225), 331, 116);
             Table.States (225).Kernel := To_Vector ((0 => (133, 17, 3, 
False)));
             Table.States (225).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
+            Table.States (226).Action_List.Set_Capacity (2);
             Add_Action (Table.States (226), 37, Reduce, (231, 1), 0, null, 
null);
             Add_Action (Table.States (226), 104, 395);
-            Add_Error (Table.States (226));
+            Table.States (226).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (226), 230, 155);
             Add_Goto (Table.States (226), 231, 156);
             Table.States (226).Kernel := To_Vector ((0 => (229, 28, 0, 
False)));
             Table.States (226).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 231, 0)));
+            Table.States (227).Action_List.Set_Capacity (23);
             Add_Action (Table.States (227), 4, 1);
             Add_Action (Table.States (227), 5, 2);
             Add_Action (Table.States (227), 13, Reduce, (132, 1), 0, null, 
null);
@@ -2777,7 +2951,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (227), 104, 360);
             Add_Action (Table.States (227), 105, 33);
             Add_Action (Table.States (227), 106, 34);
-            Add_Error (Table.States (227));
+            Table.States (227).Goto_List.Set_Capacity (31);
             Add_Goto (Table.States (227), 113, 36);
             Add_Goto (Table.States (227), 123, 38);
             Add_Goto (Table.States (227), 126, 39);
@@ -2811,36 +2985,40 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (227), 323, 114);
             Table.States (227).Kernel := To_Vector ((0 => (232, 37, 3, 
False)));
             Table.States (227).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (228).Action_List.Set_Capacity (1);
             Add_Action (Table.States (228), 37, 397);
-            Add_Error (Table.States (228));
             Table.States (228).Kernel := To_Vector ((0 => (232, 229, 4, 
False)));
             Table.States (228).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 397)));
+            Table.States (229).Action_List.Set_Capacity (39);
             Add_Action (Table.States (229), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
             48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 93, 
104, 105, 106, 107), (143, 0), 2,
             compilation_unit_list_0'Access, null);
             Table.States (229).Kernel := To_Vector ((0 => (143, 142, 0, 
True)));
             Table.States (229).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 143, 2)));
             Table.States (229).Minimal_Complete_Actions_Recursive := True;
+            Table.States (230).Action_List.Set_Capacity (3);
             Add_Action (Table.States (230), 104, 119);
             Add_Action (Table.States (230), 105, 33);
             Add_Action (Table.States (230), 106, 34);
-            Add_Error (Table.States (230));
+            Table.States (230).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (230), 128, 41);
             Add_Goto (Table.States (230), 239, 398);
             Add_Goto (Table.States (230), 272, 92);
             Add_Goto (Table.States (230), 293, 97);
             Table.States (230).Kernel := To_Vector (((251, 47, 4, False), 
(251, 47, 3, False)));
             Table.States (230).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (231).Action_List.Set_Capacity (1);
             Add_Action (Table.States (231), 96, 399);
-            Add_Error (Table.States (231));
             Table.States (231).Kernel := To_Vector ((0 => (214, 251, 1, 
False)));
             Table.States (231).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 399)));
+            Table.States (232).Action_List.Set_Capacity (2);
             Add_Action (Table.States (232), 74, 337);
             Add_Action (Table.States (232), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (232));
+            Table.States (232).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (232), 122, 400);
             Table.States (232).Kernel := To_Vector ((0 => (216, 312, 1, 
False)));
             Table.States (232).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (233).Action_List.Set_Capacity (12);
             Add_Action (Table.States (233), 7, Reduce, (118, 1), 0, null, 
null);
             Add_Action (Table.States (233), 8, 401);
             Add_Action (Table.States (233), 11, Reduce, (118, 1), 0, null, 
null);
@@ -2854,16 +3032,17 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (233), 104, Reduce, (118, 1), 0, null, 
null);
             Add_Action (Table.States (233), 105, Reduce, (118, 1), 0, null, 
null);
             Add_Action (Table.States (233), 106, Reduce, (118, 1), 0, null, 
null);
-            Add_Error (Table.States (233));
+            Table.States (233).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (233), 118, 404);
             Table.States (233).Kernel := To_Vector (((157, 81, 3, False), 
(186, 81, 2, False), (244, 81, 3, False),
             (244, 81, 4, False), (244, 81, 10, False), (244, 81, 2, False), 
(244, 81, 3, False), (244, 81, 9, False)));
             Table.States (233).Minimal_Complete_Actions := To_Vector (((Shift, 
26, 403), (Reduce, 118, 0)));
+            Table.States (234).Action_List.Set_Capacity (1);
             Add_Action (Table.States (234), 104, 405);
-            Add_Error (Table.States (234));
             Table.States (234).Kernel := To_Vector ((0 => (219, 83, 1, True)));
             Table.States (234).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 405)));
             Table.States (234).Minimal_Complete_Actions_Recursive := True;
+            Table.States (235).Action_List.Set_Capacity (20);
             Add_Action (Table.States (235), 3, 121);
             Add_Action (Table.States (235), 15, 258);
             Add_Action (Table.States (235), 28, 259);
@@ -2884,7 +3063,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (235), 104, 119);
             Add_Action (Table.States (235), 105, 33);
             Add_Action (Table.States (235), 106, 264);
-            Add_Error (Table.States (235));
+            Table.States (235).Goto_List.Set_Capacity (29);
             Add_Goto (Table.States (235), 117, 130);
             Add_Goto (Table.States (235), 124, 265);
             Add_Goto (Table.States (235), 125, 406);
@@ -2917,6 +3096,7 @@ package body Ada_Process_LALR_Main is
             Table.States (235).Kernel := To_Vector (((115, 76, 1, False), 
(115, 76, 3, False), (239, 76, 4, True)));
             Table.States (235).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 0)));
             Table.States (235).Minimal_Complete_Actions_Recursive := True;
+            Table.States (236).Action_List.Set_Capacity (13);
             Add_Action (Table.States (236), 3, 121);
             Add_Action (Table.States (236), 39, 122);
             Add_Action (Table.States (236), 40, 123);
@@ -2930,7 +3110,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (236), 104, 119);
             Add_Action (Table.States (236), 105, 33);
             Add_Action (Table.States (236), 106, 34);
-            Add_Error (Table.States (236));
+            Table.States (236).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (236), 117, 130);
             Add_Goto (Table.States (236), 128, 41);
             Add_Goto (Table.States (236), 191, 131);
@@ -2953,30 +3133,34 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (236), 330, 146);
             Table.States (236).Kernel := To_Vector ((0 => (123, 82, 1, 
False)));
             Table.States (236).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-         end Subr_4;
-         procedure Subr_5
-         is begin
+            Table.States (237).Action_List.Set_Capacity (4);
             Add_Action (Table.States (237), 9, 412);
             Add_Action (Table.States (237), 104, 413);
             Add_Action (Table.States (237), 105, 414);
             Add_Action (Table.States (237), 106, 415);
-            Add_Error (Table.States (237));
             Table.States (237).Kernel := To_Vector (((293, 84, 1, True), (293, 
84, 1, True), (293, 84, 1, True), (293,
             84, 1, True)));
             Table.States (237).Minimal_Complete_Actions := To_Vector (((Shift, 
104, 413), (Shift, 106, 415), (Shift,
             105, 414), (Shift, 9, 412)));
             Table.States (237).Minimal_Complete_Actions_Recursive := True;
+         end Subr_4;
+         procedure Subr_5
+         is begin
+            Table.States (238).Action_List.Set_Capacity (46);
             Add_Action (Table.States (238), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (261, 0), 2, procedure_call_statement_0'Access, null);
             Table.States (238).Kernel := To_Vector ((0 => (261, 96, 0, 
False)));
             Table.States (238).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 261, 2)));
-            Add_Action (Table.States (239), (7, 19, 20, 38, 53, 76, 104, 105, 
106), (322, 0), 1, null, null);
+            Table.States (239).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (239), (7, 19, 20, 38, 53, 76, 104), 
(322, 0), 1, null, null);
             Table.States (239).Kernel := To_Vector ((0 => (322, 101, 0, 
False)));
             Table.States (239).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 322, 1)));
-            Add_Action (Table.States (240), (7, 19, 20, 38, 53, 76, 104, 105, 
106), (322, 1), 1, null, null);
+            Table.States (240).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (240), (7, 19, 20, 38, 53, 76, 104), 
(322, 1), 1, null, null);
             Table.States (240).Kernel := To_Vector ((0 => (322, 102, 0, 
False)));
             Table.States (240).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 322, 1)));
+            Table.States (241).Action_List.Set_Capacity (63);
             Add_Action (Table.States (241), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (239, 1), 2, name_1'Access,
@@ -2984,79 +3168,79 @@ package body Ada_Process_LALR_Main is
             Table.States (241).Kernel := To_Vector ((0 => (239, 115, 0, 
True)));
             Table.States (241).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 2)));
             Table.States (241).Minimal_Complete_Actions_Recursive := True;
+            Table.States (242).Action_List.Set_Capacity (6);
             Add_Action (Table.States (242), 7, 416);
             Add_Action (Table.States (242), 19, 417);
             Add_Action (Table.States (242), 20, 418);
             Add_Action (Table.States (242), 38, 419);
             Add_Action (Table.States (242), 76, 126);
-            Add_Action (Table.States (242), 104, 119);
-            Add_Action (Table.States (242), 105, 33);
-            Add_Action (Table.States (242), 106, 34);
-            Add_Error (Table.States (242));
-            Add_Goto (Table.States (242), 117, 420);
-            Add_Goto (Table.States (242), 128, 41);
-            Add_Goto (Table.States (242), 129, 421);
-            Add_Goto (Table.States (242), 239, 422);
-            Add_Goto (Table.States (242), 272, 92);
-            Add_Goto (Table.States (242), 293, 97);
+            Add_Action (Table.States (242), 104, 420);
+            Table.States (242).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (242), 117, 421);
+            Add_Goto (Table.States (242), 129, 422);
             Table.States (242).Kernel := To_Vector (((128, 322, 1, True), 
(272, 322, 2, True)));
-            Table.States (242).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (242).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 420)));
             Table.States (242).Minimal_Complete_Actions_Recursive := True;
+            Table.States (243).Action_List.Set_Capacity (1);
             Add_Action (Table.States (243), 104, 423);
-            Add_Error (Table.States (243));
             Table.States (243).Kernel := To_Vector (((179, 25, 5, False), 
(179, 25, 2, False)));
             Table.States (243).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 423)));
+            Table.States (244).Action_List.Set_Capacity (3);
             Add_Action (Table.States (244), 104, 119);
             Add_Action (Table.States (244), 105, 33);
             Add_Action (Table.States (244), 106, 34);
-            Add_Error (Table.States (244));
+            Table.States (244).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (244), 128, 41);
             Add_Goto (Table.States (244), 239, 424);
             Add_Goto (Table.States (244), 272, 92);
             Add_Goto (Table.States (244), 293, 97);
             Table.States (244).Kernel := To_Vector (((207, 29, 2, False), 
(213, 29, 5, False)));
             Table.States (244).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (245).Action_List.Set_Capacity (3);
             Add_Action (Table.States (245), 104, 119);
             Add_Action (Table.States (245), 105, 33);
             Add_Action (Table.States (245), 106, 34);
-            Add_Error (Table.States (245));
+            Table.States (245).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (245), 128, 41);
             Add_Goto (Table.States (245), 239, 425);
             Add_Goto (Table.States (245), 272, 92);
             Add_Goto (Table.States (245), 293, 97);
             Table.States (245).Kernel := To_Vector (((213, 50, 5, False), 
(262, 50, 1, False)));
             Table.States (245).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (246).Action_List.Set_Capacity (4);
             Add_Action (Table.States (246), 35, 426);
             Add_Conflict (Table.States (246), 35, (312, 1), 1, null, 
subprogram_specification_1_check'Access);
             Add_Action (Table.States (246), 56, Reduce, (312, 1), 1, null, 
subprogram_specification_1_check'Access);
             Add_Action (Table.States (246), 74, Reduce, (312, 1), 1, null, 
subprogram_specification_1_check'Access);
             Add_Action (Table.States (246), 96, Reduce, (312, 1), 1, null, 
subprogram_specification_1_check'Access);
-            Add_Error (Table.States (246));
             Table.States (246).Kernel := To_Vector (((193, 207, 4, False), 
(312, 207, 0, False)));
             Table.States (246).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 312, 1)));
+            Table.States (247).Action_List.Set_Capacity (4);
             Add_Action (Table.States (247), 35, 427);
             Add_Conflict (Table.States (247), 35, (312, 0), 1, null, 
subprogram_specification_0_check'Access);
             Add_Action (Table.States (247), 56, Reduce, (312, 0), 1, null, 
subprogram_specification_0_check'Access);
             Add_Action (Table.States (247), 74, Reduce, (312, 0), 1, null, 
subprogram_specification_0_check'Access);
             Add_Action (Table.States (247), 96, Reduce, (312, 0), 1, null, 
subprogram_specification_0_check'Access);
-            Add_Error (Table.States (247));
             Table.States (247).Kernel := To_Vector (((243, 262, 3, False), 
(312, 262, 0, False)));
             Table.States (247).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 312, 1)));
+            Table.States (248).Action_List.Set_Capacity (4);
             Add_Action (Table.States (248), 35, 428);
             Add_Conflict (Table.States (248), 35, (122, 1), 0, null, null);
             Add_Action (Table.States (248), 56, 429);
             Add_Action (Table.States (248), 74, 337);
             Add_Action (Table.States (248), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (248));
+            Table.States (248).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (248), 122, 430);
             Table.States (248).Kernel := To_Vector (((112, 312, 3, False), 
(307, 312, 4, False), (308, 312, 3, False),
             (309, 312, 1, False), (311, 312, 3, False)));
             Table.States (248).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (249).Action_List.Set_Capacity (40);
             Add_Action (Table.States (249), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (249, 0), 2,
             package_declaration_0'Access, null);
             Table.States (249).Kernel := To_Vector ((0 => (249, 96, 0, 
False)));
             Table.States (249).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 249, 2)));
+            Table.States (250).Action_List.Set_Capacity (20);
             Add_Action (Table.States (250), 3, 121);
             Add_Action (Table.States (250), 15, 258);
             Add_Action (Table.States (250), 28, 259);
@@ -3077,7 +3261,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (250), 104, 119);
             Add_Action (Table.States (250), 105, 33);
             Add_Action (Table.States (250), 106, 264);
-            Add_Error (Table.States (250));
+            Table.States (250).Goto_List.Set_Capacity (28);
             Add_Goto (Table.States (250), 117, 130);
             Add_Goto (Table.States (250), 124, 265);
             Add_Goto (Table.States (250), 125, 406);
@@ -3108,26 +3292,31 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (250), 330, 146);
             Table.States (250).Kernel := To_Vector (((115, 76, 1, False), 
(115, 76, 3, False)));
             Table.States (250).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 0)));
+            Table.States (251).Action_List.Set_Capacity (3);
             Add_Action (Table.States (251), (21, 76, 96), (116, 0), 1, null, 
null);
             Table.States (251).Kernel := To_Vector ((0 => (116, 115, 0, 
False)));
             Table.States (251).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 116, 1)));
+            Table.States (252).Action_List.Set_Capacity (3);
             Add_Action (Table.States (252), 21, Reduce, (253, 1), 0, null, 
null);
             Add_Action (Table.States (252), 76, 431);
             Add_Action (Table.States (252), 96, Reduce, (253, 1), 0, null, 
null);
-            Add_Error (Table.States (252));
+            Table.States (252).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (252), 199, 344);
             Add_Goto (Table.States (252), 253, 432);
             Table.States (252).Kernel := To_Vector (((113, 116, 3, False), 
(113, 116, 1, False)));
             Table.States (252).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 253, 0)));
+            Table.States (253).Action_List.Set_Capacity (46);
             Add_Action (Table.States (253), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (303, 8), 3, simple_statement_8'Access, null);
             Table.States (253).Kernel := To_Vector ((0 => (303, 96, 0, 
False)));
             Table.States (253).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 303, 3)));
+            Table.States (254).Action_List.Set_Capacity (35);
             Add_Action (Table.States (254), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
             78, 79, 82, 83, 85, 86, 87, 88, 89, 91, 92, 94, 95, 96, 97, 98, 
99), (197, 2), 2, null, null);
             Table.States (254).Kernel := To_Vector ((0 => (197, 258, 0, 
False)));
             Table.States (254).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 197, 2)));
+            Table.States (255).Action_List.Set_Capacity (40);
             Add_Action (Table.States (255), 10, Reduce, (258, 4), 2, 
primary_4'Access, null);
             Add_Action (Table.States (255), 20, Reduce, (258, 4), 2, 
primary_4'Access, null);
             Add_Action (Table.States (255), 21, Reduce, (258, 4), 2, 
primary_4'Access, null);
@@ -3168,17 +3357,19 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (255), 100, Reduce, (258, 4), 2, 
primary_4'Access, null);
             Add_Action (Table.States (255), 101, 239);
             Add_Action (Table.States (255), 102, 240);
-            Add_Error (Table.States (255));
+            Table.States (255).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (255), 115, 241);
             Add_Goto (Table.States (255), 322, 242);
             Table.States (255).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (258, 239, 0, False), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (255).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 2)));
+            Table.States (256).Action_List.Set_Capacity (35);
             Add_Action (Table.States (256), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
             78, 79, 82, 83, 85, 86, 87, 88, 89, 91, 92, 94, 95, 96, 97, 98, 
99), (197, 3), 2, null, null);
             Table.States (256).Kernel := To_Vector ((0 => (197, 258, 0, 
False)));
             Table.States (256).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 197, 2)));
+            Table.States (257).Action_List.Set_Capacity (21);
             Add_Action (Table.States (257), 10, Reduce, (275, 1), 2, null, 
null);
             Add_Action (Table.States (257), 20, Reduce, (275, 1), 2, null, 
null);
             Add_Action (Table.States (257), 21, Reduce, (275, 1), 2, null, 
null);
@@ -3201,7 +3392,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (257), 96, Reduce, (275, 1), 2, null, 
null);
             Add_Action (Table.States (257), 101, 239);
             Add_Action (Table.States (257), 102, 240);
-            Add_Error (Table.States (257));
+            Table.States (257).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (257), 115, 241);
             Add_Goto (Table.States (257), 322, 242);
             Table.States (257).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
@@ -3209,6 +3400,7 @@ package body Ada_Process_LALR_Main is
             (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (257).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 275, 2)));
             Table.States (257).Minimal_Complete_Actions_Recursive := True;
+            Table.States (258).Action_List.Set_Capacity (13);
             Add_Action (Table.States (258), 3, 121);
             Add_Action (Table.States (258), 35, Reduce, (192, 1), 0, null, 
null);
             Add_Action (Table.States (258), 39, 122);
@@ -3222,7 +3414,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (258), 104, 119);
             Add_Action (Table.States (258), 105, 33);
             Add_Action (Table.States (258), 106, 34);
-            Add_Error (Table.States (258));
+            Table.States (258).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (258), 117, 130);
             Add_Goto (Table.States (258), 128, 41);
             Add_Goto (Table.States (258), 191, 131);
@@ -3245,12 +3437,14 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (258), 330, 146);
             Table.States (258).Kernel := To_Vector ((0 => (136, 15, 3, 
False)));
             Table.States (258).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (259).Action_List.Set_Capacity (2);
             Add_Action (Table.States (259), 9, 435);
             Add_Action (Table.States (259), 62, 436);
-            Add_Error (Table.States (259));
+            Table.States (259).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (259), 274, 437);
             Table.States (259).Kernel := To_Vector ((0 => (273, 28, 5, 
False)));
             Table.States (259).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 9, 435)));
+            Table.States (260).Action_List.Set_Capacity (13);
             Add_Action (Table.States (260), 3, 121);
             Add_Action (Table.States (260), 39, 122);
             Add_Action (Table.States (260), 40, 123);
@@ -3264,7 +3458,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (260), 104, 119);
             Add_Action (Table.States (260), 105, 33);
             Add_Action (Table.States (260), 106, 34);
-            Add_Error (Table.States (260));
+            Table.States (260).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (260), 117, 130);
             Add_Goto (Table.States (260), 128, 41);
             Add_Goto (Table.States (260), 191, 131);
@@ -3288,6 +3482,7 @@ package body Ada_Process_LALR_Main is
             Table.States (260).Kernel := To_Vector (((221, 32, 4, False), 
(221, 32, 2, False), (221, 32, 3, False),
             (221, 32, 1, False)));
             Table.States (260).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (261).Action_List.Set_Capacity (7);
             Add_Action (Table.States (261), 39, 122);
             Add_Action (Table.States (261), 41, 439);
             Add_Action (Table.States (261), 76, 126);
@@ -3295,7 +3490,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (261), 104, 119);
             Add_Action (Table.States (261), 105, 33);
             Add_Action (Table.States (261), 106, 34);
-            Add_Error (Table.States (261));
+            Table.States (261).Goto_List.Set_Capacity (6);
             Add_Goto (Table.States (261), 117, 130);
             Add_Goto (Table.States (261), 128, 41);
             Add_Goto (Table.States (261), 239, 134);
@@ -3304,6 +3499,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (261), 293, 97);
             Table.States (261).Kernel := To_Vector (((165, 40, 2, False), 
(197, 40, 1, False)));
             Table.States (261).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (262).Action_List.Set_Capacity (26);
             Add_Action (Table.States (262), 10, Reduce, (258, 1), 1, null, 
null);
             Add_Action (Table.States (262), 33, Reduce, (258, 1), 1, null, 
null);
             Add_Action (Table.States (262), 38, Reduce, (258, 1), 1, null, 
null);
@@ -3330,12 +3526,13 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (262), 98, Reduce, (258, 1), 1, null, 
null);
             Add_Action (Table.States (262), 99, Reduce, (258, 1), 1, null, 
null);
             Add_Action (Table.States (262), 100, Reduce, (258, 1), 1, null, 
null);
-            Add_Error (Table.States (262));
             Table.States (262).Kernel := To_Vector (((117, 41, 2, False), 
(258, 41, 0, False)));
             Table.States (262).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 1)));
+            Table.States (263).Action_List.Set_Capacity (2);
             Add_Action (Table.States (263), (79, 87), (165, 3), 1, null, null);
             Table.States (263).Kernel := To_Vector ((0 => (165, 44, 0, 
False)));
             Table.States (263).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 165, 1)));
+            Table.States (264).Action_List.Set_Capacity (32);
             Add_Action (Table.States (264), 10, Reduce, (239, 6), 1, null, 
null);
             Add_Action (Table.States (264), 33, Reduce, (239, 6), 1, null, 
null);
             Add_Action (Table.States (264), 35, Reduce, (239, 6), 1, null, 
null);
@@ -3369,51 +3566,55 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (264), 100, Reduce, (239, 6), 1, null, 
null);
             Add_Action (Table.States (264), 101, Reduce, (239, 6), 1, null, 
null);
             Add_Action (Table.States (264), 102, Reduce, (239, 6), 1, null, 
null);
-            Add_Error (Table.States (264));
             Table.States (264).Kernel := To_Vector (((124, 106, 1, False), 
(124, 106, 2, False), (239, 106, 0,
             False)));
             Table.States (264).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 1)));
+            Table.States (265).Action_List.Set_Capacity (4);
             Add_Action (Table.States (265), (35, 77, 83, 96), (125, 1), 1, 
null, null);
             Table.States (265).Kernel := To_Vector ((0 => (125, 124, 0, 
False)));
             Table.States (265).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 1)));
+            Table.States (266).Action_List.Set_Capacity (2);
             Add_Action (Table.States (266), 77, 442);
             Add_Action (Table.States (266), 83, 443);
-            Add_Error (Table.States (266));
             Table.States (266).Kernel := To_Vector (((117, 125, 1, False), 
(125, 125, 1, True)));
             Table.States (266).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 442)));
+            Table.States (267).Action_List.Set_Capacity (1);
             Add_Action (Table.States (267), (1 =>  77), (153, 1), 1, null, 
null);
             Table.States (267).Kernel := To_Vector ((0 => (153, 136, 0, 
False)));
             Table.States (267).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 153, 1)));
+            Table.States (268).Action_List.Set_Capacity (1);
             Add_Action (Table.States (268), 77, 444);
-            Add_Error (Table.States (268));
             Table.States (268).Kernel := To_Vector ((0 => (117, 153, 1, 
False)));
             Table.States (268).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 444)));
+            Table.States (269).Action_List.Set_Capacity (2);
             Add_Action (Table.States (269), (79, 87), (166, 1), 1, null, null);
             Table.States (269).Kernel := To_Vector ((0 => (166, 165, 0, 
False)));
             Table.States (269).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 166, 1)));
+            Table.States (270).Action_List.Set_Capacity (2);
             Add_Action (Table.States (270), 79, 445);
             Add_Action (Table.States (270), 87, 446);
-            Add_Error (Table.States (270));
             Table.States (270).Kernel := To_Vector (((124, 166, 1, False), 
(124, 166, 2, False), (166, 166, 2, True)));
             Table.States (270).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 87, 446)));
+            Table.States (271).Action_List.Set_Capacity (5);
             Add_Action (Table.States (271), 74, Reduce, (192, 0), 1, null, 
null);
             Add_Action (Table.States (271), 77, Reduce, (124, 4), 1, 
association_opt_4'Access, null);
             Add_Conflict (Table.States (271), 77, (192, 0), 1, null, null);
             Add_Action (Table.States (271), 79, Reduce, (165, 0), 1, null, 
null);
             Add_Action (Table.States (271), 83, Reduce, (124, 4), 1, 
association_opt_4'Access, null);
             Add_Action (Table.States (271), 87, Reduce, (165, 0), 1, null, 
null);
-            Add_Error (Table.States (271));
             Table.States (271).Kernel := To_Vector (((124, 191, 0, False), 
(165, 191, 0, False), (192, 191, 0, True)));
             Table.States (271).Minimal_Complete_Actions := To_Vector 
(((Reduce, 124, 1), (Reduce, 165, 1), (Reduce,
             192, 1)));
             Table.States (271).Minimal_Complete_Actions_Recursive := True;
+            Table.States (272).Action_List.Set_Capacity (1);
             Add_Action (Table.States (272), 74, 447);
-            Add_Error (Table.States (272));
             Table.States (272).Kernel := To_Vector (((117, 192, 4, False), 
(117, 192, 2, False)));
             Table.States (272).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 447)));
+            Table.States (273).Action_List.Set_Capacity (1);
             Add_Action (Table.States (273), (1 =>  77), (153, 0), 1, null, 
null);
             Table.States (273).Kernel := To_Vector ((0 => (153, 221, 0, 
False)));
             Table.States (273).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 153, 1)));
+            Table.States (274).Action_List.Set_Capacity (38);
             Add_Action (Table.States (274), 10, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (274), 20, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (274), 21, Reduce, (258, 3), 1, null, 
null);
@@ -3452,19 +3653,22 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (274), 100, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (274), 101, 239);
             Add_Action (Table.States (274), 102, 240);
-            Add_Error (Table.States (274));
+            Table.States (274).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (274), 115, 241);
             Add_Goto (Table.States (274), 322, 448);
             Table.States (274).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (258, 239, 0, False), (272, 239, 3, True), (277, 239, 4, False), 
(277, 239, 2, False), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (274).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 1)));
+            Table.States (275).Action_List.Set_Capacity (1);
             Add_Action (Table.States (275), (1 =>  77), (153, 2), 1, null, 
null);
             Table.States (275).Kernel := To_Vector ((0 => (153, 273, 0, 
False)));
             Table.States (275).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 153, 1)));
+            Table.States (276).Action_List.Set_Capacity (2);
             Add_Action (Table.States (276), (79, 87), (165, 2), 1, null, null);
             Table.States (276).Kernel := To_Vector ((0 => (165, 277, 0, 
False)));
             Table.States (276).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 165, 1)));
+            Table.States (277).Action_List.Set_Capacity (19);
             Add_Action (Table.States (277), 10, Reduce, (287, 3), 1, null, 
null);
             Add_Action (Table.States (277), 33, 288);
             Add_Action (Table.States (277), 35, Reduce, (287, 3), 1, null, 
null);
@@ -3484,17 +3688,19 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (277), 92, 294);
             Add_Action (Table.States (277), 96, Reduce, (287, 3), 1, null, 
null);
             Add_Action (Table.States (277), 98, 295);
-            Add_Error (Table.States (277));
+            Table.States (277).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (277), 288, 296);
             Table.States (277).Kernel := To_Vector (((277, 301, 2, False), 
(287, 301, 3, False), (287, 301, 2, False),
             (287, 301, 2, False), (287, 301, 0, False)));
             Table.States (277).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 287, 1)));
+            Table.States (278).Action_List.Set_Capacity (1);
             Add_Action (Table.States (278), 72, 450);
-            Add_Error (Table.States (278));
+            Table.States (278).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (278), 140, 451);
             Add_Goto (Table.States (278), 141, 452);
             Table.States (278).Kernel := To_Vector ((0 => (139, 35, 5, 
False)));
             Table.States (278).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 72, 450)));
+            Table.States (279).Action_List.Set_Capacity (7);
             Add_Action (Table.States (279), 39, 122);
             Add_Action (Table.States (279), 41, 124);
             Add_Action (Table.States (279), 76, 126);
@@ -3502,7 +3708,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (279), 104, 119);
             Add_Action (Table.States (279), 105, 33);
             Add_Action (Table.States (279), 106, 34);
-            Add_Error (Table.States (279));
+            Table.States (279).Goto_List.Set_Capacity (6);
             Add_Goto (Table.States (279), 117, 130);
             Add_Goto (Table.States (279), 128, 41);
             Add_Goto (Table.States (279), 239, 134);
@@ -3511,6 +3717,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (279), 293, 97);
             Table.States (279).Kernel := To_Vector ((0 => (197, 100, 1, 
False)));
             Table.States (279).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (280).Action_List.Set_Capacity (12);
             Add_Action (Table.States (280), 3, 121);
             Add_Action (Table.States (280), 39, 122);
             Add_Action (Table.States (280), 40, 123);
@@ -3523,7 +3730,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (280), 104, 119);
             Add_Action (Table.States (280), 105, 33);
             Add_Action (Table.States (280), 106, 34);
-            Add_Error (Table.States (280));
+            Table.States (280).Goto_List.Set_Capacity (13);
             Add_Goto (Table.States (280), 117, 130);
             Add_Goto (Table.States (280), 128, 41);
             Add_Goto (Table.States (280), 197, 133);
@@ -3540,11 +3747,12 @@ package body Ada_Process_LALR_Main is
             Table.States (280).Kernel := To_Vector ((0 => (282, 10, 1, True)));
             Table.States (280).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
             Table.States (280).Minimal_Complete_Actions_Recursive := True;
+            Table.States (281).Action_List.Set_Capacity (1);
             Add_Action (Table.States (281), 68, 455);
-            Add_Error (Table.States (281));
             Table.States (281).Kernel := To_Vector ((0 => (283, 10, 2, True)));
             Table.States (281).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 455)));
             Table.States (281).Minimal_Complete_Actions_Recursive := True;
+            Table.States (282).Action_List.Set_Capacity (12);
             Add_Action (Table.States (282), 3, 121);
             Add_Action (Table.States (282), 39, 122);
             Add_Action (Table.States (282), 40, 123);
@@ -3557,7 +3765,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (282), 104, 119);
             Add_Action (Table.States (282), 105, 33);
             Add_Action (Table.States (282), 106, 34);
-            Add_Error (Table.States (282));
+            Table.States (282).Goto_List.Set_Capacity (13);
             Add_Goto (Table.States (282), 117, 130);
             Add_Goto (Table.States (282), 128, 41);
             Add_Goto (Table.States (282), 197, 133);
@@ -3574,11 +3782,12 @@ package body Ada_Process_LALR_Main is
             Table.States (282).Kernel := To_Vector ((0 => (284, 43, 1, True)));
             Table.States (282).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
             Table.States (282).Minimal_Complete_Actions_Recursive := True;
+            Table.States (283).Action_List.Set_Capacity (1);
             Add_Action (Table.States (283), 22, 457);
-            Add_Error (Table.States (283));
             Table.States (283).Kernel := To_Vector ((0 => (285, 43, 2, True)));
             Table.States (283).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 22, 457)));
             Table.States (283).Minimal_Complete_Actions_Recursive := True;
+            Table.States (284).Action_List.Set_Capacity (12);
             Add_Action (Table.States (284), 3, 121);
             Add_Action (Table.States (284), 39, 122);
             Add_Action (Table.States (284), 40, 123);
@@ -3591,7 +3800,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (284), 104, 119);
             Add_Action (Table.States (284), 105, 33);
             Add_Action (Table.States (284), 106, 34);
-            Add_Error (Table.States (284));
+            Table.States (284).Goto_List.Set_Capacity (13);
             Add_Goto (Table.States (284), 117, 130);
             Add_Goto (Table.States (284), 128, 41);
             Add_Goto (Table.States (284), 197, 133);
@@ -3611,6 +3820,7 @@ package body Ada_Process_LALR_Main is
          end Subr_5;
          procedure Subr_6
          is begin
+            Table.States (285).Action_List.Set_Capacity (13);
             Add_Action (Table.States (285), 3, 121);
             Add_Action (Table.States (285), 39, 122);
             Add_Action (Table.States (285), 40, 123);
@@ -3624,7 +3834,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (285), 104, 119);
             Add_Action (Table.States (285), 105, 33);
             Add_Action (Table.States (285), 106, 34);
-            Add_Error (Table.States (285));
+            Table.States (285).Goto_List.Set_Capacity (13);
             Add_Goto (Table.States (285), 117, 130);
             Add_Goto (Table.States (285), 128, 41);
             Add_Goto (Table.States (285), 197, 133);
@@ -3641,6 +3851,7 @@ package body Ada_Process_LALR_Main is
             Table.States (285).Kernel := To_Vector (((282, 10, 1, True), (283, 
10, 2, True)));
             Table.States (285).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
             Table.States (285).Minimal_Complete_Actions_Recursive := True;
+            Table.States (286).Action_List.Set_Capacity (13);
             Add_Action (Table.States (286), 3, 121);
             Add_Action (Table.States (286), 22, 461);
             Add_Action (Table.States (286), 39, 122);
@@ -3654,7 +3865,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (286), 104, 119);
             Add_Action (Table.States (286), 105, 33);
             Add_Action (Table.States (286), 106, 34);
-            Add_Error (Table.States (286));
+            Table.States (286).Goto_List.Set_Capacity (13);
             Add_Goto (Table.States (286), 117, 130);
             Add_Goto (Table.States (286), 128, 41);
             Add_Goto (Table.States (286), 197, 133);
@@ -3671,6 +3882,7 @@ package body Ada_Process_LALR_Main is
             Table.States (286).Kernel := To_Vector (((284, 43, 1, True), (285, 
43, 2, True)));
             Table.States (286).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
             Table.States (286).Minimal_Complete_Actions_Recursive := True;
+            Table.States (287).Action_List.Set_Capacity (12);
             Add_Action (Table.States (287), 3, 121);
             Add_Action (Table.States (287), 39, 122);
             Add_Action (Table.States (287), 40, 123);
@@ -3683,7 +3895,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (287), 104, 119);
             Add_Action (Table.States (287), 105, 33);
             Add_Action (Table.States (287), 106, 34);
-            Add_Error (Table.States (287));
+            Table.States (287).Goto_List.Set_Capacity (13);
             Add_Goto (Table.States (287), 117, 130);
             Add_Goto (Table.States (287), 128, 41);
             Add_Goto (Table.States (287), 197, 133);
@@ -3700,6 +3912,7 @@ package body Ada_Process_LALR_Main is
             Table.States (287).Kernel := To_Vector ((0 => (286, 75, 1, True)));
             Table.States (287).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
             Table.States (287).Minimal_Complete_Actions_Recursive := True;
+            Table.States (288).Action_List.Set_Capacity (11);
             Add_Action (Table.States (288), 3, 121);
             Add_Action (Table.States (288), 39, 122);
             Add_Action (Table.States (288), 40, 123);
@@ -3711,7 +3924,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (288), 104, 119);
             Add_Action (Table.States (288), 105, 33);
             Add_Action (Table.States (288), 106, 34);
-            Add_Error (Table.States (288));
+            Table.States (288).Goto_List.Set_Capacity (14);
             Add_Goto (Table.States (288), 117, 130);
             Add_Goto (Table.States (288), 128, 41);
             Add_Goto (Table.States (288), 197, 133);
@@ -3728,28 +3941,35 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (288), 330, 146);
             Table.States (288).Kernel := To_Vector ((0 => (287, 33, 1, 
False)));
             Table.States (288).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (289).Action_List.Set_Capacity (1);
             Add_Action (Table.States (289), 33, 468);
-            Add_Error (Table.States (289));
             Table.States (289).Kernel := To_Vector ((0 => (287, 40, 2, 
False)));
             Table.States (289).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 33, 468)));
+            Table.States (290).Action_List.Set_Capacity (11);
             Add_Action (Table.States (290), (3, 39, 40, 41, 76, 94, 95, 103, 
104, 105, 106), (288, 0), 1, null, null);
             Table.States (290).Kernel := To_Vector ((0 => (288, 86, 0, 
False)));
             Table.States (290).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 288, 1)));
+            Table.States (291).Action_List.Set_Capacity (11);
             Add_Action (Table.States (291), (3, 39, 40, 41, 76, 94, 95, 103, 
104, 105, 106), (288, 4), 1, null, null);
             Table.States (291).Kernel := To_Vector ((0 => (288, 88, 0, 
False)));
             Table.States (291).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 288, 1)));
+            Table.States (292).Action_List.Set_Capacity (11);
             Add_Action (Table.States (292), (3, 39, 40, 41, 76, 94, 95, 103, 
104, 105, 106), (288, 5), 1, null, null);
             Table.States (292).Kernel := To_Vector ((0 => (288, 89, 0, 
False)));
             Table.States (292).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 288, 1)));
+            Table.States (293).Action_List.Set_Capacity (11);
             Add_Action (Table.States (293), (3, 39, 40, 41, 76, 94, 95, 103, 
104, 105, 106), (288, 2), 1, null, null);
             Table.States (293).Kernel := To_Vector ((0 => (288, 91, 0, 
False)));
             Table.States (293).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 288, 1)));
+            Table.States (294).Action_List.Set_Capacity (11);
             Add_Action (Table.States (294), (3, 39, 40, 41, 76, 94, 95, 103, 
104, 105, 106), (288, 3), 1, null, null);
             Table.States (294).Kernel := To_Vector ((0 => (288, 92, 0, 
False)));
             Table.States (294).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 288, 1)));
+            Table.States (295).Action_List.Set_Capacity (11);
             Add_Action (Table.States (295), (3, 39, 40, 41, 76, 94, 95, 103, 
104, 105, 106), (288, 1), 1, null, null);
             Table.States (295).Kernel := To_Vector ((0 => (288, 98, 0, 
False)));
             Table.States (295).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 288, 1)));
+            Table.States (296).Action_List.Set_Capacity (11);
             Add_Action (Table.States (296), 3, 121);
             Add_Action (Table.States (296), 39, 122);
             Add_Action (Table.States (296), 40, 123);
@@ -3761,7 +3981,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (296), 104, 119);
             Add_Action (Table.States (296), 105, 33);
             Add_Action (Table.States (296), 106, 34);
-            Add_Error (Table.States (296));
+            Table.States (296).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (296), 117, 130);
             Add_Goto (Table.States (296), 128, 41);
             Add_Goto (Table.States (296), 197, 133);
@@ -3775,18 +3995,23 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (296), 330, 146);
             Table.States (296).Kernel := To_Vector ((0 => (287, 288, 1, 
False)));
             Table.States (296).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (297).Action_List.Set_Capacity (9);
             Add_Action (Table.States (297), (3, 39, 40, 41, 76, 103, 104, 105, 
106), (237, 2), 1, null, null);
             Table.States (297).Kernel := To_Vector ((0 => (237, 38, 0, 
False)));
             Table.States (297).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 237, 1)));
+            Table.States (298).Action_List.Set_Capacity (9);
             Add_Action (Table.States (298), (3, 39, 40, 41, 76, 103, 104, 105, 
106), (237, 3), 1, null, null);
             Table.States (298).Kernel := To_Vector ((0 => (237, 55, 0, 
False)));
             Table.States (298).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 237, 1)));
+            Table.States (299).Action_List.Set_Capacity (9);
             Add_Action (Table.States (299), (3, 39, 40, 41, 76, 103, 104, 105, 
106), (237, 1), 1, null, null);
             Table.States (299).Kernel := To_Vector ((0 => (237, 97, 0, 
False)));
             Table.States (299).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 237, 1)));
+            Table.States (300).Action_List.Set_Capacity (9);
             Add_Action (Table.States (300), (3, 39, 40, 41, 76, 103, 104, 105, 
106), (237, 0), 1, null, null);
             Table.States (300).Kernel := To_Vector ((0 => (237, 99, 0, 
False)));
             Table.States (300).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 237, 1)));
+            Table.States (301).Action_List.Set_Capacity (9);
             Add_Action (Table.States (301), 3, 121);
             Add_Action (Table.States (301), 39, 122);
             Add_Action (Table.States (301), 40, 123);
@@ -3796,7 +4021,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (301), 104, 119);
             Add_Action (Table.States (301), 105, 33);
             Add_Action (Table.States (301), 106, 34);
-            Add_Error (Table.States (301));
+            Table.States (301).Goto_List.Set_Capacity (7);
             Add_Goto (Table.States (301), 117, 130);
             Add_Goto (Table.States (301), 128, 41);
             Add_Goto (Table.States (301), 197, 470);
@@ -3807,15 +4032,19 @@ package body Ada_Process_LALR_Main is
             Table.States (301).Kernel := To_Vector ((0 => (320, 237, 1, 
True)));
             Table.States (301).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
             Table.States (301).Minimal_Complete_Actions_Recursive := True;
+            Table.States (302).Action_List.Set_Capacity (9);
             Add_Action (Table.States (302), (3, 39, 40, 41, 76, 103, 104, 105, 
106), (130, 2), 1, null, null);
             Table.States (302).Kernel := To_Vector ((0 => (130, 78, 0, 
False)));
             Table.States (302).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 130, 1)));
+            Table.States (303).Action_List.Set_Capacity (9);
             Add_Action (Table.States (303), (3, 39, 40, 41, 76, 103, 104, 105, 
106), (130, 1), 1, null, null);
             Table.States (303).Kernel := To_Vector ((0 => (130, 94, 0, 
False)));
             Table.States (303).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 130, 1)));
+            Table.States (304).Action_List.Set_Capacity (9);
             Add_Action (Table.States (304), (3, 39, 40, 41, 76, 103, 104, 105, 
106), (130, 0), 1, null, null);
             Table.States (304).Kernel := To_Vector ((0 => (130, 95, 0, 
False)));
             Table.States (304).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 130, 1)));
+            Table.States (305).Action_List.Set_Capacity (9);
             Add_Action (Table.States (305), 3, 121);
             Add_Action (Table.States (305), 39, 122);
             Add_Action (Table.States (305), 40, 123);
@@ -3825,7 +4054,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (305), 104, 119);
             Add_Action (Table.States (305), 105, 33);
             Add_Action (Table.States (305), 106, 34);
-            Add_Error (Table.States (305));
+            Table.States (305).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (305), 117, 130);
             Add_Goto (Table.States (305), 128, 41);
             Add_Goto (Table.States (305), 197, 133);
@@ -3837,6 +4066,7 @@ package body Ada_Process_LALR_Main is
             Table.States (305).Kernel := To_Vector ((0 => (321, 130, 1, 
True)));
             Table.States (305).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
             Table.States (305).Minimal_Complete_Actions_Recursive := True;
+            Table.States (306).Action_List.Set_Capacity (31);
             Add_Action (Table.States (306), 10, Reduce, (301, 0), 2, null, 
null);
             Add_Action (Table.States (306), 20, Reduce, (301, 0), 2, null, 
null);
             Add_Action (Table.States (306), 21, Reduce, (301, 0), 2, null, 
null);
@@ -3868,19 +4098,21 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (306), 95, 304);
             Add_Action (Table.States (306), 96, Reduce, (301, 0), 2, null, 
null);
             Add_Action (Table.States (306), 98, Reduce, (301, 0), 2, null, 
null);
-            Add_Error (Table.States (306));
+            Table.States (306).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (306), 130, 305);
             Table.States (306).Kernel := To_Vector (((301, 321, 0, False), 
(321, 321, 2, True)));
             Table.States (306).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 2)));
+            Table.States (307).Action_List.Set_Capacity (1);
             Add_Action (Table.States (307), 96, 472);
-            Add_Error (Table.States (307));
             Table.States (307).Kernel := To_Vector ((0 => (161, 192, 1, 
False)));
             Table.States (307).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 472)));
+            Table.States (308).Action_List.Set_Capacity (46);
             Add_Action (Table.States (308), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (161, 1), 3, delay_statement_1'Access, null);
             Table.States (308).Kernel := To_Vector ((0 => (161, 96, 0, 
False)));
             Table.States (308).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 161, 3)));
+            Table.States (309).Action_List.Set_Capacity (13);
             Add_Action (Table.States (309), 3, 121);
             Add_Action (Table.States (309), 39, 122);
             Add_Action (Table.States (309), 40, 123);
@@ -3894,7 +4126,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (309), 104, 119);
             Add_Action (Table.States (309), 105, 33);
             Add_Action (Table.States (309), 106, 34);
-            Add_Error (Table.States (309));
+            Table.States (309).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (309), 117, 130);
             Add_Goto (Table.States (309), 128, 41);
             Add_Goto (Table.States (309), 191, 131);
@@ -3917,11 +4149,13 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (309), 330, 146);
             Table.States (309).Kernel := To_Vector ((0 => (190, 72, 1, 
False)));
             Table.States (309).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (310).Action_List.Set_Capacity (46);
             Add_Action (Table.States (310), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (190, 1), 3, exit_statement_1'Access, null);
             Table.States (310).Kernel := To_Vector ((0 => (190, 96, 0, 
False)));
             Table.States (310).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 190, 3)));
+            Table.States (311).Action_List.Set_Capacity (12);
             Add_Action (Table.States (311), 3, 121);
             Add_Action (Table.States (311), 39, 122);
             Add_Action (Table.States (311), 40, 474);
@@ -3934,7 +4168,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (311), 104, 119);
             Add_Action (Table.States (311), 105, 33);
             Add_Action (Table.States (311), 106, 34);
-            Add_Error (Table.States (311));
+            Table.States (311).Goto_List.Set_Capacity (14);
             Add_Goto (Table.States (311), 117, 130);
             Add_Goto (Table.States (311), 128, 41);
             Add_Goto (Table.States (311), 167, 476);
@@ -3951,22 +4185,24 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (311), 330, 146);
             Table.States (311).Kernel := To_Vector (((230, 33, 2, False), 
(230, 33, 1, False)));
             Table.States (311).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (312).Action_List.Set_Capacity (4);
             Add_Action (Table.States (312), 59, 481);
             Add_Action (Table.States (312), 104, 119);
             Add_Action (Table.States (312), 105, 33);
             Add_Action (Table.States (312), 106, 34);
-            Add_Error (Table.States (312));
+            Table.States (312).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (312), 128, 41);
             Add_Goto (Table.States (312), 239, 482);
             Add_Goto (Table.States (312), 272, 92);
             Add_Goto (Table.States (312), 293, 97);
             Table.States (312).Kernel := To_Vector (((230, 42, 2, False), 
(230, 42, 1, False)));
             Table.States (312).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (313).Action_List.Set_Capacity (4);
             Add_Action (Table.States (313), 40, 483);
             Add_Action (Table.States (313), 104, 119);
             Add_Action (Table.States (313), 105, 33);
             Add_Action (Table.States (313), 106, 34);
-            Add_Error (Table.States (313));
+            Table.States (313).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (313), 128, 41);
             Add_Goto (Table.States (313), 239, 484);
             Add_Goto (Table.States (313), 272, 92);
@@ -3974,6 +4210,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (313), 314, 485);
             Table.States (313).Kernel := To_Vector (((230, 81, 4, False), 
(230, 81, 3, False)));
             Table.States (313).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (314).Action_List.Set_Capacity (13);
             Add_Action (Table.States (314), 3, 121);
             Add_Action (Table.States (314), 39, 122);
             Add_Action (Table.States (314), 40, 123);
@@ -3987,7 +4224,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (314), 104, 119);
             Add_Action (Table.States (314), 105, 33);
             Add_Action (Table.States (314), 106, 34);
-            Add_Error (Table.States (314));
+            Table.States (314).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (314), 117, 130);
             Add_Goto (Table.States (314), 128, 41);
             Add_Goto (Table.States (314), 191, 131);
@@ -4010,16 +4247,18 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (314), 330, 146);
             Table.States (314).Kernel := To_Vector ((0 => (121, 71, 1, 
False)));
             Table.States (314).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (315).Action_List.Set_Capacity (1);
             Add_Action (Table.States (315), 12, 487);
-            Add_Error (Table.States (315));
             Table.States (315).Kernel := To_Vector ((0 => (127, 71, 2, 
False)));
             Table.States (315).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 12, 487)));
+            Table.States (316).Action_List.Set_Capacity (2);
             Add_Action (Table.States (316), 54, 488);
             Add_Action (Table.States (316), 76, 126);
-            Add_Error (Table.States (316));
+            Table.States (316).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (316), 117, 489);
             Table.States (316).Kernel := To_Vector (((182, 71, 3, False), 
(281, 71, 12, False)));
             Table.States (316).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 76, 126)));
+            Table.States (317).Action_List.Set_Capacity (12);
             Add_Action (Table.States (317), 7, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (317), 21, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (317), 35, Reduce, (241, 1), 0, null, 
null);
@@ -4032,11 +4271,12 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (317), 104, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (317), 105, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (317), 106, Reduce, (241, 1), 0, null, 
null);
-            Add_Error (Table.States (317));
+            Table.States (317).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (317), 114, 490);
             Add_Goto (Table.States (317), 241, 491);
             Table.States (317).Kernel := To_Vector (((291, 58, 0, False), 
(291, 58, 2, True)));
             Table.States (317).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 0)));
+            Table.States (318).Action_List.Set_Capacity (21);
             Add_Action (Table.States (318), 3, 121);
             Add_Action (Table.States (318), 15, 258);
             Add_Action (Table.States (318), 28, 259);
@@ -4059,7 +4299,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (318), 104, 492);
             Add_Action (Table.States (318), 105, 33);
             Add_Action (Table.States (318), 106, 264);
-            Add_Error (Table.States (318));
+            Table.States (318).Goto_List.Set_Capacity (32);
             Add_Goto (Table.States (318), 117, 130);
             Add_Goto (Table.States (318), 124, 265);
             Add_Goto (Table.States (318), 125, 406);
@@ -4096,87 +4336,98 @@ package body Ada_Process_LALR_Main is
             (239, 76, 4, True)));
             Table.States (318).Minimal_Complete_Actions := To_Vector 
(((Reduce, 125, 0), (Reduce, 255, 0)));
             Table.States (318).Minimal_Complete_Actions_Recursive := True;
+            Table.States (319).Action_List.Set_Capacity (1);
             Add_Action (Table.States (319), 58, 317);
-            Add_Error (Table.States (319));
+            Table.States (319).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (319), 291, 496);
             Table.States (319).Kernel := To_Vector ((0 => (252, 199, 1, 
True)));
             Table.States (319).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 58, 317)));
             Table.States (319).Minimal_Complete_Actions_Recursive := True;
+            Table.States (320).Action_List.Set_Capacity (4);
             Add_Action (Table.States (320), (35, 56, 74, 96), (207, 0), 3, 
function_specification_0'Access,
             function_specification_0_check'Access);
             Table.States (320).Kernel := To_Vector ((0 => (207, 252, 0, 
False)));
             Table.States (320).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 207, 3)));
+            Table.States (321).Action_List.Set_Capacity (7);
             Add_Action (Table.States (321), (21, 35, 56, 74, 77, 82, 96), 
(252, 1), 1, null, null);
             Table.States (321).Kernel := To_Vector ((0 => (252, 291, 0, 
True)));
             Table.States (321).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 252, 1)));
             Table.States (321).Minimal_Complete_Actions_Recursive := True;
+            Table.States (322).Action_List.Set_Capacity (5);
             Add_Action (Table.States (322), 56, 497);
             Add_Action (Table.States (322), 76, 235);
             Add_Action (Table.States (322), 84, 237);
             Add_Action (Table.States (322), 101, 239);
             Add_Action (Table.States (322), 102, 240);
-            Add_Error (Table.States (322));
+            Table.States (322).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (322), 115, 241);
             Add_Goto (Table.States (322), 322, 242);
             Table.States (322).Kernel := To_Vector (((128, 239, 2, True), 
(215, 239, 3, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (322).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 56, 497)));
+            Table.States (323).Action_List.Set_Capacity (5);
             Add_Action (Table.States (323), 56, 498);
             Add_Action (Table.States (323), 76, 235);
             Add_Action (Table.States (323), 84, 237);
             Add_Action (Table.States (323), 101, 239);
             Add_Action (Table.States (323), 102, 240);
-            Add_Error (Table.States (323));
+            Table.States (323).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (323), 115, 241);
             Add_Goto (Table.States (323), 322, 242);
             Table.States (323).Kernel := To_Vector (((128, 239, 2, True), 
(215, 239, 3, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (323).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 56, 498)));
+            Table.States (324).Action_List.Set_Capacity (5);
             Add_Action (Table.States (324), 56, 499);
             Add_Action (Table.States (324), 76, 235);
             Add_Action (Table.States (324), 84, 237);
             Add_Action (Table.States (324), 101, 239);
             Add_Action (Table.States (324), 102, 240);
-            Add_Error (Table.States (324));
+            Table.States (324).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (324), 115, 241);
             Add_Goto (Table.States (324), 322, 242);
             Table.States (324).Kernel := To_Vector (((128, 239, 2, True), 
(215, 239, 3, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (324).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 56, 499)));
+            Table.States (325).Action_List.Set_Capacity (4);
             Add_Action (Table.States (325), 35, Reduce, (169, 2), 0, null, 
null);
             Add_Action (Table.States (325), 74, Reduce, (169, 2), 0, null, 
null);
             Add_Action (Table.States (325), 76, 377);
             Add_Action (Table.States (325), 96, Reduce, (169, 2), 0, null, 
null);
-            Add_Error (Table.States (325));
+            Table.States (325).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (325), 169, 500);
             Table.States (325).Kernel := To_Vector (((201, 104, 3, False), 
(201, 104, 3, False), (201, 104, 1,
             False)));
             Table.States (325).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 169, 0)));
+            Table.States (326).Action_List.Set_Capacity (3);
             Add_Action (Table.States (326), 104, 119);
             Add_Action (Table.States (326), 105, 33);
             Add_Action (Table.States (326), 106, 34);
-            Add_Error (Table.States (326));
+            Table.States (326).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (326), 128, 41);
             Add_Goto (Table.States (326), 239, 501);
             Add_Goto (Table.States (326), 272, 92);
             Add_Goto (Table.States (326), 293, 97);
             Table.States (326).Kernel := To_Vector ((0 => (204, 47, 5, 
False)));
             Table.States (326).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (327).Action_List.Set_Capacity (3);
             Add_Action (Table.States (327), 35, 502);
             Add_Action (Table.States (327), 74, 337);
             Add_Action (Table.States (327), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (327));
+            Table.States (327).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (327), 122, 503);
             Table.States (327).Kernel := To_Vector (((200, 312, 4, False), 
(200, 312, 3, False), (200, 312, 3, False),
             (200, 312, 1, False)));
             Table.States (327).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (328).Action_List.Set_Capacity (8);
             Add_Action (Table.States (328), (29, 47, 48, 50, 69, 71, 74, 104), 
(211, 0), 2, null, null);
             Table.States (328).Kernel := To_Vector ((0 => (211, 212, 0, 
True)));
             Table.States (328).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 211, 2)));
             Table.States (328).Minimal_Complete_Actions_Recursive := True;
+            Table.States (329).Action_List.Set_Capacity (10);
             Add_Action (Table.States (329), 7, Reduce, (236, 3), 0, null, 
null);
             Add_Action (Table.States (329), 33, 504);
             Add_Action (Table.States (329), 40, Reduce, (236, 3), 0, null, 
null);
@@ -4187,16 +4438,18 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (329), 104, Reduce, (236, 3), 0, null, 
null);
             Add_Action (Table.States (329), 105, Reduce, (236, 3), 0, null, 
null);
             Add_Action (Table.States (329), 106, Reduce, (236, 3), 0, null, 
null);
-            Add_Error (Table.States (329));
+            Table.States (329).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (329), 236, 506);
             Table.States (329).Kernel := To_Vector (((198, 81, 3, False), 
(198, 81, 4, False), (198, 81, 2, False),
             (198, 81, 3, False)));
             Table.States (329).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 236, 0)));
+            Table.States (330).Action_List.Set_Capacity (46);
             Add_Action (Table.States (330), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (303, 3), 3, simple_statement_3'Access, null);
             Table.States (330).Kernel := To_Vector ((0 => (303, 96, 0, 
False)));
             Table.States (330).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 303, 3)));
+            Table.States (331).Action_List.Set_Capacity (25);
             Add_Action (Table.States (331), 4, 1);
             Add_Action (Table.States (331), 5, 2);
             Add_Action (Table.States (331), 13, Reduce, (132, 1), 0, null, 
null);
@@ -4222,7 +4475,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (331), 104, 360);
             Add_Action (Table.States (331), 105, 33);
             Add_Action (Table.States (331), 106, 34);
-            Add_Error (Table.States (331));
+            Table.States (331).Goto_List.Set_Capacity (31);
             Add_Goto (Table.States (331), 113, 36);
             Add_Goto (Table.States (331), 123, 38);
             Add_Goto (Table.States (331), 126, 39);
@@ -4257,10 +4510,11 @@ package body Ada_Process_LALR_Main is
             Table.States (331).Kernel := To_Vector (((222, 68, 6, False), 
(222, 68, 4, False), (222, 68, 5, False),
             (222, 68, 3, False)));
             Table.States (331).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (332).Action_List.Set_Capacity (3);
             Add_Action (Table.States (332), 104, 119);
             Add_Action (Table.States (332), 105, 33);
             Add_Action (Table.States (332), 106, 34);
-            Add_Error (Table.States (332));
+            Table.States (332).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (332), 128, 41);
             Add_Goto (Table.States (332), 238, 508);
             Add_Goto (Table.States (332), 239, 219);
@@ -4268,11 +4522,12 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (332), 293, 97);
             Table.States (332).Kernel := To_Vector ((0 => (332, 74, 2, 
False)));
             Table.States (332).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (333).Action_List.Set_Capacity (2);
             Add_Action (Table.States (333), 83, 381);
             Add_Action (Table.States (333), 96, 509);
-            Add_Error (Table.States (333));
             Table.States (333).Kernel := To_Vector (((238, 238, 2, True), 
(332, 238, 1, False)));
             Table.States (333).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 509)));
+            Table.States (334).Action_List.Set_Capacity (6);
             Add_Action (Table.States (334), 35, 510);
             Add_Conflict (Table.States (334), 35, (122, 1), 0, null, null);
             Add_Action (Table.States (334), 74, 337);
@@ -4280,7 +4535,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (334), 84, 237);
             Add_Action (Table.States (334), 101, 239);
             Add_Action (Table.States (334), 102, 240);
-            Add_Error (Table.States (334));
+            Table.States (334).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (334), 115, 241);
             Add_Goto (Table.States (334), 122, 511);
             Add_Goto (Table.States (334), 322, 242);
@@ -4288,23 +4543,25 @@ package body Ada_Process_LALR_Main is
             (247, 239, 4, False), (247, 239, 3, False), (248, 239, 3, False), 
(272, 239, 3, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (334).Minimal_Complete_Actions := To_Vector 
(((Reduce, 122, 0), (Shift, 35, 510)));
-            Add_Action (Table.States (335), 39, 512);
-            Add_Error (Table.States (335));
-            Table.States (335).Kernel := To_Vector ((0 => (213, 35, 3, 
False)));
-            Table.States (335).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 512)));
          end Subr_6;
          procedure Subr_7
          is begin
+            Table.States (335).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (335), 39, 512);
+            Table.States (335).Kernel := To_Vector ((0 => (213, 35, 3, 
False)));
+            Table.States (335).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 512)));
+            Table.States (336).Action_List.Set_Capacity (3);
             Add_Action (Table.States (336), 104, 119);
             Add_Action (Table.States (336), 105, 33);
             Add_Action (Table.States (336), 106, 34);
-            Add_Error (Table.States (336));
+            Table.States (336).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (336), 128, 41);
             Add_Goto (Table.States (336), 239, 513);
             Add_Goto (Table.States (336), 272, 92);
             Add_Goto (Table.States (336), 293, 97);
             Table.States (336).Kernel := To_Vector ((0 => (250, 56, 2, 
False)));
             Table.States (336).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (337).Action_List.Set_Capacity (18);
             Add_Action (Table.States (337), 3, 121);
             Add_Action (Table.States (337), 35, Reduce, (124, 5), 0, null, 
null);
             Add_Action (Table.States (337), 39, 122);
@@ -4323,7 +4580,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (337), 104, 119);
             Add_Action (Table.States (337), 105, 33);
             Add_Action (Table.States (337), 106, 264);
-            Add_Error (Table.States (337));
+            Table.States (337).Goto_List.Set_Capacity (24);
             Add_Goto (Table.States (337), 117, 130);
             Add_Goto (Table.States (337), 124, 265);
             Add_Goto (Table.States (337), 125, 514);
@@ -4350,10 +4607,11 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (337), 330, 146);
             Table.States (337).Kernel := To_Vector ((0 => (122, 74, 0, 
False)));
             Table.States (337).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 0)));
+            Table.States (338).Action_List.Set_Capacity (1);
             Add_Action (Table.States (338), 35, 515);
-            Add_Error (Table.States (338));
             Table.States (338).Kernel := To_Vector (((251, 122, 3, False), 
(251, 122, 2, False)));
             Table.States (338).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 515)));
+            Table.States (339).Action_List.Set_Capacity (20);
             Add_Action (Table.States (339), 3, 121);
             Add_Action (Table.States (339), 15, 258);
             Add_Action (Table.States (339), 28, 259);
@@ -4374,7 +4632,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (339), 104, 119);
             Add_Action (Table.States (339), 105, 33);
             Add_Action (Table.States (339), 106, 264);
-            Add_Error (Table.States (339));
+            Table.States (339).Goto_List.Set_Capacity (28);
             Add_Goto (Table.States (339), 117, 130);
             Add_Goto (Table.States (339), 124, 265);
             Add_Goto (Table.States (339), 125, 516);
@@ -4405,61 +4663,68 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (339), 330, 146);
             Table.States (339).Kernel := To_Vector (((257, 76, 2, False), 
(257, 76, 4, False)));
             Table.States (339).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 0)));
+            Table.States (340).Action_List.Set_Capacity (46);
             Add_Action (Table.States (340), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (257, 2), 3, pragma_g_2'Access, null);
             Table.States (340).Kernel := To_Vector ((0 => (257, 96, 0, 
False)));
             Table.States (340).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 257, 3)));
+            Table.States (341).Action_List.Set_Capacity (5);
             Add_Action (Table.States (341), 71, Reduce, (163, 0), 1, null, 
null);
             Add_Conflict (Table.States (341), 71, (239, 5), 1, name_5'Access, 
name_5_check'Access);
             Add_Action (Table.States (341), 76, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (341), 84, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (341), 101, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (341), 102, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Error (Table.States (341));
             Table.States (341).Kernel := To_Vector (((163, 104, 0, False), 
(239, 104, 0, False)));
             Table.States (341).Minimal_Complete_Actions := To_Vector 
(((Reduce, 163, 1), (Reduce, 239, 1)));
+            Table.States (342).Action_List.Set_Capacity (2);
             Add_Action (Table.States (342), 83, 381);
             Add_Action (Table.States (342), 96, 518);
-            Add_Error (Table.States (342));
             Table.States (342).Kernel := To_Vector (((238, 238, 2, True), 
(332, 238, 1, False)));
             Table.States (342).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 518)));
+            Table.States (343).Action_List.Set_Capacity (6);
             Add_Action (Table.States (343), 7, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (343), 26, 385);
             Add_Action (Table.States (343), 40, 386);
             Add_Action (Table.States (343), 104, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (343), 105, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (343), 106, Reduce, (241, 1), 0, null, 
null);
-            Add_Error (Table.States (343));
+            Table.States (343).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (343), 114, 387);
             Add_Goto (Table.States (343), 241, 388);
             Table.States (343).Kernel := To_Vector (((245, 81, 4, False), 
(245, 81, 5, False), (245, 81, 4, False)));
             Table.States (343).Minimal_Complete_Actions := To_Vector 
(((Reduce, 241, 0), (Shift, 26, 385)));
+            Table.States (344).Action_List.Set_Capacity (8);
             Add_Action (Table.States (344), (21, 35, 56, 72, 74, 77, 82, 96), 
(253, 0), 1, null, null);
             Table.States (344).Kernel := To_Vector ((0 => (253, 199, 0, 
False)));
             Table.States (344).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 253, 1)));
+            Table.States (345).Action_List.Set_Capacity (4);
             Add_Action (Table.States (345), (35, 56, 74, 96), (262, 0), 3, 
procedure_specification_0'Access,
             procedure_specification_0_check'Access);
             Table.States (345).Kernel := To_Vector ((0 => (262, 253, 0, 
False)));
             Table.States (345).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 262, 3)));
+            Table.States (346).Action_List.Set_Capacity (2);
             Add_Action (Table.States (346), 35, 519);
             Add_Conflict (Table.States (346), 35, (122, 1), 0, null, null);
             Add_Action (Table.States (346), 74, 337);
-            Add_Error (Table.States (346));
+            Table.States (346).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (346), 122, 520);
             Table.States (346).Kernel := To_Vector (((264, 104, 3, False), 
(265, 104, 3, False)));
             Table.States (346).Minimal_Complete_Actions := To_Vector 
(((Reduce, 122, 0), (Shift, 35, 519)));
+            Table.States (347).Action_List.Set_Capacity (3);
             Add_Action (Table.States (347), 35, Reduce, (169, 2), 0, null, 
null);
             Add_Action (Table.States (347), 74, Reduce, (169, 2), 0, null, 
null);
             Add_Action (Table.States (347), 76, 377);
-            Add_Error (Table.States (347));
+            Table.States (347).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (347), 169, 521);
             Table.States (347).Kernel := To_Vector (((271, 104, 6, False), 
(271, 104, 3, False)));
             Table.States (347).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 169, 0)));
+            Table.States (348).Action_List.Set_Capacity (1);
             Add_Action (Table.States (348), 35, 522);
-            Add_Error (Table.States (348));
             Table.States (348).Kernel := To_Vector (((304, 122, 6, False), 
(304, 122, 3, False)));
             Table.States (348).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 522)));
+            Table.States (349).Action_List.Set_Capacity (13);
             Add_Action (Table.States (349), 3, 121);
             Add_Action (Table.States (349), 39, 122);
             Add_Action (Table.States (349), 40, 123);
@@ -4473,7 +4738,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (349), 104, 119);
             Add_Action (Table.States (349), 105, 33);
             Add_Action (Table.States (349), 106, 34);
-            Add_Error (Table.States (349));
+            Table.States (349).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (349), 117, 130);
             Add_Goto (Table.States (349), 128, 41);
             Add_Goto (Table.States (349), 191, 131);
@@ -4496,20 +4761,23 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (349), 330, 146);
             Table.States (349).Kernel := To_Vector ((0 => (276, 74, 1, 
False)));
             Table.States (349).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (350).Action_List.Set_Capacity (46);
             Add_Action (Table.States (350), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (276, 1), 3, raise_statement_1'Access, null);
             Table.States (350).Kernel := To_Vector ((0 => (276, 96, 0, 
False)));
             Table.States (350).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 276, 3)));
+            Table.States (351).Action_List.Set_Capacity (1);
             Add_Action (Table.States (351), 5, 524);
-            Add_Error (Table.States (351));
             Table.States (351).Kernel := To_Vector ((0 => (290, 74, 2, 
False)));
             Table.States (351).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 5, 524)));
+            Table.States (352).Action_List.Set_Capacity (46);
             Add_Action (Table.States (352), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (290, 1), 3, requeue_statement_1'Access, null);
             Table.States (352).Kernel := To_Vector ((0 => (290, 96, 0, 
False)));
             Table.States (352).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 290, 3)));
+            Table.States (353).Action_List.Set_Capacity (10);
             Add_Action (Table.States (353), 7, Reduce, (118, 1), 0, null, 
null);
             Add_Action (Table.States (353), 8, 401);
             Add_Action (Table.States (353), 16, Reduce, (118, 1), 0, null, 
null);
@@ -4520,20 +4788,23 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (353), 104, Reduce, (118, 1), 0, null, 
null);
             Add_Action (Table.States (353), 105, Reduce, (118, 1), 0, null, 
null);
             Add_Action (Table.States (353), 106, Reduce, (118, 1), 0, null, 
null);
-            Add_Error (Table.States (353));
+            Table.States (353).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (353), 118, 525);
             Table.States (353).Kernel := To_Vector (((194, 81, 2, False), 
(194, 81, 1, False)));
             Table.States (353).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 118, 0)));
+            Table.States (354).Action_List.Set_Capacity (46);
             Add_Action (Table.States (354), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (302, 0), 3, simple_return_statement_0'Access, null);
             Table.States (354).Kernel := To_Vector ((0 => (302, 96, 0, 
False)));
             Table.States (354).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 302, 3)));
+            Table.States (355).Action_List.Set_Capacity (46);
             Add_Action (Table.States (355), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (196, 1), 3, extended_return_statement_1'Access, null);
             Table.States (355).Kernel := To_Vector ((0 => (196, 96, 0, 
False)));
             Table.States (355).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 196, 3)));
+            Table.States (356).Action_List.Set_Capacity (24);
             Add_Action (Table.States (356), 4, 1);
             Add_Action (Table.States (356), 5, 2);
             Add_Action (Table.States (356), 13, Reduce, (132, 1), 0, null, 
null);
@@ -4558,7 +4829,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (356), 104, 360);
             Add_Action (Table.States (356), 105, 33);
             Add_Action (Table.States (356), 106, 34);
-            Add_Error (Table.States (356));
+            Table.States (356).Goto_List.Set_Capacity (32);
             Add_Goto (Table.States (356), 113, 36);
             Add_Goto (Table.States (356), 123, 38);
             Add_Goto (Table.States (356), 126, 39);
@@ -4593,26 +4864,29 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (356), 323, 114);
             Table.States (356).Kernel := To_Vector ((0 => (196, 21, 3, 
False)));
             Table.States (356).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 218, 0)));
+            Table.States (357).Action_List.Set_Capacity (5);
             Add_Action (Table.States (357), 76, 235);
             Add_Action (Table.States (357), 77, 527);
             Add_Action (Table.States (357), 84, 237);
             Add_Action (Table.States (357), 101, 239);
             Add_Action (Table.States (357), 102, 240);
-            Add_Error (Table.States (357));
+            Table.States (357).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (357), 115, 241);
             Add_Goto (Table.States (357), 322, 242);
             Table.States (357).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (272, 239, 3, True), (293, 239, 2, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (315, 239, 7, False)));
             Table.States (357).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 527)));
+            Table.States (358).Action_List.Set_Capacity (3);
             Add_Action (Table.States (358), (22, 24, 43), (295, 4), 2, 
select_alternative_4'Access, null);
             Table.States (358).Kernel := To_Vector ((0 => (295, 96, 0, 
False)));
             Table.States (358).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 295, 2)));
+            Table.States (359).Action_List.Set_Capacity (1);
             Add_Action (Table.States (359), 87, 528);
-            Add_Error (Table.States (359));
             Table.States (359).Kernel := To_Vector (((295, 192, 4, False), 
(295, 192, 3, False), (295, 192, 3,
             False)));
             Table.States (359).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 87, 528)));
+            Table.States (360).Action_List.Set_Capacity (7);
             Add_Action (Table.States (360), 76, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (360), 81, 529);
             Add_Action (Table.States (360), 82, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
@@ -4620,9 +4894,9 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (360), 96, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (360), 101, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (360), 102, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Error (Table.States (360));
             Table.States (360).Kernel := To_Vector (((131, 104, 1, False), 
(239, 104, 0, False)));
             Table.States (360).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 1)));
+            Table.States (361).Action_List.Set_Capacity (29);
             Add_Action (Table.States (361), 4, 1);
             Add_Action (Table.States (361), 5, 2);
             Add_Action (Table.States (361), 13, Reduce, (132, 1), 0, null, 
null);
@@ -4652,7 +4926,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (361), 104, 360);
             Add_Action (Table.States (361), 105, 33);
             Add_Action (Table.States (361), 106, 34);
-            Add_Error (Table.States (361));
+            Table.States (361).Goto_List.Set_Capacity (29);
             Add_Goto (Table.States (361), 113, 36);
             Add_Goto (Table.States (361), 123, 38);
             Add_Goto (Table.States (361), 126, 39);
@@ -4684,20 +4958,23 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (361), 323, 114);
             Table.States (361).Kernel := To_Vector (((299, 299, 2, True), 
(300, 299, 0, False)));
             Table.States (361).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 1)));
+            Table.States (362).Action_List.Set_Capacity (3);
             Add_Action (Table.States (362), (22, 24, 43), (295, 3), 2, null, 
null);
             Table.States (362).Kernel := To_Vector ((0 => (295, 300, 0, 
False)));
             Table.States (362).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 295, 2)));
+            Table.States (363).Action_List.Set_Capacity (29);
             Add_Action (Table.States (363), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
26, 27, 28, 31, 32, 37, 41, 43, 48, 52,
             57, 58, 61, 68, 72, 73, 93, 104, 105, 106), (299, 1), 1, null, 
null);
             Table.States (363).Kernel := To_Vector ((0 => (299, 306, 0, 
False)));
             Table.States (363).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 299, 1)));
+            Table.States (364).Action_List.Set_Capacity (4);
             Add_Action (Table.States (364), 22, Reduce, (160, 0), 2, null, 
null);
             Add_Action (Table.States (364), 24, Reduce, (160, 0), 2, null, 
null);
             Add_Action (Table.States (364), 43, Reduce, (160, 0), 2, null, 
null);
             Add_Action (Table.States (364), 68, Reduce, (324, 2), 2, null, 
null);
-            Add_Error (Table.States (364));
             Table.States (364).Kernel := To_Vector (((160, 300, 0, False), 
(324, 300, 0, False)));
             Table.States (364).Minimal_Complete_Actions := To_Vector 
(((Reduce, 160, 2), (Reduce, 324, 2)));
+            Table.States (365).Action_List.Set_Capacity (23);
             Add_Action (Table.States (365), 4, 1);
             Add_Action (Table.States (365), 5, 2);
             Add_Action (Table.States (365), 13, Reduce, (132, 1), 0, null, 
null);
@@ -4721,7 +4998,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (365), 104, 360);
             Add_Action (Table.States (365), 105, 33);
             Add_Action (Table.States (365), 106, 34);
-            Add_Error (Table.States (365));
+            Table.States (365).Goto_List.Set_Capacity (31);
             Add_Goto (Table.States (365), 113, 36);
             Add_Goto (Table.States (365), 123, 38);
             Add_Goto (Table.States (365), 126, 39);
@@ -4755,29 +5032,31 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (365), 323, 114);
             Table.States (365).Kernel := To_Vector ((0 => (152, 22, 3, 
False)));
             Table.States (365).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (366).Action_List.Set_Capacity (1);
             Add_Action (Table.States (366), 18, 4);
-            Add_Error (Table.States (366));
+            Table.States (366).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (366), 160, 532);
             Add_Goto (Table.States (366), 161, 533);
             Table.States (366).Kernel := To_Vector ((0 => (323, 43, 5, 
False)));
             Table.States (366).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 18, 4)));
+            Table.States (367).Action_List.Set_Capacity (3);
             Add_Action (Table.States (367), 22, Reduce, (178, 1), 2, null, 
null);
             Add_Action (Table.States (367), 43, Reduce, (178, 1), 2, null, 
null);
             Add_Action (Table.States (367), 68, Reduce, (324, 1), 2, null, 
null);
-            Add_Error (Table.States (367));
             Table.States (367).Kernel := To_Vector (((178, 300, 0, False), 
(324, 300, 0, False)));
             Table.States (367).Minimal_Complete_Actions := To_Vector 
(((Reduce, 178, 2), (Reduce, 324, 2)));
+            Table.States (368).Action_List.Set_Capacity (3);
             Add_Action (Table.States (368), 22, Reduce, (178, 0), 2, null, 
null);
             Add_Action (Table.States (368), 43, Reduce, (178, 0), 2, null, 
null);
             Add_Action (Table.States (368), 68, Reduce, (324, 0), 2, null, 
null);
-            Add_Error (Table.States (368));
             Table.States (368).Kernel := To_Vector (((178, 300, 0, False), 
(324, 300, 0, False)));
             Table.States (368).Minimal_Complete_Actions := To_Vector 
(((Reduce, 178, 2), (Reduce, 324, 2)));
+            Table.States (369).Action_List.Set_Capacity (4);
             Add_Action (Table.States (369), 4, 1);
             Add_Action (Table.States (369), 18, 4);
             Add_Action (Table.States (369), 67, 199);
             Add_Action (Table.States (369), 72, 200);
-            Add_Error (Table.States (369));
+            Table.States (369).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (369), 113, 201);
             Add_Goto (Table.States (369), 160, 202);
             Add_Goto (Table.States (369), 161, 533);
@@ -4785,6 +5064,7 @@ package body Ada_Process_LALR_Main is
             Table.States (369).Kernel := To_Vector ((0 => (296, 43, 2, True)));
             Table.States (369).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 67, 199)));
             Table.States (369).Minimal_Complete_Actions_Recursive := True;
+            Table.States (370).Action_List.Set_Capacity (23);
             Add_Action (Table.States (370), 4, 1);
             Add_Action (Table.States (370), 5, 2);
             Add_Action (Table.States (370), 13, Reduce, (132, 1), 0, null, 
null);
@@ -4808,7 +5088,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (370), 104, 360);
             Add_Action (Table.States (370), 105, 33);
             Add_Action (Table.States (370), 106, 34);
-            Add_Error (Table.States (370));
+            Table.States (370).Goto_List.Set_Capacity (31);
             Add_Goto (Table.States (370), 113, 36);
             Add_Goto (Table.States (370), 123, 38);
             Add_Goto (Table.States (370), 126, 39);
@@ -4842,19 +5122,20 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (370), 323, 114);
             Table.States (370).Kernel := To_Vector ((0 => (294, 22, 3, 
False)));
             Table.States (370).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (371).Action_List.Set_Capacity (1);
             Add_Action (Table.States (371), 61, 536);
-            Add_Error (Table.States (371));
             Table.States (371).Kernel := To_Vector ((0 => (294, 24, 2, 
False)));
             Table.States (371).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 61, 536)));
+            Table.States (372).Action_List.Set_Capacity (1);
             Add_Action (Table.States (372), 5, 537);
-            Add_Error (Table.States (372));
             Table.States (372).Kernel := To_Vector ((0 => (126, 68, 4, 
False)));
             Table.States (372).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 5, 537)));
+            Table.States (373).Action_List.Set_Capacity (4);
             Add_Action (Table.States (373), 40, 483);
             Add_Action (Table.States (373), 104, 119);
             Add_Action (Table.States (373), 105, 33);
             Add_Action (Table.States (373), 106, 34);
-            Add_Error (Table.States (373));
+            Table.States (373).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (373), 128, 41);
             Add_Goto (Table.States (373), 239, 484);
             Add_Goto (Table.States (373), 272, 92);
@@ -4862,48 +5143,52 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (373), 314, 538);
             Table.States (373).Kernel := To_Vector ((0 => (313, 35, 2, 
False)));
             Table.States (373).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (374).Action_List.Set_Capacity (2);
             Add_Action (Table.States (374), 35, 539);
             Add_Conflict (Table.States (374), 35, (122, 1), 0, null, null);
             Add_Action (Table.States (374), 74, 337);
-            Add_Error (Table.States (374));
+            Table.States (374).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (374), 122, 540);
             Table.States (374).Kernel := To_Vector (((316, 104, 4, False), 
(317, 104, 3, False)));
             Table.States (374).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 539)));
+            Table.States (375).Action_List.Set_Capacity (4);
             Add_Action (Table.States (375), 35, Reduce, (169, 2), 0, null, 
null);
             Add_Action (Table.States (375), 74, Reduce, (169, 2), 0, null, 
null);
             Add_Action (Table.States (375), 76, 377);
             Add_Action (Table.States (375), 96, Reduce, (169, 2), 0, null, 
null);
-            Add_Error (Table.States (375));
+            Table.States (375).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (375), 169, 541);
             Table.States (375).Kernel := To_Vector (((319, 104, 6, False), 
(319, 104, 3, False), (319, 104, 1,
             False)));
             Table.States (375).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 169, 0)));
+            Table.States (376).Action_List.Set_Capacity (2);
             Add_Action (Table.States (376), 35, 542);
             Add_Action (Table.States (376), 96, 543);
-            Add_Error (Table.States (376));
             Table.States (376).Kernel := To_Vector (((305, 122, 6, False), 
(305, 122, 3, False), (305, 122, 1,
             False)));
             Table.States (376).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 543)));
+            Table.States (377).Action_List.Set_Capacity (4);
             Add_Action (Table.States (377), 77, Reduce, (170, 4), 0, null, 
null);
             Add_Action (Table.States (377), 80, 544);
             Add_Action (Table.States (377), 96, Reduce, (170, 4), 0, null, 
null);
             Add_Action (Table.States (377), 104, 164);
-            Add_Error (Table.States (377));
+            Table.States (377).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (377), 170, 545);
             Add_Goto (Table.States (377), 171, 546);
             Add_Goto (Table.States (377), 219, 547);
             Table.States (377).Kernel := To_Vector (((169, 76, 2, False), 
(169, 76, 1, False)));
             Table.States (377).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 171, 0)));
+            Table.States (378).Action_List.Set_Capacity (2);
             Add_Action (Table.States (378), 35, 548);
             Add_Action (Table.States (378), 96, 549);
-            Add_Error (Table.States (378));
             Table.States (378).Kernel := To_Vector (((206, 169, 3, False), 
(223, 169, 3, False), (223, 169, 1, False),
             (259, 169, 6, False), (260, 169, 3, False)));
             Table.States (378).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 549)));
+            Table.States (379).Action_List.Set_Capacity (3);
             Add_Action (Table.States (379), 104, 119);
             Add_Action (Table.States (379), 105, 33);
             Add_Action (Table.States (379), 106, 34);
-            Add_Error (Table.States (379));
+            Table.States (379).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (379), 128, 41);
             Add_Goto (Table.States (379), 238, 550);
             Add_Goto (Table.States (379), 239, 219);
@@ -4911,15 +5196,16 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (379), 293, 97);
             Table.States (379).Kernel := To_Vector ((0 => (331, 69, 2, 
False)));
             Table.States (379).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (380).Action_List.Set_Capacity (2);
             Add_Action (Table.States (380), 83, 381);
             Add_Action (Table.States (380), 96, 551);
-            Add_Error (Table.States (380));
             Table.States (380).Kernel := To_Vector (((238, 238, 2, True), 
(331, 238, 1, False)));
             Table.States (380).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 551)));
+            Table.States (381).Action_List.Set_Capacity (3);
             Add_Action (Table.States (381), 104, 119);
             Add_Action (Table.States (381), 105, 33);
             Add_Action (Table.States (381), 106, 34);
-            Add_Error (Table.States (381));
+            Table.States (381).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (381), 128, 41);
             Add_Goto (Table.States (381), 239, 552);
             Add_Goto (Table.States (381), 272, 92);
@@ -4927,38 +5213,42 @@ package body Ada_Process_LALR_Main is
             Table.States (381).Kernel := To_Vector ((0 => (238, 83, 1, True)));
             Table.States (381).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
             Table.States (381).Minimal_Complete_Actions_Recursive := True;
+            Table.States (382).Action_List.Set_Capacity (40);
             Add_Action (Table.States (382), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (331, 2), 3,
             use_clause_2'Access, null);
             Table.States (382).Kernel := To_Vector ((0 => (331, 96, 0, 
False)));
             Table.States (382).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 331, 3)));
+            Table.States (383).Action_List.Set_Capacity (39);
             Add_Action (Table.States (383), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
             48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 93, 
104, 105, 106, 107), (332, 3), 3,
             with_clause_3'Access, null);
             Table.States (383).Kernel := To_Vector ((0 => (332, 96, 0, 
False)));
             Table.States (383).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 332, 3)));
+            Table.States (384).Action_List.Set_Capacity (46);
             Add_Action (Table.States (384), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (217, 0), 3, goto_label_0'Access, null);
             Table.States (384).Kernel := To_Vector ((0 => (217, 90, 0, 
False)));
             Table.States (384).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 217, 3)));
+            Table.States (385).Action_List.Set_Capacity (1);
             Add_Action (Table.States (385), 56, 553);
-            Add_Error (Table.States (385));
             Table.States (385).Kernel := To_Vector ((0 => (245, 26, 3, 
False)));
             Table.States (385).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 56, 553)));
+            Table.States (386).Action_List.Set_Capacity (1);
             Add_Action (Table.States (386), 41, 554);
-            Add_Error (Table.States (386));
             Table.States (386).Kernel := To_Vector ((0 => (241, 40, 1, 
False)));
             Table.States (386).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 554)));
+            Table.States (387).Action_List.Set_Capacity (1);
             Add_Action (Table.States (387), 56, 555);
-            Add_Error (Table.States (387));
             Table.States (387).Kernel := To_Vector ((0 => (245, 114, 3, 
False)));
             Table.States (387).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 56, 555)));
+            Table.States (388).Action_List.Set_Capacity (4);
             Add_Action (Table.States (388), 7, 556);
             Add_Action (Table.States (388), 104, 119);
             Add_Action (Table.States (388), 105, 33);
             Add_Action (Table.States (388), 106, 34);
-            Add_Error (Table.States (388));
+            Table.States (388).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (388), 128, 41);
             Add_Goto (Table.States (388), 239, 557);
             Add_Goto (Table.States (388), 272, 92);
@@ -4966,19 +5256,21 @@ package body Ada_Process_LALR_Main is
             Table.States (388).Kernel := To_Vector (((114, 241, 2, False), 
(114, 241, 3, True), (114, 241, 2, False),
             (245, 241, 4, False)));
             Table.States (388).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 7, 556)));
+            Table.States (389).Action_List.Set_Capacity (1);
             Add_Action (Table.States (389), 24, 558);
-            Add_Error (Table.States (389));
             Table.States (389).Kernel := To_Vector ((0 => (133, 218, 2, 
False)));
             Table.States (389).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 558)));
+            Table.States (390).Action_List.Set_Capacity (2);
             Add_Action (Table.States (390), 24, Reduce, (218, 1), 1, null, 
null);
             Add_Action (Table.States (390), 26, 559);
-            Add_Error (Table.States (390));
             Table.States (390).Kernel := To_Vector (((218, 300, 1, False), 
(218, 300, 0, False)));
             Table.States (390).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 218, 1)));
+            Table.States (391).Action_List.Set_Capacity (18);
             Add_Action (Table.States (391), (13, 24, 25, 28, 29, 30, 40, 46, 
47, 48, 49, 50, 51, 63, 66, 69, 71, 104),
             (158, 2), 1, null, null);
             Table.States (391).Kernel := To_Vector ((0 => (158, 157, 0, 
False)));
             Table.States (391).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (392).Action_List.Set_Capacity (18);
             Add_Action (Table.States (392), 13, Reduce, (159, 0), 1, null, 
null);
             Add_Action (Table.States (392), 24, Reduce, (159, 0), 1, null, 
null);
             Add_Action (Table.States (392), 25, Reduce, (246, 2), 0, null, 
null);
@@ -4997,7 +5289,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (392), 69, 27);
             Add_Action (Table.States (392), 71, 28);
             Add_Action (Table.States (392), 104, 185);
-            Add_Error (Table.States (392));
+            Table.States (392).Goto_List.Set_Capacity (51);
             Add_Goto (Table.States (392), 112, 35);
             Add_Goto (Table.States (392), 121, 37);
             Add_Goto (Table.States (392), 127, 40);
@@ -5054,25 +5346,27 @@ package body Ada_Process_LALR_Main is
          end Subr_7;
          procedure Subr_8
          is begin
+            Table.States (393).Action_List.Set_Capacity (1);
             Add_Action (Table.States (393), 13, 562);
-            Add_Error (Table.States (393));
             Table.States (393).Kernel := To_Vector ((0 => (133, 159, 3, 
False)));
             Table.States (393).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 562)));
+            Table.States (394).Action_List.Set_Capacity (18);
             Add_Action (Table.States (394), (13, 24, 25, 28, 29, 30, 40, 46, 
47, 48, 49, 50, 51, 63, 66, 69, 71, 104),
             (158, 3), 1, null, null);
             Table.States (394).Kernel := To_Vector ((0 => (158, 257, 0, 
False)));
             Table.States (394).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (395).Action_List.Set_Capacity (3);
             Add_Action (Table.States (395), 33, 311);
             Add_Action (Table.States (395), 42, 312);
             Add_Action (Table.States (395), 81, 313);
-            Add_Error (Table.States (395));
             Table.States (395).Kernel := To_Vector (((230, 104, 5, False), 
(230, 104, 4, False), (230, 104, 3, False),
             (230, 104, 3, False), (230, 104, 2, False), (230, 104, 2, False)));
             Table.States (395).Minimal_Complete_Actions := To_Vector (((Shift, 
42, 312), (Shift, 33, 311)));
+            Table.States (396).Action_List.Set_Capacity (1);
             Add_Action (Table.States (396), 24, 563);
-            Add_Error (Table.States (396));
             Table.States (396).Kernel := To_Vector ((0 => (232, 300, 3, 
False)));
             Table.States (396).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 563)));
+            Table.States (397).Action_List.Set_Capacity (23);
             Add_Action (Table.States (397), 4, 1);
             Add_Action (Table.States (397), 5, 2);
             Add_Action (Table.States (397), 13, Reduce, (132, 1), 0, null, 
null);
@@ -5096,7 +5390,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (397), 104, 360);
             Add_Action (Table.States (397), 105, 33);
             Add_Action (Table.States (397), 106, 34);
-            Add_Error (Table.States (397));
+            Table.States (397).Goto_List.Set_Capacity (31);
             Add_Goto (Table.States (397), 113, 36);
             Add_Goto (Table.States (397), 123, 38);
             Add_Goto (Table.States (397), 126, 39);
@@ -5130,13 +5424,14 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (397), 323, 114);
             Table.States (397).Kernel := To_Vector ((0 => (232, 37, 3, 
False)));
             Table.States (397).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (398).Action_List.Set_Capacity (6);
             Add_Action (Table.States (398), 35, Reduce, (122, 1), 0, null, 
null);
             Add_Action (Table.States (398), 74, 337);
             Add_Action (Table.States (398), 76, 235);
             Add_Action (Table.States (398), 84, 237);
             Add_Action (Table.States (398), 101, 239);
             Add_Action (Table.States (398), 102, 240);
-            Add_Error (Table.States (398));
+            Table.States (398).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (398), 115, 241);
             Add_Goto (Table.States (398), 122, 338);
             Add_Goto (Table.States (398), 322, 242);
@@ -5144,27 +5439,30 @@ package body Ada_Process_LALR_Main is
             (251, 239, 3, False), (251, 239, 2, False), (272, 239, 3, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (398).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (399).Action_List.Set_Capacity (40);
             Add_Action (Table.States (399), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (214, 0), 3,
             generic_package_declaration_0'Access, null);
             Table.States (399).Kernel := To_Vector ((0 => (214, 96, 0, 
False)));
             Table.States (399).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 214, 3)));
+            Table.States (400).Action_List.Set_Capacity (1);
             Add_Action (Table.States (400), 96, 565);
-            Add_Error (Table.States (400));
             Table.States (400).Kernel := To_Vector ((0 => (216, 122, 1, 
False)));
             Table.States (400).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 565)));
+            Table.States (401).Action_List.Set_Capacity (14);
             Add_Action (Table.States (401), (7, 11, 16, 21, 33, 40, 45, 74, 
77, 82, 96, 104, 105, 106), (118, 0), 1,
             null, null);
             Table.States (401).Kernel := To_Vector ((0 => (118, 8, 0, False)));
             Table.States (401).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 118, 1)));
+            Table.States (402).Action_List.Set_Capacity (1);
             Add_Action (Table.States (402), 82, 566);
-            Add_Error (Table.States (402));
             Table.States (402).Kernel := To_Vector ((0 => (157, 16, 2, 
False)));
             Table.States (402).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 82, 566)));
+            Table.States (403).Action_List.Set_Capacity (1);
             Add_Action (Table.States (403), 96, 567);
-            Add_Error (Table.States (403));
             Table.States (403).Kernel := To_Vector ((0 => (186, 26, 1, 
False)));
             Table.States (403).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 567)));
+            Table.States (404).Action_List.Set_Capacity (10);
             Add_Action (Table.States (404), 7, Reduce, (154, 1), 0, null, 
null);
             Add_Action (Table.States (404), 11, Reduce, (154, 1), 0, null, 
null);
             Add_Action (Table.States (404), 16, 568);
@@ -5175,50 +5473,52 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (404), 104, Reduce, (154, 1), 0, null, 
null);
             Add_Action (Table.States (404), 105, Reduce, (154, 1), 0, null, 
null);
             Add_Action (Table.States (404), 106, Reduce, (154, 1), 0, null, 
null);
-            Add_Error (Table.States (404));
+            Table.States (404).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (404), 154, 569);
             Table.States (404).Kernel := To_Vector (((244, 118, 3, False), 
(244, 118, 4, False), (244, 118, 10, False),
             (244, 118, 2, False), (244, 118, 3, False), (244, 118, 9, False)));
             Table.States (404).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 154, 0)));
+            Table.States (405).Action_List.Set_Capacity (2);
             Add_Action (Table.States (405), (81, 83), (219, 0), 3, 
identifier_list_0'Access, null);
             Table.States (405).Kernel := To_Vector ((0 => (219, 104, 0, 
True)));
             Table.States (405).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 219, 3)));
             Table.States (405).Minimal_Complete_Actions_Recursive := True;
+            Table.States (406).Action_List.Set_Capacity (2);
             Add_Action (Table.States (406), 77, 570);
             Add_Action (Table.States (406), 83, 443);
-            Add_Error (Table.States (406));
             Table.States (406).Kernel := To_Vector (((115, 125, 1, False), 
(125, 125, 1, True)));
             Table.States (406).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 570)));
+            Table.States (407).Action_List.Set_Capacity (1);
             Add_Action (Table.States (407), 77, 571);
-            Add_Error (Table.States (407));
             Table.States (407).Kernel := To_Vector ((0 => (115, 153, 1, 
False)));
             Table.States (407).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 571)));
+            Table.States (408).Action_List.Set_Capacity (6);
             Add_Action (Table.States (408), 35, Reduce, (124, 4), 1, 
association_opt_4'Access, null);
             Add_Action (Table.States (408), 77, Reduce, (124, 4), 1, 
association_opt_4'Access, null);
             Add_Action (Table.States (408), 79, Reduce, (165, 0), 1, null, 
null);
             Add_Action (Table.States (408), 83, Reduce, (124, 4), 1, 
association_opt_4'Access, null);
             Add_Action (Table.States (408), 87, Reduce, (165, 0), 1, null, 
null);
             Add_Action (Table.States (408), 96, Reduce, (124, 4), 1, 
association_opt_4'Access, null);
-            Add_Error (Table.States (408));
             Table.States (408).Kernel := To_Vector (((124, 191, 0, False), 
(165, 191, 0, False)));
             Table.States (408).Minimal_Complete_Actions := To_Vector 
(((Reduce, 124, 1), (Reduce, 165, 1)));
+            Table.States (409).Action_List.Set_Capacity (4);
             Add_Action (Table.States (409), 77, Reduce, (278, 1), 1, null, 
null);
             Add_Action (Table.States (409), 79, Reduce, (165, 2), 1, null, 
null);
             Add_Action (Table.States (409), 83, Reduce, (278, 1), 1, null, 
null);
             Add_Action (Table.States (409), 87, Reduce, (165, 2), 1, null, 
null);
-            Add_Error (Table.States (409));
             Table.States (409).Kernel := To_Vector (((165, 277, 0, False), 
(278, 277, 0, False)));
             Table.States (409).Minimal_Complete_Actions := To_Vector 
(((Reduce, 165, 1), (Reduce, 278, 1)));
+            Table.States (410).Action_List.Set_Capacity (2);
             Add_Action (Table.States (410), 77, 572);
             Add_Action (Table.States (410), 83, 573);
-            Add_Error (Table.States (410));
             Table.States (410).Kernel := To_Vector (((239, 278, 1, True), 
(278, 278, 4, True)));
             Table.States (410).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 572)));
             Table.States (410).Minimal_Complete_Actions_Recursive := True;
+            Table.States (411).Action_List.Set_Capacity (1);
             Add_Action (Table.States (411), 96, 574);
-            Add_Error (Table.States (411));
             Table.States (411).Kernel := To_Vector ((0 => (123, 192, 1, 
False)));
             Table.States (411).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 574)));
+            Table.States (412).Action_List.Set_Capacity (63);
             Add_Action (Table.States (412), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (293, 3), 3,
@@ -5226,6 +5526,7 @@ package body Ada_Process_LALR_Main is
             Table.States (412).Kernel := To_Vector ((0 => (293, 9, 0, True)));
             Table.States (412).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 293, 3)));
             Table.States (412).Minimal_Complete_Actions_Recursive := True;
+            Table.States (413).Action_List.Set_Capacity (63);
             Add_Action (Table.States (413), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (293, 0), 3,
@@ -5233,6 +5534,7 @@ package body Ada_Process_LALR_Main is
             Table.States (413).Kernel := To_Vector ((0 => (293, 104, 0, 
True)));
             Table.States (413).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 293, 3)));
             Table.States (413).Minimal_Complete_Actions_Recursive := True;
+            Table.States (414).Action_List.Set_Capacity (63);
             Add_Action (Table.States (414), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (293, 2), 3,
@@ -5240,6 +5542,7 @@ package body Ada_Process_LALR_Main is
             Table.States (414).Kernel := To_Vector ((0 => (293, 105, 0, 
True)));
             Table.States (414).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 293, 3)));
             Table.States (414).Minimal_Complete_Actions_Recursive := True;
+            Table.States (415).Action_List.Set_Capacity (63);
             Add_Action (Table.States (415), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (293, 1), 3,
@@ -5247,129 +5550,129 @@ package body Ada_Process_LALR_Main is
             Table.States (415).Kernel := To_Vector ((0 => (293, 106, 0, 
True)));
             Table.States (415).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 293, 3)));
             Table.States (415).Minimal_Complete_Actions_Recursive := True;
+            Table.States (416).Action_List.Set_Capacity (63);
             Add_Action (Table.States (416), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
-            88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (129, 1), 1, null, null);
+            88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (129, 2), 1, null, null);
             Table.States (416).Kernel := To_Vector ((0 => (129, 7, 0, False)));
             Table.States (416).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 129, 1)));
+            Table.States (417).Action_List.Set_Capacity (63);
             Add_Action (Table.States (417), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
-            88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (129, 2), 1, null, null);
+            88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (129, 3), 1, null, null);
             Table.States (417).Kernel := To_Vector ((0 => (129, 19, 0, 
False)));
             Table.States (417).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 129, 1)));
+            Table.States (418).Action_List.Set_Capacity (63);
             Add_Action (Table.States (418), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
-            88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (129, 3), 1, null, null);
+            88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (129, 4), 1, null, null);
             Table.States (418).Kernel := To_Vector ((0 => (129, 20, 0, 
False)));
             Table.States (418).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 129, 1)));
+            Table.States (419).Action_List.Set_Capacity (63);
             Add_Action (Table.States (419), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
-            88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (129, 4), 1, null, null);
+            88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (129, 5), 1, null, null);
             Table.States (419).Kernel := To_Vector ((0 => (129, 38, 0, 
False)));
             Table.States (419).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 129, 1)));
-            Add_Action (Table.States (420), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
+            Table.States (420).Action_List.Set_Capacity (63);
+            Add_Action (Table.States (420), 4, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 5, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 10, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 13, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 15, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 17, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 18, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 20, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 21, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 22, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 23, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 27, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 28, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 31, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 32, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 33, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 35, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 37, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 38, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 40, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 41, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 42, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 43, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 48, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 52, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 53, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 55, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 56, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 57, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 58, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 61, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 68, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 71, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 73, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 74, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 75, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 76, 575);
+            Add_Conflict (Table.States (420), 76, (129, 1), 1, null, null);
+            Add_Action (Table.States (420), 77, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 78, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 79, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 82, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 83, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 84, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 85, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 86, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 87, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 88, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 89, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 91, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 92, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 93, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 94, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 95, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 96, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 97, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 98, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 99, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 100, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 101, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 102, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 104, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 105, Reduce, (129, 1), 1, null, 
null);
+            Add_Action (Table.States (420), 106, Reduce, (129, 1), 1, null, 
null);
+            Table.States (420).Kernel := To_Vector (((129, 104, 3, False), 
(129, 104, 0, False)));
+            Table.States (420).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 129, 1)));
+            Table.States (421).Action_List.Set_Capacity (63);
+            Add_Action (Table.States (421), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (272, 0), 3,
             qualified_expression_0'Access, null);
-            Table.States (420).Kernel := To_Vector ((0 => (272, 117, 0, 
True)));
-            Table.States (420).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 272, 3)));
-            Table.States (420).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (421), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
+            Table.States (421).Kernel := To_Vector ((0 => (272, 117, 0, 
True)));
+            Table.States (421).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 272, 3)));
+            Table.States (421).Minimal_Complete_Actions_Recursive := True;
+            Table.States (422).Action_List.Set_Capacity (63);
+            Add_Action (Table.States (422), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (128, 0), 3, null, null);
-            Table.States (421).Kernel := To_Vector ((0 => (128, 129, 0, 
True)));
-            Table.States (421).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 128, 3)));
-            Table.States (421).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (422), 4, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 5, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 10, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 13, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 15, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 17, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 18, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 20, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 21, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 22, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 23, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 27, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 28, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 31, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 32, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 33, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 35, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 37, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 38, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 40, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 41, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 42, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 43, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 48, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 52, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 53, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 55, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 56, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 57, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 58, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 61, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 68, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 71, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 73, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 74, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 75, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 76, 235);
-            Add_Conflict (Table.States (422), 76, (129, 0), 1, null, null);
-            Add_Action (Table.States (422), 77, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 78, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 79, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 82, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 83, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 84, 237);
-            Add_Conflict (Table.States (422), 84, (129, 0), 1, null, null);
-            Add_Action (Table.States (422), 85, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 86, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 87, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 88, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 89, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 91, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 92, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 93, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 94, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 95, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 96, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 97, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 98, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 99, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 100, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 101, 239);
-            Add_Conflict (Table.States (422), 101, (129, 0), 1, null, null);
-            Add_Action (Table.States (422), 102, 240);
-            Add_Conflict (Table.States (422), 102, (129, 0), 1, null, null);
-            Add_Action (Table.States (422), 104, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 105, Reduce, (129, 0), 1, null, 
null);
-            Add_Action (Table.States (422), 106, Reduce, (129, 0), 1, null, 
null);
-            Add_Error (Table.States (422));
-            Add_Goto (Table.States (422), 115, 241);
-            Add_Goto (Table.States (422), 322, 242);
-            Table.States (422).Kernel := To_Vector (((128, 239, 2, True), 
(129, 239, 0, True), (239, 239, 5, True),
-            (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
-            (293, 239, 2, True)));
-            Table.States (422).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 129, 1)));
+            Table.States (422).Kernel := To_Vector ((0 => (128, 129, 0, 
True)));
+            Table.States (422).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 128, 3)));
             Table.States (422).Minimal_Complete_Actions_Recursive := True;
+            Table.States (423).Action_List.Set_Capacity (3);
             Add_Action (Table.States (423), 74, Reduce, (253, 1), 0, null, 
null);
-            Add_Action (Table.States (423), 76, 575);
+            Add_Action (Table.States (423), 76, 576);
             Add_Action (Table.States (423), 96, Reduce, (253, 1), 0, null, 
null);
-            Add_Error (Table.States (423));
+            Table.States (423).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (423), 199, 344);
-            Add_Goto (Table.States (423), 253, 576);
+            Add_Goto (Table.States (423), 253, 577);
             Table.States (423).Kernel := To_Vector (((179, 104, 4, False), 
(179, 104, 1, False)));
             Table.States (423).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 253, 0)));
-            Add_Action (Table.States (424), 35, 577);
+            Table.States (424).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (424), 35, 578);
             Add_Action (Table.States (424), 58, 317);
             Add_Action (Table.States (424), 76, 318);
             Add_Action (Table.States (424), 84, 237);
             Add_Action (Table.States (424), 101, 239);
             Add_Action (Table.States (424), 102, 240);
-            Add_Error (Table.States (424));
+            Table.States (424).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (424), 115, 241);
             Add_Goto (Table.States (424), 199, 319);
             Add_Goto (Table.States (424), 252, 320);
@@ -5379,7 +5682,8 @@ package body Ada_Process_LALR_Main is
             (239, 239, 5, True), (239, 239, 2, True), (272, 239, 3, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (424).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 58, 317)));
-            Add_Action (Table.States (425), 35, 578);
+            Table.States (425).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (425), 35, 579);
             Add_Conflict (Table.States (425), 35, (253, 1), 0, null, null);
             Add_Action (Table.States (425), 56, Reduce, (253, 1), 0, null, 
null);
             Add_Action (Table.States (425), 74, Reduce, (253, 1), 0, null, 
null);
@@ -5388,7 +5692,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (425), 96, Reduce, (253, 1), 0, null, 
null);
             Add_Action (Table.States (425), 101, 239);
             Add_Action (Table.States (425), 102, 240);
-            Add_Error (Table.States (425));
+            Table.States (425).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (425), 115, 241);
             Add_Goto (Table.States (425), 199, 344);
             Add_Goto (Table.States (425), 253, 345);
@@ -5397,49 +5701,54 @@ package body Ada_Process_LALR_Main is
             (239, 239, 2, True), (262, 239, 0, False), (272, 239, 3, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (425).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 253, 0)));
-            Add_Action (Table.States (426), 76, 579);
-            Add_Error (Table.States (426));
-            Add_Goto (Table.States (426), 256, 580);
+            Table.States (426).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (426), 76, 580);
+            Table.States (426).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (426), 117, 581);
+            Add_Goto (Table.States (426), 256, 582);
             Table.States (426).Kernel := To_Vector ((0 => (193, 35, 3, 
False)));
-            Table.States (426).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 76, 579)));
-            Add_Action (Table.States (427), 41, 581);
-            Add_Error (Table.States (427));
+            Table.States (426).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 76, 580)));
+            Table.States (427).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (427), 41, 583);
             Table.States (427).Kernel := To_Vector ((0 => (243, 35, 2, 
False)));
-            Table.States (427).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 581)));
-            Add_Action (Table.States (428), 6, 582);
-            Add_Action (Table.States (428), 60, 583);
-            Add_Error (Table.States (428));
+            Table.States (427).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 583)));
+            Table.States (428).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (428), 6, 584);
+            Add_Action (Table.States (428), 60, 585);
             Table.States (428).Kernel := To_Vector (((112, 35, 2, False), 
(308, 35, 2, False)));
-            Table.States (428).Minimal_Complete_Actions := To_Vector (((Shift, 
6, 582), (Shift, 60, 583)));
+            Table.States (428).Minimal_Complete_Actions := To_Vector (((Shift, 
6, 584), (Shift, 60, 585)));
+            Table.States (429).Action_List.Set_Capacity (3);
             Add_Action (Table.States (429), 104, 119);
             Add_Action (Table.States (429), 105, 33);
             Add_Action (Table.States (429), 106, 34);
-            Add_Error (Table.States (429));
+            Table.States (429).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (429), 128, 41);
-            Add_Goto (Table.States (429), 239, 584);
+            Add_Goto (Table.States (429), 239, 586);
             Add_Goto (Table.States (429), 272, 92);
             Add_Goto (Table.States (429), 293, 97);
             Table.States (429).Kernel := To_Vector ((0 => (311, 56, 2, 
False)));
             Table.States (429).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (430), 35, 585);
-            Add_Action (Table.States (430), 96, 586);
-            Add_Error (Table.States (430));
+            Table.States (430).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (430), 35, 587);
+            Add_Action (Table.States (430), 96, 588);
             Table.States (430).Kernel := To_Vector (((307, 122, 4, False), 
(309, 122, 1, False)));
-            Table.States (430).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 586)));
+            Table.States (430).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 588)));
+            Table.States (431).Action_List.Set_Capacity (3);
             Add_Action (Table.States (431), 77, Reduce, (254, 4), 0, null, 
null);
             Add_Action (Table.States (431), 96, Reduce, (254, 4), 0, null, 
null);
             Add_Action (Table.States (431), 104, 164);
-            Add_Error (Table.States (431));
+            Table.States (431).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (431), 219, 493);
             Add_Goto (Table.States (431), 254, 494);
             Add_Goto (Table.States (431), 255, 495);
             Table.States (431).Kernel := To_Vector ((0 => (199, 76, 1, 
False)));
             Table.States (431).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 255, 0)));
-            Add_Action (Table.States (432), 21, 587);
-            Add_Action (Table.States (432), 96, 588);
-            Add_Error (Table.States (432));
+            Table.States (432).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (432), 21, 589);
+            Add_Action (Table.States (432), 96, 590);
             Table.States (432).Kernel := To_Vector (((113, 253, 3, False), 
(113, 253, 1, False)));
-            Table.States (432).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 588)));
+            Table.States (432).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 590)));
+            Table.States (433).Action_List.Set_Capacity (29);
             Add_Action (Table.States (433), 3, 121);
             Add_Action (Table.States (433), 10, Reduce, (192, 1), 0, null, 
null);
             Add_Action (Table.States (433), 20, Reduce, (192, 1), 0, null, 
null);
@@ -5469,11 +5778,11 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (433), 104, 119);
             Add_Action (Table.States (433), 105, 33);
             Add_Action (Table.States (433), 106, 34);
-            Add_Error (Table.States (433));
+            Table.States (433).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (433), 117, 130);
             Add_Goto (Table.States (433), 128, 41);
             Add_Goto (Table.States (433), 191, 131);
-            Add_Goto (Table.States (433), 192, 589);
+            Add_Goto (Table.States (433), 192, 591);
             Add_Goto (Table.States (433), 197, 133);
             Add_Goto (Table.States (433), 239, 134);
             Add_Goto (Table.States (433), 258, 135);
@@ -5493,26 +5802,30 @@ package body Ada_Process_LALR_Main is
             Table.States (433).Kernel := To_Vector ((0 => (275, 74, 0, True)));
             Table.States (433).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
             Table.States (433).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (434), 35, 590);
-            Add_Error (Table.States (434));
+            Table.States (434).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (434), 35, 592);
             Table.States (434).Kernel := To_Vector ((0 => (136, 192, 3, 
False)));
-            Table.States (434).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 590)));
+            Table.States (434).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 592)));
+            Table.States (435).Action_List.Set_Capacity (1);
             Add_Action (Table.States (435), (1 =>  104), (274, 0), 1, null, 
null);
             Table.States (435).Kernel := To_Vector ((0 => (274, 9, 0, False)));
             Table.States (435).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 274, 1)));
+            Table.States (436).Action_List.Set_Capacity (1);
             Add_Action (Table.States (436), (1 =>  104), (274, 1), 1, null, 
null);
             Table.States (436).Kernel := To_Vector ((0 => (274, 62, 0, 
False)));
             Table.States (436).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 274, 1)));
+            Table.States (437).Action_List.Set_Capacity (1);
             Add_Action (Table.States (437), 104, 395);
-            Add_Error (Table.States (437));
-            Add_Goto (Table.States (437), 230, 591);
+            Table.States (437).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (437), 230, 593);
             Table.States (437).Kernel := To_Vector ((0 => (273, 274, 4, 
False)));
             Table.States (437).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 395)));
-            Add_Action (Table.States (438), 68, 592);
-            Add_Error (Table.States (438));
+            Table.States (438).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (438), 68, 594);
             Table.States (438).Kernel := To_Vector (((221, 192, 4, False), 
(221, 192, 2, False), (221, 192, 3, False),
             (221, 192, 1, False)));
-            Table.States (438).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 592)));
+            Table.States (438).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 594)));
+            Table.States (439).Action_List.Set_Capacity (29);
             Add_Action (Table.States (439), 10, Reduce, (258, 1), 1, null, 
null);
             Add_Action (Table.States (439), 33, Reduce, (258, 1), 1, null, 
null);
             Add_Action (Table.States (439), 35, Reduce, (258, 1), 1, null, 
null);
@@ -5542,17 +5855,18 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (439), 104, 119);
             Add_Action (Table.States (439), 105, 33);
             Add_Action (Table.States (439), 106, 34);
-            Add_Error (Table.States (439));
+            Table.States (439).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (439), 128, 41);
-            Add_Goto (Table.States (439), 239, 593);
+            Add_Goto (Table.States (439), 239, 595);
             Add_Goto (Table.States (439), 272, 92);
             Add_Goto (Table.States (439), 293, 97);
             Table.States (439).Kernel := To_Vector (((165, 41, 1, False), 
(258, 41, 0, False)));
             Table.States (439).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 1)));
-            Add_Action (Table.States (440), 77, 594);
-            Add_Error (Table.States (440));
+            Table.States (440).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (440), 77, 596);
             Table.States (440).Kernel := To_Vector ((0 => (117, 54, 1, 
False)));
-            Table.States (440).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 594)));
+            Table.States (440).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 596)));
+            Table.States (441).Action_List.Set_Capacity (17);
             Add_Action (Table.States (441), 3, 121);
             Add_Action (Table.States (441), 35, Reduce, (192, 1), 0, null, 
null);
             Add_Action (Table.States (441), 39, 122);
@@ -5561,7 +5875,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (441), 52, 125);
             Add_Action (Table.States (441), 76, 126);
             Add_Action (Table.States (441), 77, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (441), 80, 595);
+            Add_Action (Table.States (441), 80, 597);
             Add_Action (Table.States (441), 83, Reduce, (192, 1), 0, null, 
null);
             Add_Action (Table.States (441), 94, 127);
             Add_Action (Table.States (441), 95, 128);
@@ -5570,11 +5884,11 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (441), 104, 119);
             Add_Action (Table.States (441), 105, 33);
             Add_Action (Table.States (441), 106, 34);
-            Add_Error (Table.States (441));
+            Table.States (441).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (441), 117, 130);
             Add_Goto (Table.States (441), 128, 41);
             Add_Goto (Table.States (441), 191, 131);
-            Add_Goto (Table.States (441), 192, 596);
+            Add_Goto (Table.States (441), 192, 598);
             Add_Goto (Table.States (441), 197, 133);
             Add_Goto (Table.States (441), 239, 134);
             Add_Goto (Table.States (441), 258, 135);
@@ -5593,12 +5907,14 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (441), 330, 146);
             Table.States (441).Kernel := To_Vector (((124, 87, 0, False), 
(124, 87, 1, False)));
             Table.States (441).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (442).Action_List.Set_Capacity (63);
             Add_Action (Table.States (442), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (117, 4), 3, aggregate_4'Access,
             null);
             Table.States (442).Kernel := To_Vector ((0 => (117, 77, 0, 
False)));
             Table.States (442).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 117, 3)));
+            Table.States (443).Action_List.Set_Capacity (19);
             Add_Action (Table.States (443), 3, 121);
             Add_Action (Table.States (443), 35, Reduce, (124, 5), 0, null, 
null);
             Add_Action (Table.States (443), 39, 122);
@@ -5618,9 +5934,9 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (443), 104, 119);
             Add_Action (Table.States (443), 105, 33);
             Add_Action (Table.States (443), 106, 264);
-            Add_Error (Table.States (443));
+            Table.States (443).Goto_List.Set_Capacity (23);
             Add_Goto (Table.States (443), 117, 130);
-            Add_Goto (Table.States (443), 124, 597);
+            Add_Goto (Table.States (443), 124, 599);
             Add_Goto (Table.States (443), 128, 41);
             Add_Goto (Table.States (443), 165, 269);
             Add_Goto (Table.States (443), 166, 270);
@@ -5645,12 +5961,14 @@ package body Ada_Process_LALR_Main is
             Table.States (443).Kernel := To_Vector ((0 => (125, 83, 0, True)));
             Table.States (443).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 124, 0)));
             Table.States (443).Minimal_Complete_Actions_Recursive := True;
+            Table.States (444).Action_List.Set_Capacity (63);
             Add_Action (Table.States (444), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (117, 3), 3, aggregate_3'Access,
             null);
             Table.States (444).Kernel := To_Vector ((0 => (117, 77, 0, 
False)));
             Table.States (444).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 117, 3)));
+            Table.States (445).Action_List.Set_Capacity (13);
             Add_Action (Table.States (445), 3, 121);
             Add_Action (Table.States (445), 39, 122);
             Add_Action (Table.States (445), 40, 261);
@@ -5664,11 +5982,11 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (445), 104, 119);
             Add_Action (Table.States (445), 105, 33);
             Add_Action (Table.States (445), 106, 34);
-            Add_Error (Table.States (445));
+            Table.States (445).Goto_List.Set_Capacity (21);
             Add_Goto (Table.States (445), 117, 130);
             Add_Goto (Table.States (445), 128, 41);
-            Add_Goto (Table.States (445), 165, 598);
-            Add_Goto (Table.States (445), 191, 599);
+            Add_Goto (Table.States (445), 165, 600);
+            Add_Goto (Table.States (445), 191, 601);
             Add_Goto (Table.States (445), 197, 133);
             Add_Goto (Table.States (445), 239, 274);
             Add_Goto (Table.States (445), 258, 135);
@@ -5689,6 +6007,7 @@ package body Ada_Process_LALR_Main is
             Table.States (445).Kernel := To_Vector ((0 => (166, 79, 1, True)));
             Table.States (445).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
             Table.States (445).Minimal_Complete_Actions_Recursive := True;
+            Table.States (446).Action_List.Set_Capacity (17);
             Add_Action (Table.States (446), 3, 121);
             Add_Action (Table.States (446), 35, Reduce, (192, 1), 0, null, 
null);
             Add_Action (Table.States (446), 39, 122);
@@ -5697,7 +6016,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (446), 52, 125);
             Add_Action (Table.States (446), 76, 126);
             Add_Action (Table.States (446), 77, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (446), 80, 600);
+            Add_Action (Table.States (446), 80, 602);
             Add_Action (Table.States (446), 83, Reduce, (192, 1), 0, null, 
null);
             Add_Action (Table.States (446), 94, 127);
             Add_Action (Table.States (446), 95, 128);
@@ -5706,11 +6025,11 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (446), 104, 119);
             Add_Action (Table.States (446), 105, 33);
             Add_Action (Table.States (446), 106, 34);
-            Add_Error (Table.States (446));
+            Table.States (446).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (446), 117, 130);
             Add_Goto (Table.States (446), 128, 41);
             Add_Goto (Table.States (446), 191, 131);
-            Add_Goto (Table.States (446), 192, 601);
+            Add_Goto (Table.States (446), 192, 603);
             Add_Goto (Table.States (446), 197, 133);
             Add_Goto (Table.States (446), 239, 134);
             Add_Goto (Table.States (446), 258, 135);
@@ -5732,10 +6051,11 @@ package body Ada_Process_LALR_Main is
          end Subr_8;
          procedure Subr_9
          is begin
+            Table.States (447).Action_List.Set_Capacity (17);
             Add_Action (Table.States (447), 3, 121);
             Add_Action (Table.States (447), 39, 122);
             Add_Action (Table.States (447), 40, 261);
-            Add_Action (Table.States (447), 41, 602);
+            Add_Action (Table.States (447), 41, 604);
             Add_Action (Table.States (447), 44, 263);
             Add_Action (Table.States (447), 52, 125);
             Add_Action (Table.States (447), 76, 126);
@@ -5749,10 +6069,10 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (447), 104, 119);
             Add_Action (Table.States (447), 105, 33);
             Add_Action (Table.States (447), 106, 264);
-            Add_Error (Table.States (447));
+            Table.States (447).Goto_List.Set_Capacity (24);
             Add_Goto (Table.States (447), 117, 130);
             Add_Goto (Table.States (447), 124, 265);
-            Add_Goto (Table.States (447), 125, 603);
+            Add_Goto (Table.States (447), 125, 605);
             Add_Goto (Table.States (447), 128, 41);
             Add_Goto (Table.States (447), 165, 269);
             Add_Goto (Table.States (447), 166, 270);
@@ -5776,26 +6096,22 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (447), 330, 146);
             Table.States (447).Kernel := To_Vector (((117, 74, 3, False), 
(117, 74, 1, False)));
             Table.States (447).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 0)));
+            Table.States (448).Action_List.Set_Capacity (7);
             Add_Action (Table.States (448), 7, 416);
             Add_Action (Table.States (448), 19, 417);
             Add_Action (Table.States (448), 20, 418);
             Add_Action (Table.States (448), 38, 419);
-            Add_Action (Table.States (448), 53, 604);
+            Add_Action (Table.States (448), 53, 606);
             Add_Action (Table.States (448), 76, 126);
-            Add_Action (Table.States (448), 104, 119);
-            Add_Action (Table.States (448), 105, 33);
-            Add_Action (Table.States (448), 106, 34);
-            Add_Error (Table.States (448));
-            Add_Goto (Table.States (448), 117, 420);
-            Add_Goto (Table.States (448), 128, 41);
-            Add_Goto (Table.States (448), 129, 421);
-            Add_Goto (Table.States (448), 239, 422);
-            Add_Goto (Table.States (448), 272, 92);
-            Add_Goto (Table.States (448), 293, 97);
+            Add_Action (Table.States (448), 104, 420);
+            Table.States (448).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (448), 117, 421);
+            Add_Goto (Table.States (448), 129, 422);
             Table.States (448).Kernel := To_Vector (((128, 322, 1, True), 
(272, 322, 2, True), (277, 322, 3, False),
             (277, 322, 1, False)));
-            Table.States (448).Minimal_Complete_Actions := To_Vector (((Shift, 
104, 119), (Shift, 53, 604)));
+            Table.States (448).Minimal_Complete_Actions := To_Vector (((Shift, 
104, 420), (Shift, 53, 606)));
             Table.States (448).Minimal_Complete_Actions_Recursive := True;
+            Table.States (449).Action_List.Set_Capacity (11);
             Add_Action (Table.States (449), 3, 121);
             Add_Action (Table.States (449), 39, 122);
             Add_Action (Table.States (449), 40, 123);
@@ -5807,7 +6123,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (449), 104, 119);
             Add_Action (Table.States (449), 105, 33);
             Add_Action (Table.States (449), 106, 34);
-            Add_Error (Table.States (449));
+            Table.States (449).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (449), 117, 130);
             Add_Goto (Table.States (449), 128, 41);
             Add_Goto (Table.States (449), 197, 133);
@@ -5815,12 +6131,13 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (449), 258, 135);
             Add_Goto (Table.States (449), 272, 92);
             Add_Goto (Table.States (449), 293, 97);
-            Add_Goto (Table.States (449), 301, 605);
+            Add_Goto (Table.States (449), 301, 607);
             Add_Goto (Table.States (449), 320, 144);
             Add_Goto (Table.States (449), 321, 145);
             Add_Goto (Table.States (449), 330, 146);
             Table.States (449).Kernel := To_Vector ((0 => (277, 85, 1, 
False)));
             Table.States (449).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (450).Action_List.Set_Capacity (15);
             Add_Action (Table.States (450), 3, 121);
             Add_Action (Table.States (450), 39, 122);
             Add_Action (Table.States (450), 40, 261);
@@ -5836,12 +6153,12 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (450), 104, 119);
             Add_Action (Table.States (450), 105, 33);
             Add_Action (Table.States (450), 106, 34);
-            Add_Error (Table.States (450));
+            Table.States (450).Goto_List.Set_Capacity (22);
             Add_Goto (Table.States (450), 117, 130);
             Add_Goto (Table.States (450), 128, 41);
             Add_Goto (Table.States (450), 165, 269);
-            Add_Goto (Table.States (450), 166, 606);
-            Add_Goto (Table.States (450), 191, 599);
+            Add_Goto (Table.States (450), 166, 608);
+            Add_Goto (Table.States (450), 191, 601);
             Add_Goto (Table.States (450), 197, 133);
             Add_Goto (Table.States (450), 239, 274);
             Add_Goto (Table.States (450), 258, 135);
@@ -5861,24 +6178,29 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (450), 330, 146);
             Table.States (450).Kernel := To_Vector ((0 => (140, 72, 1, 
False)));
             Table.States (450).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 166, 0)));
+            Table.States (451).Action_List.Set_Capacity (2);
             Add_Action (Table.States (451), (24, 72), (141, 1), 1, null, null);
             Table.States (451).Kernel := To_Vector ((0 => (141, 140, 0, 
False)));
             Table.States (451).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 141, 1)));
-            Add_Action (Table.States (452), 24, 607);
+            Table.States (452).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (452), 24, 609);
             Add_Action (Table.States (452), 72, 450);
-            Add_Error (Table.States (452));
-            Add_Goto (Table.States (452), 140, 608);
+            Table.States (452).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (452), 140, 610);
             Table.States (452).Kernel := To_Vector (((139, 141, 3, False), 
(141, 141, 2, True)));
-            Table.States (452).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 607)));
+            Table.States (452).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 609)));
+            Table.States (453).Action_List.Set_Capacity (35);
             Add_Action (Table.States (453), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
             78, 79, 82, 83, 85, 86, 87, 88, 89, 91, 92, 94, 95, 96, 97, 98, 
99), (197, 0), 3, null, null);
             Table.States (453).Kernel := To_Vector ((0 => (197, 258, 0, 
False)));
             Table.States (453).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 197, 3)));
+            Table.States (454).Action_List.Set_Capacity (17);
             Add_Action (Table.States (454), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (282,
             0), 3, null, null);
             Table.States (454).Kernel := To_Vector ((0 => (282, 287, 0, 
True)));
             Table.States (454).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 282, 3)));
             Table.States (454).Minimal_Complete_Actions_Recursive := True;
+            Table.States (455).Action_List.Set_Capacity (12);
             Add_Action (Table.States (455), 3, 121);
             Add_Action (Table.States (455), 39, 122);
             Add_Action (Table.States (455), 40, 123);
@@ -5891,7 +6213,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (455), 104, 119);
             Add_Action (Table.States (455), 105, 33);
             Add_Action (Table.States (455), 106, 34);
-            Add_Error (Table.States (455));
+            Table.States (455).Goto_List.Set_Capacity (13);
             Add_Goto (Table.States (455), 117, 130);
             Add_Goto (Table.States (455), 128, 41);
             Add_Goto (Table.States (455), 197, 133);
@@ -5899,7 +6221,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (455), 258, 135);
             Add_Goto (Table.States (455), 272, 92);
             Add_Goto (Table.States (455), 275, 136);
-            Add_Goto (Table.States (455), 287, 609);
+            Add_Goto (Table.States (455), 287, 611);
             Add_Goto (Table.States (455), 293, 97);
             Add_Goto (Table.States (455), 301, 143);
             Add_Goto (Table.States (455), 320, 144);
@@ -5908,11 +6230,13 @@ package body Ada_Process_LALR_Main is
             Table.States (455).Kernel := To_Vector ((0 => (283, 68, 1, True)));
             Table.States (455).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
             Table.States (455).Minimal_Complete_Actions_Recursive := True;
+            Table.States (456).Action_List.Set_Capacity (17);
             Add_Action (Table.States (456), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (284,
             0), 3, null, null);
             Table.States (456).Kernel := To_Vector ((0 => (284, 287, 0, 
True)));
             Table.States (456).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 284, 3)));
             Table.States (456).Minimal_Complete_Actions_Recursive := True;
+            Table.States (457).Action_List.Set_Capacity (12);
             Add_Action (Table.States (457), 3, 121);
             Add_Action (Table.States (457), 39, 122);
             Add_Action (Table.States (457), 40, 123);
@@ -5925,7 +6249,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (457), 104, 119);
             Add_Action (Table.States (457), 105, 33);
             Add_Action (Table.States (457), 106, 34);
-            Add_Error (Table.States (457));
+            Table.States (457).Goto_List.Set_Capacity (13);
             Add_Goto (Table.States (457), 117, 130);
             Add_Goto (Table.States (457), 128, 41);
             Add_Goto (Table.States (457), 197, 133);
@@ -5933,7 +6257,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (457), 258, 135);
             Add_Goto (Table.States (457), 272, 92);
             Add_Goto (Table.States (457), 275, 136);
-            Add_Goto (Table.States (457), 287, 610);
+            Add_Goto (Table.States (457), 287, 612);
             Add_Goto (Table.States (457), 293, 97);
             Add_Goto (Table.States (457), 301, 143);
             Add_Goto (Table.States (457), 320, 144);
@@ -5942,11 +6266,13 @@ package body Ada_Process_LALR_Main is
             Table.States (457).Kernel := To_Vector ((0 => (285, 22, 1, True)));
             Table.States (457).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
             Table.States (457).Minimal_Complete_Actions_Recursive := True;
+            Table.States (458).Action_List.Set_Capacity (17);
             Add_Action (Table.States (458), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (286,
             0), 3, null, null);
             Table.States (458).Kernel := To_Vector ((0 => (286, 287, 0, 
True)));
             Table.States (458).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 286, 3)));
             Table.States (458).Minimal_Complete_Actions_Recursive := True;
+            Table.States (459).Action_List.Set_Capacity (12);
             Add_Action (Table.States (459), 3, 121);
             Add_Action (Table.States (459), 39, 122);
             Add_Action (Table.States (459), 40, 123);
@@ -5959,7 +6285,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (459), 104, 119);
             Add_Action (Table.States (459), 105, 33);
             Add_Action (Table.States (459), 106, 34);
-            Add_Error (Table.States (459));
+            Table.States (459).Goto_List.Set_Capacity (13);
             Add_Goto (Table.States (459), 117, 130);
             Add_Goto (Table.States (459), 128, 41);
             Add_Goto (Table.States (459), 197, 133);
@@ -5967,7 +6293,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (459), 258, 135);
             Add_Goto (Table.States (459), 272, 92);
             Add_Goto (Table.States (459), 275, 136);
-            Add_Goto (Table.States (459), 287, 611);
+            Add_Goto (Table.States (459), 287, 613);
             Add_Goto (Table.States (459), 293, 97);
             Add_Goto (Table.States (459), 301, 143);
             Add_Goto (Table.States (459), 320, 144);
@@ -5976,11 +6302,13 @@ package body Ada_Process_LALR_Main is
             Table.States (459).Kernel := To_Vector ((0 => (283, 68, 1, True)));
             Table.States (459).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
             Table.States (459).Minimal_Complete_Actions_Recursive := True;
+            Table.States (460).Action_List.Set_Capacity (17);
             Add_Action (Table.States (460), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (282,
             1), 3, null, null);
             Table.States (460).Kernel := To_Vector ((0 => (282, 287, 0, 
True)));
             Table.States (460).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 282, 3)));
             Table.States (460).Minimal_Complete_Actions_Recursive := True;
+            Table.States (461).Action_List.Set_Capacity (12);
             Add_Action (Table.States (461), 3, 121);
             Add_Action (Table.States (461), 39, 122);
             Add_Action (Table.States (461), 40, 123);
@@ -5993,7 +6321,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (461), 104, 119);
             Add_Action (Table.States (461), 105, 33);
             Add_Action (Table.States (461), 106, 34);
-            Add_Error (Table.States (461));
+            Table.States (461).Goto_List.Set_Capacity (13);
             Add_Goto (Table.States (461), 117, 130);
             Add_Goto (Table.States (461), 128, 41);
             Add_Goto (Table.States (461), 197, 133);
@@ -6001,7 +6329,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (461), 258, 135);
             Add_Goto (Table.States (461), 272, 92);
             Add_Goto (Table.States (461), 275, 136);
-            Add_Goto (Table.States (461), 287, 612);
+            Add_Goto (Table.States (461), 287, 614);
             Add_Goto (Table.States (461), 293, 97);
             Add_Goto (Table.States (461), 301, 143);
             Add_Goto (Table.States (461), 320, 144);
@@ -6010,16 +6338,19 @@ package body Ada_Process_LALR_Main is
             Table.States (461).Kernel := To_Vector ((0 => (285, 22, 1, True)));
             Table.States (461).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
             Table.States (461).Minimal_Complete_Actions_Recursive := True;
+            Table.States (462).Action_List.Set_Capacity (17);
             Add_Action (Table.States (462), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (284,
             1), 3, null, null);
             Table.States (462).Kernel := To_Vector ((0 => (284, 287, 0, 
True)));
             Table.States (462).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 284, 3)));
             Table.States (462).Minimal_Complete_Actions_Recursive := True;
+            Table.States (463).Action_List.Set_Capacity (17);
             Add_Action (Table.States (463), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (286,
             1), 3, null, null);
             Table.States (463).Kernel := To_Vector ((0 => (286, 287, 0, 
True)));
             Table.States (463).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 286, 3)));
             Table.States (463).Minimal_Complete_Actions_Recursive := True;
+            Table.States (464).Action_List.Set_Capacity (17);
             Add_Action (Table.States (464), 10, Reduce, (287, 1), 3, null, 
null);
             Add_Action (Table.States (464), 20, Reduce, (287, 1), 3, null, 
null);
             Add_Action (Table.States (464), 21, Reduce, (287, 1), 3, null, 
null);
@@ -6033,22 +6364,24 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (464), 74, Reduce, (287, 1), 3, null, 
null);
             Add_Action (Table.States (464), 75, Reduce, (287, 1), 3, null, 
null);
             Add_Action (Table.States (464), 77, Reduce, (287, 1), 3, null, 
null);
-            Add_Action (Table.States (464), 79, 613);
+            Add_Action (Table.States (464), 79, 615);
             Add_Conflict (Table.States (464), 79, (287, 1), 3, null, null);
             Add_Action (Table.States (464), 83, Reduce, (287, 1), 3, null, 
null);
             Add_Action (Table.States (464), 87, Reduce, (287, 1), 3, null, 
null);
             Add_Action (Table.States (464), 96, Reduce, (287, 1), 3, null, 
null);
-            Add_Error (Table.States (464));
             Table.States (464).Kernel := To_Vector (((233, 233, 2, True), 
(287, 233, 0, False)));
             Table.States (464).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 287, 3)));
+            Table.States (465).Action_List.Set_Capacity (17);
             Add_Action (Table.States (465), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (233,
             1), 1, null, null);
             Table.States (465).Kernel := To_Vector ((0 => (233, 234, 0, 
False)));
             Table.States (465).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 233, 1)));
+            Table.States (466).Action_List.Set_Capacity (17);
             Add_Action (Table.States (466), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (234,
             1), 1, null, null);
             Table.States (466).Kernel := To_Vector ((0 => (234, 277, 0, 
False)));
             Table.States (466).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 234, 1)));
+            Table.States (467).Action_List.Set_Capacity (18);
             Add_Action (Table.States (467), 10, Reduce, (234, 0), 1, null, 
null);
             Add_Action (Table.States (467), 20, Reduce, (234, 0), 1, null, 
null);
             Add_Action (Table.States (467), 21, Reduce, (234, 0), 1, null, 
null);
@@ -6067,9 +6400,9 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (467), 85, 449);
             Add_Action (Table.States (467), 87, Reduce, (234, 0), 1, null, 
null);
             Add_Action (Table.States (467), 96, Reduce, (234, 0), 1, null, 
null);
-            Add_Error (Table.States (467));
             Table.States (467).Kernel := To_Vector (((234, 301, 0, False), 
(277, 301, 2, False)));
             Table.States (467).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 234, 1)));
+            Table.States (468).Action_List.Set_Capacity (11);
             Add_Action (Table.States (468), 3, 121);
             Add_Action (Table.States (468), 39, 122);
             Add_Action (Table.States (468), 40, 123);
@@ -6081,11 +6414,11 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (468), 104, 119);
             Add_Action (Table.States (468), 105, 33);
             Add_Action (Table.States (468), 106, 34);
-            Add_Error (Table.States (468));
+            Table.States (468).Goto_List.Set_Capacity (14);
             Add_Goto (Table.States (468), 117, 130);
             Add_Goto (Table.States (468), 128, 41);
             Add_Goto (Table.States (468), 197, 133);
-            Add_Goto (Table.States (468), 233, 614);
+            Add_Goto (Table.States (468), 233, 616);
             Add_Goto (Table.States (468), 234, 465);
             Add_Goto (Table.States (468), 239, 274);
             Add_Goto (Table.States (468), 258, 135);
@@ -6098,15 +6431,18 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (468), 330, 146);
             Table.States (468).Kernel := To_Vector ((0 => (287, 33, 1, 
False)));
             Table.States (468).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (469).Action_List.Set_Capacity (17);
             Add_Action (Table.States (469), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (287,
             2), 3, null, null);
             Table.States (469).Kernel := To_Vector ((0 => (287, 301, 0, 
False)));
             Table.States (469).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 287, 3)));
+            Table.States (470).Action_List.Set_Capacity (35);
             Add_Action (Table.States (470), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
             78, 79, 82, 83, 85, 86, 87, 88, 89, 91, 92, 94, 95, 96, 97, 98, 
99), (320, 0), 3, null, null);
             Table.States (470).Kernel := To_Vector ((0 => (320, 197, 0, 
True)));
             Table.States (470).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 320, 3)));
             Table.States (470).Minimal_Complete_Actions_Recursive := True;
+            Table.States (471).Action_List.Set_Capacity (35);
             Add_Action (Table.States (471), 10, Reduce, (321, 0), 3, null, 
null);
             Add_Action (Table.States (471), 20, Reduce, (321, 0), 3, null, 
null);
             Add_Action (Table.States (471), 21, Reduce, (321, 0), 3, null, 
null);
@@ -6142,28 +6478,30 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (471), 97, 299);
             Add_Action (Table.States (471), 98, Reduce, (321, 0), 3, null, 
null);
             Add_Action (Table.States (471), 99, 300);
-            Add_Error (Table.States (471));
+            Table.States (471).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (471), 237, 301);
             Table.States (471).Kernel := To_Vector (((320, 320, 2, True), 
(321, 320, 0, True)));
             Table.States (471).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 321, 3)));
             Table.States (471).Minimal_Complete_Actions_Recursive := True;
+            Table.States (472).Action_List.Set_Capacity (46);
             Add_Action (Table.States (472), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (161, 0), 4, delay_statement_0'Access, null);
             Table.States (472).Kernel := To_Vector ((0 => (161, 96, 0, 
False)));
             Table.States (472).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 161, 4)));
-            Add_Action (Table.States (473), 96, 615);
-            Add_Error (Table.States (473));
+            Table.States (473).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (473), 96, 617);
             Table.States (473).Kernel := To_Vector ((0 => (190, 192, 1, 
False)));
-            Table.States (473).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 615)));
+            Table.States (473).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 617)));
+            Table.States (474).Action_List.Set_Capacity (7);
             Add_Action (Table.States (474), 39, 122);
-            Add_Action (Table.States (474), 41, 616);
+            Add_Action (Table.States (474), 41, 618);
             Add_Action (Table.States (474), 76, 126);
             Add_Action (Table.States (474), 103, 129);
             Add_Action (Table.States (474), 104, 119);
             Add_Action (Table.States (474), 105, 33);
             Add_Action (Table.States (474), 106, 34);
-            Add_Error (Table.States (474));
+            Table.States (474).Goto_List.Set_Capacity (6);
             Add_Goto (Table.States (474), 117, 130);
             Add_Goto (Table.States (474), 128, 41);
             Add_Goto (Table.States (474), 239, 134);
@@ -6172,6 +6510,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (474), 293, 97);
             Table.States (474).Kernel := To_Vector (((197, 40, 1, False), 
(314, 40, 6, False), (314, 40, 2, False)));
             Table.States (474).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (475).Action_List.Set_Capacity (11);
             Add_Action (Table.States (475), 3, 121);
             Add_Action (Table.States (475), 39, 122);
             Add_Action (Table.States (475), 40, 474);
@@ -6183,10 +6522,10 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (475), 104, 119);
             Add_Action (Table.States (475), 105, 33);
             Add_Action (Table.States (475), 106, 34);
-            Add_Error (Table.States (475));
+            Table.States (475).Goto_List.Set_Capacity (14);
             Add_Goto (Table.States (475), 117, 130);
             Add_Goto (Table.States (475), 128, 41);
-            Add_Goto (Table.States (475), 167, 617);
+            Add_Goto (Table.States (475), 167, 619);
             Add_Goto (Table.States (475), 197, 133);
             Add_Goto (Table.States (475), 239, 477);
             Add_Goto (Table.States (475), 258, 135);
@@ -6200,19 +6539,21 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (475), 330, 146);
             Table.States (475).Kernel := To_Vector ((0 => (230, 59, 1, 
False)));
             Table.States (475).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (476).Action_List.Set_Capacity (2);
             Add_Action (Table.States (476), (37, 87), (230, 5), 3, 
iterator_specification_5'Access, null);
             Table.States (476).Kernel := To_Vector ((0 => (230, 167, 0, 
False)));
             Table.States (476).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 230, 3)));
+            Table.States (477).Action_List.Set_Capacity (30);
             Add_Action (Table.States (477), 10, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (477), 33, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (477), 37, Reduce, (314, 3), 1, 
subtype_indication_3'Access, null);
             Add_Action (Table.States (477), 38, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (477), 40, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (477), 43, Reduce, (258, 3), 1, null, 
null);
-            Add_Action (Table.States (477), 53, 618);
+            Add_Action (Table.States (477), 53, 620);
             Add_Action (Table.States (477), 55, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (477), 75, Reduce, (258, 3), 1, null, 
null);
-            Add_Action (Table.States (477), 76, 619);
+            Add_Action (Table.States (477), 76, 621);
             Add_Action (Table.States (477), 77, Reduce, (258, 3), 1, null, 
null);
             Add_Conflict (Table.States (477), 77, (314, 3), 1, 
subtype_indication_3'Access, null);
             Add_Action (Table.States (477), 78, Reduce, (258, 3), 1, null, 
null);
@@ -6236,80 +6577,86 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (477), 100, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (477), 101, 239);
             Add_Action (Table.States (477), 102, 240);
-            Add_Error (Table.States (477));
+            Table.States (477).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (477), 115, 241);
-            Add_Goto (Table.States (477), 155, 620);
-            Add_Goto (Table.States (477), 224, 621);
+            Add_Goto (Table.States (477), 155, 622);
+            Add_Goto (Table.States (477), 224, 623);
             Add_Goto (Table.States (477), 322, 448);
             Table.States (477).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (258, 239, 0, False), (272, 239, 3, True), (277, 239, 4, False), 
(277, 239, 2, False), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True), (293, 239, 2, True), 
(314, 239, 4, False), (314, 239, 0, False)));
             Table.States (477).Minimal_Complete_Actions := To_Vector 
(((Reduce, 258, 1), (Reduce, 314, 1)));
+            Table.States (478).Action_List.Set_Capacity (4);
             Add_Action (Table.States (478), (37, 77, 83, 87), (167, 1), 1, 
null, null);
             Table.States (478).Kernel := To_Vector ((0 => (167, 277, 0, 
False)));
             Table.States (478).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 167, 1)));
+            Table.States (479).Action_List.Set_Capacity (1);
             Add_Action (Table.States (479), 85, 449);
-            Add_Error (Table.States (479));
             Table.States (479).Kernel := To_Vector ((0 => (277, 301, 2, 
False)));
             Table.States (479).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 85, 449)));
+            Table.States (480).Action_List.Set_Capacity (4);
             Add_Action (Table.States (480), (37, 77, 83, 87), (167, 0), 1, 
null, null);
             Table.States (480).Kernel := To_Vector ((0 => (167, 314, 0, 
False)));
             Table.States (480).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 167, 1)));
+            Table.States (481).Action_List.Set_Capacity (3);
             Add_Action (Table.States (481), 104, 119);
             Add_Action (Table.States (481), 105, 33);
             Add_Action (Table.States (481), 106, 34);
-            Add_Error (Table.States (481));
+            Table.States (481).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (481), 128, 41);
-            Add_Goto (Table.States (481), 239, 622);
+            Add_Goto (Table.States (481), 239, 624);
             Add_Goto (Table.States (481), 272, 92);
             Add_Goto (Table.States (481), 293, 97);
             Table.States (481).Kernel := To_Vector ((0 => (230, 59, 1, 
False)));
             Table.States (481).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (482).Action_List.Set_Capacity (6);
             Add_Action (Table.States (482), 37, Reduce, (230, 4), 3, null, 
null);
             Add_Action (Table.States (482), 76, 235);
             Add_Action (Table.States (482), 84, 237);
             Add_Action (Table.States (482), 87, Reduce, (230, 4), 3, null, 
null);
             Add_Action (Table.States (482), 101, 239);
             Add_Action (Table.States (482), 102, 240);
-            Add_Error (Table.States (482));
+            Table.States (482).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (482), 115, 241);
             Add_Goto (Table.States (482), 322, 242);
             Table.States (482).Kernel := To_Vector (((128, 239, 2, True), 
(230, 239, 0, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (482).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 230, 3)));
-            Add_Action (Table.States (483), 41, 623);
-            Add_Error (Table.States (483));
+            Table.States (483).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (483), 41, 625);
             Table.States (483).Kernel := To_Vector (((314, 40, 6, False), 
(314, 40, 2, False)));
-            Table.States (483).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 623)));
+            Table.States (483).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 625)));
+            Table.States (484).Action_List.Set_Capacity (11);
             Add_Action (Table.States (484), 10, Reduce, (314, 3), 1, 
subtype_indication_3'Access, null);
             Add_Action (Table.States (484), 21, Reduce, (314, 3), 1, 
subtype_indication_3'Access, null);
             Add_Action (Table.States (484), 42, Reduce, (314, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (484), 53, 618);
+            Add_Action (Table.States (484), 53, 620);
             Add_Action (Table.States (484), 74, Reduce, (314, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (484), 76, 619);
+            Add_Action (Table.States (484), 76, 621);
             Add_Action (Table.States (484), 82, Reduce, (314, 3), 1, 
subtype_indication_3'Access, null);
             Add_Action (Table.States (484), 84, 237);
             Add_Action (Table.States (484), 96, Reduce, (314, 3), 1, 
subtype_indication_3'Access, null);
             Add_Action (Table.States (484), 101, 239);
             Add_Action (Table.States (484), 102, 240);
-            Add_Error (Table.States (484));
+            Table.States (484).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (484), 115, 241);
-            Add_Goto (Table.States (484), 155, 620);
-            Add_Goto (Table.States (484), 224, 621);
+            Add_Goto (Table.States (484), 155, 622);
+            Add_Goto (Table.States (484), 224, 623);
             Add_Goto (Table.States (484), 322, 242);
             Table.States (484).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (272, 239, 3, True), (293, 239, 2, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (314, 239, 4, False), (314, 239, 0, False)));
             Table.States (484).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 314, 1)));
-            Add_Action (Table.States (485), 42, 624);
-            Add_Error (Table.States (485));
+            Table.States (485).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (485), 42, 626);
             Table.States (485).Kernel := To_Vector (((230, 314, 3, False), 
(230, 314, 2, False)));
-            Table.States (485).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 42, 624)));
-            Add_Action (Table.States (486), 96, 625);
-            Add_Error (Table.States (486));
+            Table.States (485).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 42, 626)));
+            Table.States (486).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (486), 96, 627);
             Table.States (486).Kernel := To_Vector ((0 => (121, 192, 1, 
False)));
-            Table.States (486).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 625)));
+            Table.States (486).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 627)));
+            Table.States (487).Action_List.Set_Capacity (13);
             Add_Action (Table.States (487), 3, 121);
             Add_Action (Table.States (487), 39, 122);
             Add_Action (Table.States (487), 40, 123);
@@ -6323,11 +6670,11 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (487), 104, 119);
             Add_Action (Table.States (487), 105, 33);
             Add_Action (Table.States (487), 106, 34);
-            Add_Error (Table.States (487));
+            Table.States (487).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (487), 117, 130);
             Add_Goto (Table.States (487), 128, 41);
             Add_Goto (Table.States (487), 191, 131);
-            Add_Goto (Table.States (487), 192, 626);
+            Add_Goto (Table.States (487), 192, 628);
             Add_Goto (Table.States (487), 197, 133);
             Add_Goto (Table.States (487), 239, 134);
             Add_Goto (Table.States (487), 258, 135);
@@ -6346,20 +6693,23 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (487), 330, 146);
             Table.States (487).Kernel := To_Vector ((0 => (127, 12, 1, 
False)));
             Table.States (487).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (488), 12, 627);
+            Table.States (488).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (488), 12, 629);
             Add_Action (Table.States (488), 104, Reduce, (235, 1), 0, null, 
null);
-            Add_Error (Table.States (488));
-            Add_Goto (Table.States (488), 235, 628);
+            Table.States (488).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (488), 235, 630);
             Table.States (488).Kernel := To_Vector ((0 => (281, 54, 11, 
False)));
             Table.States (488).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 235, 0)));
-            Add_Action (Table.States (489), 96, 629);
-            Add_Error (Table.States (489));
+            Table.States (489).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (489), 96, 631);
             Table.States (489).Kernel := To_Vector ((0 => (182, 117, 1, 
False)));
-            Table.States (489).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 629)));
+            Table.States (489).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 631)));
+            Table.States (490).Action_List.Set_Capacity (7);
             Add_Action (Table.States (490), (21, 35, 56, 74, 77, 82, 96), 
(291, 1), 2, result_profile_1'Access, null);
             Table.States (490).Kernel := To_Vector ((0 => (291, 114, 0, 
True)));
             Table.States (490).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 291, 2)));
             Table.States (490).Minimal_Complete_Actions_Recursive := True;
+            Table.States (491).Action_List.Set_Capacity (11);
             Add_Action (Table.States (491), 7, 556);
             Add_Action (Table.States (491), 21, Reduce, (240, 1), 0, null, 
null);
             Add_Action (Table.States (491), 35, Reduce, (240, 1), 0, null, 
null);
@@ -6371,15 +6721,16 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (491), 104, 119);
             Add_Action (Table.States (491), 105, 33);
             Add_Action (Table.States (491), 106, 34);
-            Add_Error (Table.States (491));
+            Table.States (491).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (491), 128, 41);
-            Add_Goto (Table.States (491), 239, 630);
-            Add_Goto (Table.States (491), 240, 631);
+            Add_Goto (Table.States (491), 239, 632);
+            Add_Goto (Table.States (491), 240, 633);
             Add_Goto (Table.States (491), 272, 92);
             Add_Goto (Table.States (491), 293, 97);
             Table.States (491).Kernel := To_Vector (((114, 241, 2, False), 
(114, 241, 3, True), (114, 241, 2, False),
             (291, 241, 0, False)));
             Table.States (491).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 0)));
+            Table.States (492).Action_List.Set_Capacity (30);
             Add_Action (Table.States (492), 10, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (492), 33, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (492), 38, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
@@ -6411,182 +6762,196 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (492), 100, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (492), 101, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (492), 102, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Error (Table.States (492));
             Table.States (492).Kernel := To_Vector (((219, 104, 0, False), 
(239, 104, 0, False)));
             Table.States (492).Minimal_Complete_Actions := To_Vector 
(((Reduce, 219, 1), (Reduce, 239, 1)));
          end Subr_9;
          procedure Subr_10
          is begin
-            Add_Action (Table.States (493), 81, 632);
+            Table.States (493).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (493), 81, 634);
             Add_Action (Table.States (493), 83, 234);
-            Add_Error (Table.States (493));
             Table.States (493).Kernel := To_Vector (((219, 219, 2, True), 
(254, 219, 3, False), (254, 219, 2, False),
             (254, 219, 4, False), (254, 219, 3, False)));
-            Table.States (493).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 632)));
+            Table.States (493).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 634)));
+            Table.States (494).Action_List.Set_Capacity (2);
             Add_Action (Table.States (494), (77, 96), (255, 1), 1, null, null);
             Table.States (494).Kernel := To_Vector ((0 => (255, 254, 0, 
False)));
             Table.States (494).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 255, 1)));
-            Add_Action (Table.States (495), 77, 633);
-            Add_Action (Table.States (495), 96, 634);
-            Add_Error (Table.States (495));
+            Table.States (495).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (495), 77, 635);
+            Add_Action (Table.States (495), 96, 636);
             Table.States (495).Kernel := To_Vector (((199, 255, 1, False), 
(255, 255, 1, True)));
-            Table.States (495).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 633)));
+            Table.States (495).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 635)));
+            Table.States (496).Action_List.Set_Capacity (7);
             Add_Action (Table.States (496), (21, 35, 56, 74, 77, 82, 96), 
(252, 0), 2,
             parameter_and_result_profile_0'Access, null);
             Table.States (496).Kernel := To_Vector ((0 => (252, 291, 0, 
True)));
             Table.States (496).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 252, 2)));
             Table.States (496).Minimal_Complete_Actions_Recursive := True;
+            Table.States (497).Action_List.Set_Capacity (3);
             Add_Action (Table.States (497), 104, 119);
             Add_Action (Table.States (497), 105, 33);
             Add_Action (Table.States (497), 106, 34);
-            Add_Error (Table.States (497));
+            Table.States (497).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (497), 128, 41);
-            Add_Goto (Table.States (497), 239, 635);
+            Add_Goto (Table.States (497), 239, 637);
             Add_Goto (Table.States (497), 272, 92);
             Add_Goto (Table.States (497), 293, 97);
             Table.States (497).Kernel := To_Vector ((0 => (215, 56, 2, 
False)));
             Table.States (497).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (498).Action_List.Set_Capacity (3);
             Add_Action (Table.States (498), 104, 119);
             Add_Action (Table.States (498), 105, 33);
             Add_Action (Table.States (498), 106, 34);
-            Add_Error (Table.States (498));
+            Table.States (498).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (498), 128, 41);
-            Add_Goto (Table.States (498), 239, 636);
+            Add_Goto (Table.States (498), 239, 638);
             Add_Goto (Table.States (498), 272, 92);
             Add_Goto (Table.States (498), 293, 97);
             Table.States (498).Kernel := To_Vector ((0 => (215, 56, 2, 
False)));
             Table.States (498).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (499).Action_List.Set_Capacity (3);
             Add_Action (Table.States (499), 104, 119);
             Add_Action (Table.States (499), 105, 33);
             Add_Action (Table.States (499), 106, 34);
-            Add_Error (Table.States (499));
+            Table.States (499).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (499), 128, 41);
-            Add_Goto (Table.States (499), 239, 637);
+            Add_Goto (Table.States (499), 239, 639);
             Add_Goto (Table.States (499), 272, 92);
             Add_Goto (Table.States (499), 293, 97);
             Table.States (499).Kernel := To_Vector ((0 => (215, 56, 2, 
False)));
             Table.States (499).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (500), 35, 638);
+            Table.States (500).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (500), 35, 640);
             Add_Action (Table.States (500), 74, 337);
             Add_Action (Table.States (500), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (500));
-            Add_Goto (Table.States (500), 122, 639);
+            Table.States (500).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (500), 122, 641);
             Table.States (500).Kernel := To_Vector (((201, 169, 3, False), 
(201, 169, 3, False), (201, 169, 1,
             False)));
             Table.States (500).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (501), 35, 640);
+            Table.States (501).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (501), 35, 642);
             Add_Action (Table.States (501), 76, 235);
             Add_Action (Table.States (501), 84, 237);
             Add_Action (Table.States (501), 101, 239);
             Add_Action (Table.States (501), 102, 240);
-            Add_Error (Table.States (501));
+            Table.States (501).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (501), 115, 241);
             Add_Goto (Table.States (501), 322, 242);
             Table.States (501).Kernel := To_Vector (((128, 239, 2, True), 
(204, 239, 4, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (501).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 640)));
-            Add_Action (Table.States (502), 6, 641);
-            Add_Action (Table.States (502), 41, 642);
-            Add_Action (Table.States (502), 80, 643);
+            Table.States (501).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 642)));
+            Table.States (502).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (502), 6, 643);
+            Add_Action (Table.States (502), 41, 644);
+            Add_Action (Table.States (502), 80, 645);
             Add_Action (Table.States (502), 104, 119);
             Add_Action (Table.States (502), 105, 33);
             Add_Action (Table.States (502), 106, 34);
-            Add_Error (Table.States (502));
+            Table.States (502).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (502), 128, 41);
-            Add_Goto (Table.States (502), 239, 644);
+            Add_Goto (Table.States (502), 239, 646);
             Add_Goto (Table.States (502), 272, 92);
             Add_Goto (Table.States (502), 293, 97);
-            Add_Goto (Table.States (502), 310, 645);
+            Add_Goto (Table.States (502), 310, 647);
             Table.States (502).Kernel := To_Vector (((200, 35, 3, False), 
(200, 35, 2, False), (200, 35, 2, False)));
-            Table.States (502).Minimal_Complete_Actions := To_Vector (((Shift, 
104, 119), (Shift, 6, 641)));
-            Add_Action (Table.States (503), 96, 646);
-            Add_Error (Table.States (503));
+            Table.States (502).Minimal_Complete_Actions := To_Vector (((Shift, 
104, 119), (Shift, 6, 643)));
+            Table.States (503).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (503), 96, 648);
             Table.States (503).Kernel := To_Vector ((0 => (200, 122, 1, 
False)));
-            Table.States (503).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 646)));
+            Table.States (503).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 648)));
+            Table.States (504).Action_List.Set_Capacity (9);
             Add_Action (Table.States (504), 7, Reduce, (236, 0), 1, null, 
null);
             Add_Action (Table.States (504), 40, Reduce, (236, 0), 1, null, 
null);
-            Add_Action (Table.States (504), 45, 647);
+            Add_Action (Table.States (504), 45, 649);
             Add_Action (Table.States (504), 74, Reduce, (236, 0), 1, null, 
null);
             Add_Action (Table.States (504), 82, Reduce, (236, 0), 1, null, 
null);
             Add_Action (Table.States (504), 96, Reduce, (236, 0), 1, null, 
null);
             Add_Action (Table.States (504), 104, Reduce, (236, 0), 1, null, 
null);
             Add_Action (Table.States (504), 105, Reduce, (236, 0), 1, null, 
null);
             Add_Action (Table.States (504), 106, Reduce, (236, 0), 1, null, 
null);
-            Add_Error (Table.States (504));
             Table.States (504).Kernel := To_Vector (((236, 33, 0, False), 
(236, 33, 1, False)));
             Table.States (504).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 236, 1)));
+            Table.States (505).Action_List.Set_Capacity (8);
             Add_Action (Table.States (505), (7, 40, 74, 82, 96, 104, 105, 
106), (236, 2), 1, null, null);
             Table.States (505).Kernel := To_Vector ((0 => (236, 45, 0, 
False)));
             Table.States (505).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 236, 1)));
+            Table.States (506).Action_List.Set_Capacity (5);
             Add_Action (Table.States (506), 7, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (506), 40, 386);
             Add_Action (Table.States (506), 104, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (506), 105, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (506), 106, Reduce, (241, 1), 0, null, 
null);
-            Add_Error (Table.States (506));
-            Add_Goto (Table.States (506), 114, 648);
-            Add_Goto (Table.States (506), 241, 649);
+            Table.States (506).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (506), 114, 650);
+            Add_Goto (Table.States (506), 241, 651);
             Table.States (506).Kernel := To_Vector (((198, 236, 3, False), 
(198, 236, 4, False), (198, 236, 2, False),
             (198, 236, 3, False)));
             Table.States (506).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 0)));
-            Add_Action (Table.States (507), 22, 650);
-            Add_Action (Table.States (507), 23, 651);
-            Add_Action (Table.States (507), 24, 652);
-            Add_Error (Table.States (507));
-            Add_Goto (Table.States (507), 174, 653);
-            Add_Goto (Table.States (507), 175, 654);
+            Table.States (507).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (507), 22, 652);
+            Add_Action (Table.States (507), 23, 653);
+            Add_Action (Table.States (507), 24, 654);
+            Table.States (507).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (507), 174, 655);
+            Add_Goto (Table.States (507), 175, 656);
             Table.States (507).Kernel := To_Vector (((222, 300, 6, False), 
(222, 300, 4, False), (222, 300, 5, False),
             (222, 300, 3, False)));
-            Table.States (507).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 652)));
+            Table.States (507).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 654)));
+            Table.States (508).Action_List.Set_Capacity (2);
             Add_Action (Table.States (508), 83, 381);
-            Add_Action (Table.States (508), 96, 655);
-            Add_Error (Table.States (508));
+            Add_Action (Table.States (508), 96, 657);
             Table.States (508).Kernel := To_Vector (((238, 238, 2, True), 
(332, 238, 1, False)));
-            Table.States (508).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 655)));
+            Table.States (508).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 657)));
+            Table.States (509).Action_List.Set_Capacity (39);
             Add_Action (Table.States (509), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
             48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 93, 
104, 105, 106, 107), (332, 1), 4,
             with_clause_1'Access, null);
             Table.States (509).Kernel := To_Vector ((0 => (332, 96, 0, 
False)));
             Table.States (509).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 332, 4)));
-            Add_Action (Table.States (510), 60, 656);
-            Add_Error (Table.States (510));
+            Table.States (510).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (510), 60, 658);
             Table.States (510).Kernel := To_Vector ((0 => (248, 35, 2, 
False)));
-            Table.States (510).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 60, 656)));
-            Add_Action (Table.States (511), 35, 657);
-            Add_Error (Table.States (511));
+            Table.States (510).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 60, 658)));
+            Table.States (511).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (511), 35, 659);
             Table.States (511).Kernel := To_Vector (((247, 122, 4, False), 
(247, 122, 3, False)));
-            Table.States (511).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 657)));
+            Table.States (511).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 659)));
+            Table.States (512).Action_List.Set_Capacity (3);
             Add_Action (Table.States (512), 104, 119);
             Add_Action (Table.States (512), 105, 33);
             Add_Action (Table.States (512), 106, 34);
-            Add_Error (Table.States (512));
+            Table.States (512).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (512), 128, 41);
-            Add_Goto (Table.States (512), 239, 658);
+            Add_Goto (Table.States (512), 239, 660);
             Add_Goto (Table.States (512), 272, 92);
             Add_Goto (Table.States (512), 293, 97);
             Table.States (512).Kernel := To_Vector ((0 => (213, 39, 2, 
False)));
             Table.States (512).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (513).Action_List.Set_Capacity (6);
             Add_Action (Table.States (513), 74, 337);
             Add_Action (Table.States (513), 76, 235);
             Add_Action (Table.States (513), 84, 237);
             Add_Action (Table.States (513), 96, Reduce, (122, 1), 0, null, 
null);
             Add_Action (Table.States (513), 101, 239);
             Add_Action (Table.States (513), 102, 240);
-            Add_Error (Table.States (513));
+            Table.States (513).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (513), 115, 241);
-            Add_Goto (Table.States (513), 122, 659);
+            Add_Goto (Table.States (513), 122, 661);
             Add_Goto (Table.States (513), 322, 242);
             Table.States (513).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (250, 239, 1, False), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (513).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (514).Action_List.Set_Capacity (3);
             Add_Action (Table.States (514), 35, Reduce, (122, 0), 2, 
aspect_specification_opt_0'Access, null);
             Add_Action (Table.States (514), 83, 443);
             Add_Action (Table.States (514), 96, Reduce, (122, 0), 2, 
aspect_specification_opt_0'Access, null);
-            Add_Error (Table.States (514));
             Table.States (514).Kernel := To_Vector (((122, 125, 0, False), 
(125, 125, 1, True)));
             Table.States (514).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 2)));
+            Table.States (515).Action_List.Set_Capacity (17);
             Add_Action (Table.States (515), 24, Reduce, (159, 1), 0, null, 
null);
             Add_Action (Table.States (515), 25, Reduce, (246, 2), 0, null, 
null);
             Add_Action (Table.States (515), 28, 183);
@@ -6604,7 +6969,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (515), 69, 27);
             Add_Action (Table.States (515), 71, 28);
             Add_Action (Table.States (515), 104, 185);
-            Add_Error (Table.States (515));
+            Table.States (515).Goto_List.Set_Capacity (53);
             Add_Goto (Table.States (515), 112, 35);
             Add_Goto (Table.States (515), 121, 37);
             Add_Goto (Table.States (515), 127, 40);
@@ -6612,7 +6977,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (515), 135, 46);
             Add_Goto (Table.States (515), 157, 391);
             Add_Goto (Table.States (515), 158, 392);
-            Add_Goto (Table.States (515), 159, 660);
+            Add_Goto (Table.States (515), 159, 662);
             Add_Goto (Table.States (515), 179, 54);
             Add_Goto (Table.States (515), 182, 55);
             Add_Goto (Table.States (515), 186, 56);
@@ -6660,40 +7025,43 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (515), 331, 116);
             Table.States (515).Kernel := To_Vector (((251, 35, 2, False), 
(251, 35, 1, False)));
             Table.States (515).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
-            Add_Action (Table.States (516), 77, 661);
+            Table.States (516).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (516), 77, 663);
             Add_Action (Table.States (516), 83, 443);
-            Add_Error (Table.States (516));
             Table.States (516).Kernel := To_Vector (((125, 125, 1, True), 
(257, 125, 2, False)));
-            Table.States (516).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 661)));
-            Add_Action (Table.States (517), 77, 662);
-            Add_Error (Table.States (517));
+            Table.States (516).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 663)));
+            Table.States (517).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (517), 77, 664);
             Table.States (517).Kernel := To_Vector ((0 => (257, 153, 2, 
False)));
-            Table.States (517).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 662)));
+            Table.States (517).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 664)));
+            Table.States (518).Action_List.Set_Capacity (39);
             Add_Action (Table.States (518), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
             48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 93, 
104, 105, 106, 107), (332, 2), 4,
             with_clause_2'Access, null);
             Table.States (518).Kernel := To_Vector ((0 => (332, 96, 0, 
False)));
             Table.States (518).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 332, 4)));
-            Add_Action (Table.States (519), 60, 663);
-            Add_Error (Table.States (519));
+            Table.States (519).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (519), 60, 665);
             Table.States (519).Kernel := To_Vector ((0 => (265, 35, 2, 
False)));
-            Table.States (519).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 60, 663)));
-            Add_Action (Table.States (520), 35, 664);
-            Add_Error (Table.States (520));
+            Table.States (519).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 60, 665)));
+            Table.States (520).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (520), 35, 666);
             Table.States (520).Kernel := To_Vector ((0 => (264, 122, 3, 
False)));
-            Table.States (520).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 664)));
+            Table.States (520).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 666)));
+            Table.States (521).Action_List.Set_Capacity (2);
             Add_Action (Table.States (521), 35, Reduce, (122, 1), 0, null, 
null);
             Add_Action (Table.States (521), 74, 337);
-            Add_Error (Table.States (521));
-            Add_Goto (Table.States (521), 122, 665);
+            Table.States (521).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (521), 122, 667);
             Table.States (521).Kernel := To_Vector (((271, 169, 6, False), 
(271, 169, 3, False)));
             Table.States (521).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (522).Action_List.Set_Capacity (18);
             Add_Action (Table.States (522), 24, Reduce, (159, 1), 0, null, 
null);
             Add_Action (Table.States (522), 25, Reduce, (246, 2), 0, null, 
null);
             Add_Action (Table.States (522), 28, 183);
             Add_Action (Table.States (522), 29, Reduce, (246, 2), 0, null, 
null);
             Add_Action (Table.States (522), 30, 8);
-            Add_Action (Table.States (522), 39, 666);
+            Add_Action (Table.States (522), 39, 668);
             Add_Action (Table.States (522), 40, 12);
             Add_Action (Table.States (522), 46, 14);
             Add_Action (Table.States (522), 47, 15);
@@ -6706,7 +7074,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (522), 69, 27);
             Add_Action (Table.States (522), 71, 28);
             Add_Action (Table.States (522), 104, 185);
-            Add_Error (Table.States (522));
+            Table.States (522).Goto_List.Set_Capacity (54);
             Add_Goto (Table.States (522), 112, 35);
             Add_Goto (Table.States (522), 121, 37);
             Add_Goto (Table.States (522), 127, 40);
@@ -6714,7 +7082,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (522), 135, 46);
             Add_Goto (Table.States (522), 157, 391);
             Add_Goto (Table.States (522), 158, 392);
-            Add_Goto (Table.States (522), 159, 667);
+            Add_Goto (Table.States (522), 159, 669);
             Add_Goto (Table.States (522), 179, 54);
             Add_Goto (Table.States (522), 182, 55);
             Add_Goto (Table.States (522), 186, 56);
@@ -6745,7 +7113,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (522), 263, 88);
             Add_Goto (Table.States (522), 264, 89);
             Add_Goto (Table.States (522), 265, 90);
-            Add_Goto (Table.States (522), 266, 668);
+            Add_Goto (Table.States (522), 266, 670);
             Add_Goto (Table.States (522), 271, 91);
             Add_Goto (Table.States (522), 281, 94);
             Add_Goto (Table.States (522), 289, 95);
@@ -6763,14 +7131,15 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (522), 331, 116);
             Table.States (522).Kernel := To_Vector (((304, 35, 5, False), 
(304, 35, 2, False)));
             Table.States (522).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
-            Add_Action (Table.States (523), 96, 669);
-            Add_Error (Table.States (523));
+            Table.States (523).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (523), 96, 671);
             Table.States (523).Kernel := To_Vector ((0 => (276, 192, 1, 
False)));
-            Table.States (523).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 669)));
-            Add_Action (Table.States (524), 96, 670);
-            Add_Error (Table.States (524));
+            Table.States (523).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 671)));
+            Table.States (524).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (524), 96, 672);
             Table.States (524).Kernel := To_Vector ((0 => (290, 5, 1, False)));
-            Table.States (524).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 670)));
+            Table.States (524).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 672)));
+            Table.States (525).Action_List.Set_Capacity (9);
             Add_Action (Table.States (525), 7, Reduce, (154, 1), 0, null, 
null);
             Add_Action (Table.States (525), 16, 568);
             Add_Action (Table.States (525), 21, Reduce, (154, 1), 0, null, 
null);
@@ -6780,58 +7149,63 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (525), 104, Reduce, (154, 1), 0, null, 
null);
             Add_Action (Table.States (525), 105, Reduce, (154, 1), 0, null, 
null);
             Add_Action (Table.States (525), 106, Reduce, (154, 1), 0, null, 
null);
-            Add_Error (Table.States (525));
-            Add_Goto (Table.States (525), 154, 671);
+            Table.States (525).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (525), 154, 673);
             Table.States (525).Kernel := To_Vector (((194, 118, 2, False), 
(194, 118, 1, False)));
             Table.States (525).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 154, 0)));
-            Add_Action (Table.States (526), 24, 672);
-            Add_Error (Table.States (526));
+            Table.States (526).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (526), 24, 674);
             Table.States (526).Kernel := To_Vector ((0 => (196, 218, 3, 
False)));
-            Table.States (526).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 672)));
+            Table.States (526).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 674)));
+            Table.States (527).Action_List.Set_Capacity (7);
             Add_Action (Table.States (527), 29, Reduce, (246, 2), 0, null, 
null);
             Add_Action (Table.States (527), 40, 12);
             Add_Action (Table.States (527), 46, 14);
-            Add_Action (Table.States (527), 47, 673);
+            Add_Action (Table.States (527), 47, 675);
             Add_Action (Table.States (527), 50, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (527), 51, 674);
-            Add_Action (Table.States (527), 66, 675);
-            Add_Error (Table.States (527));
+            Add_Action (Table.States (527), 51, 676);
+            Add_Action (Table.States (527), 66, 677);
+            Table.States (527).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (527), 207, 61);
-            Add_Goto (Table.States (527), 246, 676);
+            Add_Goto (Table.States (527), 246, 678);
             Add_Goto (Table.States (527), 247, 78);
             Add_Goto (Table.States (527), 262, 87);
-            Add_Goto (Table.States (527), 263, 677);
+            Add_Goto (Table.States (527), 263, 679);
             Add_Goto (Table.States (527), 264, 89);
             Add_Goto (Table.States (527), 307, 105);
             Add_Goto (Table.States (527), 316, 111);
             Table.States (527).Kernel := To_Vector ((0 => (315, 77, 6, 
False)));
             Table.States (527).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 246, 0)));
+            Table.States (528).Action_List.Set_Capacity (3);
             Add_Action (Table.States (528), 4, 1);
             Add_Action (Table.States (528), 18, 4);
-            Add_Action (Table.States (528), 67, 678);
-            Add_Error (Table.States (528));
-            Add_Goto (Table.States (528), 113, 679);
-            Add_Goto (Table.States (528), 160, 680);
+            Add_Action (Table.States (528), 67, 680);
+            Table.States (528).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (528), 113, 681);
+            Add_Goto (Table.States (528), 160, 682);
             Add_Goto (Table.States (528), 161, 533);
             Table.States (528).Kernel := To_Vector (((295, 87, 3, False), 
(295, 87, 2, False), (295, 87, 2, False)));
-            Table.States (528).Minimal_Complete_Actions := To_Vector (((Shift, 
67, 678), (Shift, 18, 4)));
+            Table.States (528).Minimal_Complete_Actions := To_Vector (((Shift, 
67, 680), (Shift, 18, 4)));
+            Table.States (529).Action_List.Set_Capacity (5);
             Add_Action (Table.States (529), (13, 17, 28, 37, 73), (131, 0), 2, 
block_label_0'Access,
             block_label_0_check'Access);
             Table.States (529).Kernel := To_Vector ((0 => (131, 81, 0, 
False)));
             Table.States (529).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 131, 2)));
+            Table.States (530).Action_List.Set_Capacity (29);
             Add_Action (Table.States (530), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
26, 27, 28, 31, 32, 37, 41, 43, 48, 52,
             57, 58, 61, 68, 72, 73, 93, 104, 105, 106), (299, 0), 2, null, 
null);
             Table.States (530).Kernel := To_Vector ((0 => (299, 306, 0, 
True)));
             Table.States (530).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 299, 2)));
             Table.States (530).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (531), 24, 681);
-            Add_Error (Table.States (531));
+            Table.States (531).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (531), 24, 683);
             Table.States (531).Kernel := To_Vector ((0 => (152, 300, 3, 
False)));
-            Table.States (531).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 681)));
-            Add_Action (Table.States (532), 24, 682);
-            Add_Error (Table.States (532));
+            Table.States (531).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 683)));
+            Table.States (532).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (532), 24, 684);
             Table.States (532).Kernel := To_Vector ((0 => (323, 160, 3, 
False)));
-            Table.States (532).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 682)));
+            Table.States (532).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 684)));
+            Table.States (533).Action_List.Set_Capacity (25);
             Add_Action (Table.States (533), 4, 1);
             Add_Action (Table.States (533), 5, 2);
             Add_Action (Table.States (533), 13, Reduce, (132, 1), 0, null, 
null);
@@ -6857,7 +7231,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (533), 104, 360);
             Add_Action (Table.States (533), 105, 33);
             Add_Action (Table.States (533), 106, 34);
-            Add_Error (Table.States (533));
+            Table.States (533).Goto_List.Set_Capacity (31);
             Add_Goto (Table.States (533), 113, 36);
             Add_Goto (Table.States (533), 123, 38);
             Add_Goto (Table.States (533), 126, 39);
@@ -6884,25 +7258,27 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (533), 294, 98);
             Add_Goto (Table.States (533), 298, 99);
             Add_Goto (Table.States (533), 299, 361);
-            Add_Goto (Table.States (533), 300, 683);
+            Add_Goto (Table.States (533), 300, 685);
             Add_Goto (Table.States (533), 302, 100);
             Add_Goto (Table.States (533), 303, 101);
             Add_Goto (Table.States (533), 306, 363);
             Add_Goto (Table.States (533), 323, 114);
             Table.States (533).Kernel := To_Vector ((0 => (160, 161, 0, 
False)));
             Table.States (533).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (534).Action_List.Set_Capacity (3);
             Add_Action (Table.States (534), (22, 24, 43), (296, 0), 3, 
select_alternative_list_0'Access, null);
             Table.States (534).Kernel := To_Vector ((0 => (296, 295, 0, 
True)));
             Table.States (534).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 296, 3)));
             Table.States (534).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (535), 24, 684);
-            Add_Error (Table.States (535));
+            Table.States (535).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (535), 24, 686);
             Table.States (535).Kernel := To_Vector ((0 => (294, 300, 3, 
False)));
-            Table.States (535).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 684)));
-            Add_Action (Table.States (536), 96, 685);
-            Add_Error (Table.States (536));
+            Table.States (535).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 686)));
+            Table.States (536).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (536), 96, 687);
             Table.States (536).Kernel := To_Vector ((0 => (294, 61, 1, 
False)));
-            Table.States (536).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 685)));
+            Table.States (536).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 687)));
+            Table.States (537).Action_List.Set_Capacity (23);
             Add_Action (Table.States (537), 4, 1);
             Add_Action (Table.States (537), 5, 2);
             Add_Action (Table.States (537), 13, Reduce, (132, 1), 0, null, 
null);
@@ -6926,7 +7302,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (537), 104, 360);
             Add_Action (Table.States (537), 105, 33);
             Add_Action (Table.States (537), 106, 34);
-            Add_Error (Table.States (537));
+            Table.States (537).Goto_List.Set_Capacity (31);
             Add_Goto (Table.States (537), 113, 36);
             Add_Goto (Table.States (537), 123, 38);
             Add_Goto (Table.States (537), 126, 39);
@@ -6953,41 +7329,44 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (537), 294, 98);
             Add_Goto (Table.States (537), 298, 99);
             Add_Goto (Table.States (537), 299, 361);
-            Add_Goto (Table.States (537), 300, 686);
+            Add_Goto (Table.States (537), 300, 688);
             Add_Goto (Table.States (537), 302, 100);
             Add_Goto (Table.States (537), 303, 101);
             Add_Goto (Table.States (537), 306, 363);
             Add_Goto (Table.States (537), 323, 114);
             Table.States (537).Kernel := To_Vector ((0 => (126, 5, 3, False)));
             Table.States (537).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (538).Action_List.Set_Capacity (2);
             Add_Action (Table.States (538), 74, 337);
             Add_Action (Table.States (538), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (538));
-            Add_Goto (Table.States (538), 122, 687);
+            Table.States (538).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (538), 122, 689);
             Table.States (538).Kernel := To_Vector ((0 => (313, 314, 1, 
False)));
             Table.States (538).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (539), 60, 688);
-            Add_Error (Table.States (539));
+            Table.States (539).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (539), 60, 690);
             Table.States (539).Kernel := To_Vector ((0 => (317, 35, 2, 
False)));
-            Table.States (539).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 60, 688)));
-            Add_Action (Table.States (540), 35, 689);
-            Add_Error (Table.States (540));
+            Table.States (539).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 60, 690)));
+            Table.States (540).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (540), 35, 691);
             Table.States (540).Kernel := To_Vector ((0 => (316, 122, 4, 
False)));
-            Table.States (540).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 689)));
+            Table.States (540).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 691)));
+            Table.States (541).Action_List.Set_Capacity (3);
             Add_Action (Table.States (541), 35, Reduce, (122, 1), 0, null, 
null);
             Add_Action (Table.States (541), 74, 337);
             Add_Action (Table.States (541), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (541));
-            Add_Goto (Table.States (541), 122, 690);
+            Table.States (541).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (541), 122, 692);
             Table.States (541).Kernel := To_Vector (((319, 169, 6, False), 
(319, 169, 3, False), (319, 169, 1,
             False)));
             Table.States (541).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (542).Action_List.Set_Capacity (18);
             Add_Action (Table.States (542), 24, Reduce, (159, 1), 0, null, 
null);
             Add_Action (Table.States (542), 25, Reduce, (246, 2), 0, null, 
null);
             Add_Action (Table.States (542), 28, 183);
             Add_Action (Table.States (542), 29, Reduce, (246, 2), 0, null, 
null);
             Add_Action (Table.States (542), 30, 8);
-            Add_Action (Table.States (542), 39, 691);
+            Add_Action (Table.States (542), 39, 693);
             Add_Action (Table.States (542), 40, 12);
             Add_Action (Table.States (542), 46, 14);
             Add_Action (Table.States (542), 47, 15);
@@ -7000,7 +7379,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (542), 69, 27);
             Add_Action (Table.States (542), 71, 28);
             Add_Action (Table.States (542), 104, 185);
-            Add_Error (Table.States (542));
+            Table.States (542).Goto_List.Set_Capacity (54);
             Add_Goto (Table.States (542), 112, 35);
             Add_Goto (Table.States (542), 121, 37);
             Add_Goto (Table.States (542), 127, 40);
@@ -7008,7 +7387,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (542), 135, 46);
             Add_Goto (Table.States (542), 157, 391);
             Add_Goto (Table.States (542), 158, 392);
-            Add_Goto (Table.States (542), 159, 692);
+            Add_Goto (Table.States (542), 159, 694);
             Add_Goto (Table.States (542), 179, 54);
             Add_Goto (Table.States (542), 182, 55);
             Add_Goto (Table.States (542), 186, 56);
@@ -7051,95 +7430,98 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (542), 313, 109);
             Add_Goto (Table.States (542), 316, 111);
             Add_Goto (Table.States (542), 317, 112);
-            Add_Goto (Table.States (542), 318, 693);
+            Add_Goto (Table.States (542), 318, 695);
             Add_Goto (Table.States (542), 319, 113);
             Add_Goto (Table.States (542), 325, 115);
             Add_Goto (Table.States (542), 331, 116);
             Table.States (542).Kernel := To_Vector (((305, 35, 5, False), 
(305, 35, 2, False)));
             Table.States (542).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 318, 0)));
+            Table.States (543).Action_List.Set_Capacity (40);
             Add_Action (Table.States (543), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (305, 2), 4,
             single_task_declaration_2'Access, null);
             Table.States (543).Kernel := To_Vector ((0 => (305, 96, 0, 
False)));
             Table.States (543).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 305, 4)));
-            Add_Action (Table.States (544), 77, 694);
-            Add_Error (Table.States (544));
+            Table.States (544).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (544), 77, 696);
             Table.States (544).Kernel := To_Vector ((0 => (169, 80, 1, 
False)));
-            Table.States (544).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 694)));
+            Table.States (544).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 696)));
+            Table.States (545).Action_List.Set_Capacity (2);
             Add_Action (Table.States (545), (77, 96), (171, 1), 1, null, null);
             Table.States (545).Kernel := To_Vector ((0 => (171, 170, 0, 
False)));
             Table.States (545).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 171, 1)));
-            Add_Action (Table.States (546), 77, 695);
-            Add_Action (Table.States (546), 96, 696);
-            Add_Error (Table.States (546));
+            Table.States (546).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (546), 77, 697);
+            Add_Action (Table.States (546), 96, 698);
             Table.States (546).Kernel := To_Vector (((169, 171, 1, False), 
(171, 171, 1, True)));
-            Table.States (546).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 695)));
-            Add_Action (Table.States (547), 81, 697);
+            Table.States (546).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 697)));
+            Table.States (547).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (547), 81, 699);
             Add_Action (Table.States (547), 83, 234);
-            Add_Error (Table.States (547));
             Table.States (547).Kernel := To_Vector (((170, 219, 3, False), 
(170, 219, 4, False), (170, 219, 2, False),
             (170, 219, 3, False), (219, 219, 2, True)));
-            Table.States (547).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 697)));
-            Add_Action (Table.States (548), 6, 698);
+            Table.States (547).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 699)));
+            Table.States (548).Action_List.Set_Capacity (19);
+            Add_Action (Table.States (548), 6, 700);
             Add_Action (Table.States (548), 7, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (548), 11, 699);
-            Add_Action (Table.States (548), 19, 700);
-            Add_Action (Table.States (548), 20, 701);
-            Add_Action (Table.States (548), 34, 702);
-            Add_Action (Table.States (548), 36, 703);
-            Add_Action (Table.States (548), 38, 704);
+            Add_Action (Table.States (548), 11, 701);
+            Add_Action (Table.States (548), 19, 702);
+            Add_Action (Table.States (548), 20, 703);
+            Add_Action (Table.States (548), 34, 704);
+            Add_Action (Table.States (548), 36, 705);
+            Add_Action (Table.States (548), 38, 706);
             Add_Action (Table.States (548), 39, Reduce, (109, 5), 0, null, 
null);
             Add_Conflict (Table.States (548), 39, (110, 3), 0, null, null);
             Add_Action (Table.States (548), 40, 386);
             Add_Action (Table.States (548), 41, Reduce, (111, 5), 0, null, 
null);
             Add_Action (Table.States (548), 49, Reduce, (111, 5), 0, null, 
null);
-            Add_Action (Table.States (548), 51, 706);
-            Add_Action (Table.States (548), 53, 707);
+            Add_Action (Table.States (548), 51, 708);
+            Add_Action (Table.States (548), 53, 709);
             Add_Action (Table.States (548), 54, Reduce, (111, 5), 0, null, 
null);
-            Add_Action (Table.States (548), 64, 709);
-            Add_Action (Table.States (548), 65, 710);
-            Add_Action (Table.States (548), 66, 711);
-            Add_Action (Table.States (548), 76, 712);
-            Add_Error (Table.States (548));
-            Add_Goto (Table.States (548), 109, 713);
-            Add_Goto (Table.States (548), 110, 714);
-            Add_Goto (Table.States (548), 111, 715);
-            Add_Goto (Table.States (548), 114, 716);
-            Add_Goto (Table.States (548), 120, 717);
-            Add_Goto (Table.States (548), 162, 718);
-            Add_Goto (Table.States (548), 183, 719);
-            Add_Goto (Table.States (548), 228, 720);
-            Add_Goto (Table.States (548), 241, 721);
-            Add_Goto (Table.States (548), 326, 722);
+            Add_Action (Table.States (548), 64, 711);
+            Add_Action (Table.States (548), 65, 712);
+            Add_Action (Table.States (548), 66, 713);
+            Add_Action (Table.States (548), 76, 714);
+            Table.States (548).Goto_List.Set_Capacity (10);
+            Add_Goto (Table.States (548), 109, 715);
+            Add_Goto (Table.States (548), 110, 716);
+            Add_Goto (Table.States (548), 111, 717);
+            Add_Goto (Table.States (548), 114, 718);
+            Add_Goto (Table.States (548), 120, 719);
+            Add_Goto (Table.States (548), 162, 720);
+            Add_Goto (Table.States (548), 183, 721);
+            Add_Goto (Table.States (548), 228, 722);
+            Add_Goto (Table.States (548), 241, 723);
+            Add_Goto (Table.States (548), 326, 724);
             Table.States (548).Kernel := To_Vector (((206, 35, 2, False), 
(223, 35, 2, False), (259, 35, 5, False),
             (260, 35, 2, False)));
-            Table.States (548).Minimal_Complete_Actions := To_Vector (((Shift, 
38, 704), (Shift, 65, 710), (Reduce,
+            Table.States (548).Minimal_Complete_Actions := To_Vector (((Shift, 
38, 706), (Shift, 65, 712), (Reduce,
             111, 0)));
+            Table.States (549).Action_List.Set_Capacity (40);
             Add_Action (Table.States (549), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (223, 1), 4,
             incomplete_type_declaration_1'Access, null);
             Table.States (549).Kernel := To_Vector ((0 => (223, 96, 0, 
False)));
             Table.States (549).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 223, 4)));
+            Table.States (550).Action_List.Set_Capacity (2);
             Add_Action (Table.States (550), 83, 381);
-            Add_Action (Table.States (550), 96, 723);
-            Add_Error (Table.States (550));
+            Add_Action (Table.States (550), 96, 725);
             Table.States (550).Kernel := To_Vector (((238, 238, 2, True), 
(331, 238, 1, False)));
-            Table.States (550).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 723)));
+            Table.States (550).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 725)));
+            Table.States (551).Action_List.Set_Capacity (40);
             Add_Action (Table.States (551), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (331, 1), 4,
             use_clause_1'Access, null);
             Table.States (551).Kernel := To_Vector ((0 => (331, 96, 0, 
False)));
             Table.States (551).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 331, 4)));
-         end Subr_10;
-         procedure Subr_11
-         is begin
+            Table.States (552).Action_List.Set_Capacity (6);
             Add_Action (Table.States (552), 76, 235);
             Add_Action (Table.States (552), 83, Reduce, (238, 0), 3, null, 
null);
             Add_Action (Table.States (552), 84, 237);
             Add_Action (Table.States (552), 96, Reduce, (238, 0), 3, null, 
null);
             Add_Action (Table.States (552), 101, 239);
             Add_Action (Table.States (552), 102, 240);
-            Add_Error (Table.States (552));
+            Table.States (552).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (552), 115, 241);
             Add_Goto (Table.States (552), 322, 242);
             Table.States (552).Kernel := To_Vector (((128, 239, 2, True), 
(238, 239, 0, True), (239, 239, 5, True),
@@ -7147,81 +7529,94 @@ package body Ada_Process_LALR_Main is
             (293, 239, 2, True)));
             Table.States (552).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 238, 3)));
             Table.States (552).Minimal_Complete_Actions_Recursive := True;
+         end Subr_10;
+         procedure Subr_11
+         is begin
+            Table.States (553).Action_List.Set_Capacity (3);
             Add_Action (Table.States (553), 104, 119);
             Add_Action (Table.States (553), 105, 33);
             Add_Action (Table.States (553), 106, 34);
-            Add_Error (Table.States (553));
+            Table.States (553).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (553), 128, 41);
-            Add_Goto (Table.States (553), 239, 724);
+            Add_Goto (Table.States (553), 239, 726);
             Add_Goto (Table.States (553), 272, 92);
             Add_Goto (Table.States (553), 293, 97);
             Table.States (553).Kernel := To_Vector ((0 => (245, 56, 2, 
False)));
             Table.States (553).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (554).Action_List.Set_Capacity (11);
             Add_Action (Table.States (554), (7, 21, 35, 56, 74, 77, 82, 96, 
104, 105, 106), (241, 0), 2, null, null);
             Table.States (554).Kernel := To_Vector ((0 => (241, 41, 0, 
False)));
             Table.States (554).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 2)));
+            Table.States (555).Action_List.Set_Capacity (3);
             Add_Action (Table.States (555), 104, 119);
             Add_Action (Table.States (555), 105, 33);
             Add_Action (Table.States (555), 106, 34);
-            Add_Error (Table.States (555));
+            Table.States (555).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (555), 128, 41);
-            Add_Goto (Table.States (555), 239, 725);
+            Add_Goto (Table.States (555), 239, 727);
             Add_Goto (Table.States (555), 272, 92);
             Add_Goto (Table.States (555), 293, 97);
             Table.States (555).Kernel := To_Vector ((0 => (245, 56, 2, 
False)));
             Table.States (555).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (556), 9, 726);
-            Add_Action (Table.States (556), 16, 727);
+            Table.States (556).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (556), 9, 728);
+            Add_Action (Table.States (556), 16, 729);
             Add_Action (Table.States (556), 29, Reduce, (270, 1), 0, null, 
null);
             Add_Action (Table.States (556), 50, Reduce, (270, 1), 0, null, 
null);
-            Add_Action (Table.States (556), 51, 728);
+            Add_Action (Table.States (556), 51, 730);
             Add_Action (Table.States (556), 104, Reduce, (208, 2), 0, null, 
null);
             Add_Action (Table.States (556), 105, Reduce, (208, 2), 0, null, 
null);
             Add_Action (Table.States (556), 106, Reduce, (208, 2), 0, null, 
null);
-            Add_Error (Table.States (556));
-            Add_Goto (Table.States (556), 208, 729);
-            Add_Goto (Table.States (556), 270, 730);
+            Table.States (556).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (556), 208, 731);
+            Add_Goto (Table.States (556), 270, 732);
             Table.States (556).Kernel := To_Vector (((114, 7, 1, False), (114, 
7, 2, True), (114, 7, 1, False)));
             Table.States (556).Minimal_Complete_Actions := To_Vector 
(((Reduce, 270, 0), (Reduce, 208, 0)));
             Table.States (556).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (557), 56, 731);
+            Table.States (557).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (557), 56, 733);
             Add_Action (Table.States (557), 76, 235);
             Add_Action (Table.States (557), 84, 237);
             Add_Action (Table.States (557), 101, 239);
             Add_Action (Table.States (557), 102, 240);
-            Add_Error (Table.States (557));
+            Table.States (557).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (557), 115, 241);
             Add_Goto (Table.States (557), 322, 242);
             Table.States (557).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (245, 239, 3, False), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (557).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 56, 731)));
+            Table.States (557).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 56, 733)));
+            Table.States (558).Action_List.Set_Capacity (2);
             Add_Action (Table.States (558), 96, Reduce, (220, 1), 0, null, 
null);
             Add_Action (Table.States (558), 104, 149);
-            Add_Error (Table.States (558));
-            Add_Goto (Table.States (558), 220, 732);
+            Table.States (558).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (558), 220, 734);
             Table.States (558).Kernel := To_Vector ((0 => (133, 24, 1, 
False)));
             Table.States (558).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (559).Action_List.Set_Capacity (3);
             Add_Action (Table.States (559), 24, Reduce, (189, 1), 0, null, 
null);
             Add_Action (Table.States (559), 48, 16);
-            Add_Action (Table.States (559), 72, 733);
-            Add_Error (Table.States (559));
-            Add_Goto (Table.States (559), 187, 734);
-            Add_Goto (Table.States (559), 188, 735);
-            Add_Goto (Table.States (559), 189, 736);
-            Add_Goto (Table.States (559), 257, 737);
+            Add_Action (Table.States (559), 72, 735);
+            Table.States (559).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (559), 187, 736);
+            Add_Goto (Table.States (559), 188, 737);
+            Add_Goto (Table.States (559), 189, 738);
+            Add_Goto (Table.States (559), 257, 739);
             Table.States (559).Kernel := To_Vector ((0 => (218, 26, 0, 
False)));
             Table.States (559).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 189, 0)));
+            Table.States (560).Action_List.Set_Capacity (18);
             Add_Action (Table.States (560), (13, 24, 25, 28, 29, 30, 40, 46, 
47, 48, 49, 50, 51, 63, 66, 69, 71, 104),
             (158, 0), 2, null, null);
             Table.States (560).Kernel := To_Vector ((0 => (158, 157, 0, 
True)));
             Table.States (560).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 2)));
             Table.States (560).Minimal_Complete_Actions_Recursive := True;
+            Table.States (561).Action_List.Set_Capacity (18);
             Add_Action (Table.States (561), (13, 24, 25, 28, 29, 30, 40, 46, 
47, 48, 49, 50, 51, 63, 66, 69, 71, 104),
             (158, 1), 2, null, null);
             Table.States (561).Kernel := To_Vector ((0 => (158, 257, 0, 
True)));
             Table.States (561).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 2)));
             Table.States (561).Minimal_Complete_Actions_Recursive := True;
+            Table.States (562).Action_List.Set_Capacity (24);
             Add_Action (Table.States (562), 4, 1);
             Add_Action (Table.States (562), 5, 2);
             Add_Action (Table.States (562), 13, Reduce, (132, 1), 0, null, 
null);
@@ -7246,7 +7641,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (562), 104, 360);
             Add_Action (Table.States (562), 105, 33);
             Add_Action (Table.States (562), 106, 34);
-            Add_Error (Table.States (562));
+            Table.States (562).Goto_List.Set_Capacity (32);
             Add_Goto (Table.States (562), 113, 36);
             Add_Goto (Table.States (562), 123, 38);
             Add_Goto (Table.States (562), 126, 39);
@@ -7261,7 +7656,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (562), 190, 57);
             Add_Goto (Table.States (562), 196, 59);
             Add_Goto (Table.States (562), 217, 68);
-            Add_Goto (Table.States (562), 218, 738);
+            Add_Goto (Table.States (562), 218, 740);
             Add_Goto (Table.States (562), 222, 70);
             Add_Goto (Table.States (562), 232, 72);
             Add_Goto (Table.States (562), 239, 73);
@@ -7281,19 +7676,21 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (562), 323, 114);
             Table.States (562).Kernel := To_Vector ((0 => (133, 13, 2, 
False)));
             Table.States (562).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 218, 0)));
-            Add_Action (Table.States (563), 37, 739);
-            Add_Error (Table.States (563));
+            Table.States (563).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (563), 37, 741);
             Table.States (563).Kernel := To_Vector ((0 => (232, 24, 2, 
False)));
-            Table.States (563).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 739)));
-            Add_Action (Table.States (564), 24, 740);
-            Add_Error (Table.States (564));
+            Table.States (563).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 741)));
+            Table.States (564).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (564), 24, 742);
             Table.States (564).Kernel := To_Vector ((0 => (232, 300, 3, 
False)));
-            Table.States (564).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 740)));
+            Table.States (564).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 742)));
+            Table.States (565).Action_List.Set_Capacity (40);
             Add_Action (Table.States (565), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (216, 0), 4,
             generic_subprogram_declaration_0'Access, null);
             Table.States (565).Kernel := To_Vector ((0 => (216, 96, 0, 
False)));
             Table.States (565).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 216, 4)));
+            Table.States (566).Action_List.Set_Capacity (13);
             Add_Action (Table.States (566), 3, 121);
             Add_Action (Table.States (566), 39, 122);
             Add_Action (Table.States (566), 40, 123);
@@ -7307,11 +7704,11 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (566), 104, 119);
             Add_Action (Table.States (566), 105, 33);
             Add_Action (Table.States (566), 106, 34);
-            Add_Error (Table.States (566));
+            Table.States (566).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (566), 117, 130);
             Add_Goto (Table.States (566), 128, 41);
             Add_Goto (Table.States (566), 191, 131);
-            Add_Goto (Table.States (566), 192, 741);
+            Add_Goto (Table.States (566), 192, 743);
             Add_Goto (Table.States (566), 197, 133);
             Add_Goto (Table.States (566), 239, 134);
             Add_Goto (Table.States (566), 258, 135);
@@ -7330,44 +7727,50 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (566), 330, 146);
             Table.States (566).Kernel := To_Vector ((0 => (157, 82, 1, 
False)));
             Table.States (566).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (567).Action_List.Set_Capacity (40);
             Add_Action (Table.States (567), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (186, 0), 4,
             exception_declaration_0'Access, null);
             Table.States (567).Kernel := To_Vector ((0 => (186, 96, 0, 
False)));
             Table.States (567).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 186, 4)));
+            Table.States (568).Action_List.Set_Capacity (10);
             Add_Action (Table.States (568), (7, 11, 21, 40, 74, 82, 96, 104, 
105, 106), (154, 0), 1, null, null);
             Table.States (568).Kernel := To_Vector ((0 => (154, 16, 0, 
False)));
             Table.States (568).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 154, 1)));
+            Table.States (569).Action_List.Set_Capacity (6);
             Add_Action (Table.States (569), 7, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (569), 11, 699);
-            Add_Action (Table.States (569), 40, 742);
+            Add_Action (Table.States (569), 11, 701);
+            Add_Action (Table.States (569), 40, 744);
             Add_Action (Table.States (569), 104, 119);
             Add_Action (Table.States (569), 105, 33);
             Add_Action (Table.States (569), 106, 34);
-            Add_Error (Table.States (569));
-            Add_Goto (Table.States (569), 114, 743);
-            Add_Goto (Table.States (569), 120, 744);
+            Table.States (569).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (569), 114, 745);
+            Add_Goto (Table.States (569), 120, 746);
             Add_Goto (Table.States (569), 128, 41);
             Add_Goto (Table.States (569), 239, 484);
-            Add_Goto (Table.States (569), 241, 721);
+            Add_Goto (Table.States (569), 241, 723);
             Add_Goto (Table.States (569), 272, 92);
             Add_Goto (Table.States (569), 293, 97);
-            Add_Goto (Table.States (569), 314, 745);
+            Add_Goto (Table.States (569), 314, 747);
             Table.States (569).Kernel := To_Vector (((244, 154, 3, False), 
(244, 154, 4, False), (244, 154, 10, False),
             (244, 154, 2, False), (244, 154, 3, False), (244, 154, 9, False)));
             Table.States (569).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (570).Action_List.Set_Capacity (63);
             Add_Action (Table.States (570), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (115, 0), 3,
             actual_parameter_part_0'Access, null);
             Table.States (570).Kernel := To_Vector ((0 => (115, 77, 0, 
False)));
             Table.States (570).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 115, 3)));
+            Table.States (571).Action_List.Set_Capacity (63);
             Add_Action (Table.States (571), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (115, 1), 3,
             actual_parameter_part_1'Access, null);
             Table.States (571).Kernel := To_Vector ((0 => (115, 77, 0, 
False)));
             Table.States (571).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 115, 3)));
+            Table.States (572).Action_List.Set_Capacity (63);
             Add_Action (Table.States (572), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (239, 0), 4, name_0'Access,
@@ -7375,6 +7778,7 @@ package body Ada_Process_LALR_Main is
             Table.States (572).Kernel := To_Vector ((0 => (239, 77, 0, True)));
             Table.States (572).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 4)));
             Table.States (572).Minimal_Complete_Actions_Recursive := True;
+            Table.States (573).Action_List.Set_Capacity (11);
             Add_Action (Table.States (573), 3, 121);
             Add_Action (Table.States (573), 39, 122);
             Add_Action (Table.States (573), 40, 123);
@@ -7386,14 +7790,14 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (573), 104, 119);
             Add_Action (Table.States (573), 105, 33);
             Add_Action (Table.States (573), 106, 34);
-            Add_Error (Table.States (573));
+            Table.States (573).Goto_List.Set_Capacity (12);
             Add_Goto (Table.States (573), 117, 130);
             Add_Goto (Table.States (573), 128, 41);
             Add_Goto (Table.States (573), 197, 133);
             Add_Goto (Table.States (573), 239, 274);
             Add_Goto (Table.States (573), 258, 135);
             Add_Goto (Table.States (573), 272, 92);
-            Add_Goto (Table.States (573), 277, 746);
+            Add_Goto (Table.States (573), 277, 748);
             Add_Goto (Table.States (573), 293, 97);
             Add_Goto (Table.States (573), 301, 479);
             Add_Goto (Table.States (573), 320, 144);
@@ -7402,3734 +7806,4009 @@ package body Ada_Process_LALR_Main is
             Table.States (573).Kernel := To_Vector ((0 => (278, 83, 3, True)));
             Table.States (573).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
             Table.States (573).Minimal_Complete_Actions_Recursive := True;
+            Table.States (574).Action_List.Set_Capacity (46);
             Add_Action (Table.States (574), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (123, 0), 4, assignment_statement_0'Access, null);
             Table.States (574).Kernel := To_Vector ((0 => (123, 96, 0, 
False)));
             Table.States (574).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 4)));
+            Table.States (575).Action_List.Set_Capacity (12);
             Add_Action (Table.States (575), 3, 121);
             Add_Action (Table.States (575), 39, 122);
-            Add_Action (Table.States (575), 40, 474);
+            Add_Action (Table.States (575), 40, 123);
             Add_Action (Table.States (575), 41, 124);
+            Add_Action (Table.States (575), 52, 125);
             Add_Action (Table.States (575), 76, 126);
-            Add_Action (Table.States (575), 77, Reduce, (254, 4), 0, null, 
null);
             Add_Action (Table.States (575), 94, 127);
             Add_Action (Table.States (575), 95, 128);
-            Add_Action (Table.States (575), 96, Reduce, (254, 4), 0, null, 
null);
             Add_Action (Table.States (575), 103, 129);
-            Add_Action (Table.States (575), 104, 492);
+            Add_Action (Table.States (575), 104, 119);
             Add_Action (Table.States (575), 105, 33);
             Add_Action (Table.States (575), 106, 34);
-            Add_Error (Table.States (575));
+            Table.States (575).Goto_List.Set_Capacity (19);
             Add_Goto (Table.States (575), 117, 130);
             Add_Goto (Table.States (575), 128, 41);
-            Add_Goto (Table.States (575), 167, 747);
+            Add_Goto (Table.States (575), 191, 749);
             Add_Goto (Table.States (575), 197, 133);
-            Add_Goto (Table.States (575), 219, 493);
-            Add_Goto (Table.States (575), 239, 477);
-            Add_Goto (Table.States (575), 254, 494);
-            Add_Goto (Table.States (575), 255, 495);
+            Add_Goto (Table.States (575), 239, 134);
             Add_Goto (Table.States (575), 258, 135);
             Add_Goto (Table.States (575), 272, 92);
-            Add_Goto (Table.States (575), 277, 478);
+            Add_Goto (Table.States (575), 275, 136);
+            Add_Goto (Table.States (575), 282, 137);
+            Add_Goto (Table.States (575), 283, 138);
+            Add_Goto (Table.States (575), 284, 139);
+            Add_Goto (Table.States (575), 285, 140);
+            Add_Goto (Table.States (575), 286, 141);
+            Add_Goto (Table.States (575), 287, 142);
             Add_Goto (Table.States (575), 293, 97);
-            Add_Goto (Table.States (575), 301, 479);
-            Add_Goto (Table.States (575), 314, 480);
+            Add_Goto (Table.States (575), 301, 143);
             Add_Goto (Table.States (575), 320, 144);
             Add_Goto (Table.States (575), 321, 145);
             Add_Goto (Table.States (575), 330, 146);
-            Table.States (575).Kernel := To_Vector (((179, 76, 3, False), 
(199, 76, 1, False)));
-            Table.States (575).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 255, 0)));
-            Add_Action (Table.States (576), 74, 337);
-            Add_Action (Table.States (576), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (576));
-            Add_Goto (Table.States (576), 122, 748);
-            Table.States (576).Kernel := To_Vector ((0 => (179, 253, 1, 
False)));
-            Table.States (576).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (577), 39, 749);
-            Add_Error (Table.States (577));
-            Table.States (577).Kernel := To_Vector ((0 => (213, 35, 3, 
False)));
-            Table.States (577).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 749)));
-            Add_Action (Table.States (578), 39, 750);
-            Add_Error (Table.States (578));
+            Table.States (575).Kernel := To_Vector ((0 => (129, 76, 2, 
False)));
+            Table.States (575).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (576).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (576), 3, 121);
+            Add_Action (Table.States (576), 39, 122);
+            Add_Action (Table.States (576), 40, 474);
+            Add_Action (Table.States (576), 41, 124);
+            Add_Action (Table.States (576), 76, 126);
+            Add_Action (Table.States (576), 77, Reduce, (254, 4), 0, null, 
null);
+            Add_Action (Table.States (576), 94, 127);
+            Add_Action (Table.States (576), 95, 128);
+            Add_Action (Table.States (576), 96, Reduce, (254, 4), 0, null, 
null);
+            Add_Action (Table.States (576), 103, 129);
+            Add_Action (Table.States (576), 104, 492);
+            Add_Action (Table.States (576), 105, 33);
+            Add_Action (Table.States (576), 106, 34);
+            Table.States (576).Goto_List.Set_Capacity (17);
+            Add_Goto (Table.States (576), 117, 130);
+            Add_Goto (Table.States (576), 128, 41);
+            Add_Goto (Table.States (576), 167, 750);
+            Add_Goto (Table.States (576), 197, 133);
+            Add_Goto (Table.States (576), 219, 493);
+            Add_Goto (Table.States (576), 239, 477);
+            Add_Goto (Table.States (576), 254, 494);
+            Add_Goto (Table.States (576), 255, 495);
+            Add_Goto (Table.States (576), 258, 135);
+            Add_Goto (Table.States (576), 272, 92);
+            Add_Goto (Table.States (576), 277, 478);
+            Add_Goto (Table.States (576), 293, 97);
+            Add_Goto (Table.States (576), 301, 479);
+            Add_Goto (Table.States (576), 314, 480);
+            Add_Goto (Table.States (576), 320, 144);
+            Add_Goto (Table.States (576), 321, 145);
+            Add_Goto (Table.States (576), 330, 146);
+            Table.States (576).Kernel := To_Vector (((179, 76, 3, False), 
(199, 76, 1, False)));
+            Table.States (576).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 255, 0)));
+            Table.States (577).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (577), 74, 337);
+            Add_Action (Table.States (577), 96, Reduce, (122, 1), 0, null, 
null);
+            Table.States (577).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (577), 122, 751);
+            Table.States (577).Kernel := To_Vector ((0 => (179, 253, 1, 
False)));
+            Table.States (577).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (578).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (578), 39, 752);
             Table.States (578).Kernel := To_Vector ((0 => (213, 35, 3, 
False)));
-            Table.States (578).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 750)));
-            Add_Action (Table.States (579), 3, 121);
-            Add_Action (Table.States (579), 15, 258);
-            Add_Action (Table.States (579), 28, 259);
-            Add_Action (Table.States (579), 32, 260);
-            Add_Action (Table.States (579), 39, 122);
-            Add_Action (Table.States (579), 40, 261);
-            Add_Action (Table.States (579), 41, 124);
-            Add_Action (Table.States (579), 44, 263);
-            Add_Action (Table.States (579), 52, 125);
-            Add_Action (Table.States (579), 76, 126);
-            Add_Action (Table.States (579), 77, Reduce, (124, 5), 0, null, 
null);
-            Add_Conflict (Table.States (579), 77, (192, 1), 0, null, null);
-            Add_Action (Table.States (579), 79, Reduce, (166, 2), 0, null, 
null);
-            Add_Action (Table.States (579), 83, Reduce, (124, 5), 0, null, 
null);
-            Add_Action (Table.States (579), 87, Reduce, (166, 2), 0, null, 
null);
-            Add_Action (Table.States (579), 94, 127);
-            Add_Action (Table.States (579), 95, 128);
-            Add_Action (Table.States (579), 103, 129);
-            Add_Action (Table.States (579), 104, 119);
-            Add_Action (Table.States (579), 105, 33);
-            Add_Action (Table.States (579), 106, 264);
-            Add_Error (Table.States (579));
-            Add_Goto (Table.States (579), 117, 130);
-            Add_Goto (Table.States (579), 124, 265);
-            Add_Goto (Table.States (579), 125, 751);
-            Add_Goto (Table.States (579), 128, 41);
-            Add_Goto (Table.States (579), 136, 267);
-            Add_Goto (Table.States (579), 153, 752);
-            Add_Goto (Table.States (579), 165, 269);
-            Add_Goto (Table.States (579), 166, 270);
-            Add_Goto (Table.States (579), 191, 271);
-            Add_Goto (Table.States (579), 192, 753);
-            Add_Goto (Table.States (579), 197, 133);
-            Add_Goto (Table.States (579), 221, 273);
-            Add_Goto (Table.States (579), 239, 274);
-            Add_Goto (Table.States (579), 258, 135);
-            Add_Goto (Table.States (579), 272, 92);
-            Add_Goto (Table.States (579), 273, 275);
-            Add_Goto (Table.States (579), 275, 136);
-            Add_Goto (Table.States (579), 277, 276);
-            Add_Goto (Table.States (579), 282, 137);
-            Add_Goto (Table.States (579), 283, 138);
-            Add_Goto (Table.States (579), 284, 139);
-            Add_Goto (Table.States (579), 285, 140);
-            Add_Goto (Table.States (579), 286, 141);
-            Add_Goto (Table.States (579), 287, 142);
-            Add_Goto (Table.States (579), 293, 97);
-            Add_Goto (Table.States (579), 301, 277);
-            Add_Goto (Table.States (579), 320, 144);
-            Add_Goto (Table.States (579), 321, 145);
-            Add_Goto (Table.States (579), 330, 146);
-            Table.States (579).Kernel := To_Vector (((256, 76, 1, False), 
(256, 76, 1, False), (256, 76, 3, False)));
-            Table.States (579).Minimal_Complete_Actions := To_Vector 
(((Reduce, 192, 0), (Reduce, 125, 0)));
-            Add_Action (Table.States (580), 74, 337);
-            Add_Action (Table.States (580), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (580));
-            Add_Goto (Table.States (580), 122, 754);
-            Table.States (580).Kernel := To_Vector ((0 => (193, 256, 1, 
False)));
-            Table.States (580).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (581), 74, 337);
-            Add_Action (Table.States (581), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (581));
-            Add_Goto (Table.States (581), 122, 755);
-            Table.States (581).Kernel := To_Vector ((0 => (243, 41, 1, 
False)));
-            Table.States (581).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (578).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 752)));
+            Table.States (579).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (579), 39, 753);
+            Table.States (579).Kernel := To_Vector ((0 => (213, 35, 3, 
False)));
+            Table.States (579).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 753)));
+            Table.States (580).Action_List.Set_Capacity (21);
+            Add_Action (Table.States (580), 3, 121);
+            Add_Action (Table.States (580), 15, 258);
+            Add_Action (Table.States (580), 28, 259);
+            Add_Action (Table.States (580), 32, 260);
+            Add_Action (Table.States (580), 39, 122);
+            Add_Action (Table.States (580), 40, 261);
+            Add_Action (Table.States (580), 41, 262);
+            Add_Action (Table.States (580), 44, 263);
+            Add_Action (Table.States (580), 52, 125);
+            Add_Action (Table.States (580), 74, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (580), 76, 126);
+            Add_Action (Table.States (580), 77, Reduce, (124, 5), 0, null, 
null);
+            Add_Conflict (Table.States (580), 77, (192, 1), 0, null, null);
+            Add_Action (Table.States (580), 79, Reduce, (166, 2), 0, null, 
null);
+            Add_Action (Table.States (580), 83, Reduce, (124, 5), 0, null, 
null);
+            Add_Action (Table.States (580), 87, Reduce, (166, 2), 0, null, 
null);
+            Add_Action (Table.States (580), 94, 127);
+            Add_Action (Table.States (580), 95, 128);
+            Add_Action (Table.States (580), 103, 129);
+            Add_Action (Table.States (580), 104, 119);
+            Add_Action (Table.States (580), 105, 33);
+            Add_Action (Table.States (580), 106, 264);
+            Table.States (580).Goto_List.Set_Capacity (29);
+            Add_Goto (Table.States (580), 117, 130);
+            Add_Goto (Table.States (580), 124, 265);
+            Add_Goto (Table.States (580), 125, 266);
+            Add_Goto (Table.States (580), 128, 41);
+            Add_Goto (Table.States (580), 136, 267);
+            Add_Goto (Table.States (580), 153, 268);
+            Add_Goto (Table.States (580), 165, 269);
+            Add_Goto (Table.States (580), 166, 270);
+            Add_Goto (Table.States (580), 191, 271);
+            Add_Goto (Table.States (580), 192, 754);
+            Add_Goto (Table.States (580), 197, 133);
+            Add_Goto (Table.States (580), 221, 273);
+            Add_Goto (Table.States (580), 239, 274);
+            Add_Goto (Table.States (580), 258, 135);
+            Add_Goto (Table.States (580), 272, 92);
+            Add_Goto (Table.States (580), 273, 275);
+            Add_Goto (Table.States (580), 275, 136);
+            Add_Goto (Table.States (580), 277, 276);
+            Add_Goto (Table.States (580), 282, 137);
+            Add_Goto (Table.States (580), 283, 138);
+            Add_Goto (Table.States (580), 284, 139);
+            Add_Goto (Table.States (580), 285, 140);
+            Add_Goto (Table.States (580), 286, 141);
+            Add_Goto (Table.States (580), 287, 142);
+            Add_Goto (Table.States (580), 293, 97);
+            Add_Goto (Table.States (580), 301, 277);
+            Add_Goto (Table.States (580), 320, 144);
+            Add_Goto (Table.States (580), 321, 145);
+            Add_Goto (Table.States (580), 330, 146);
+            Table.States (580).Kernel := To_Vector (((117, 76, 4, False), 
(117, 76, 2, False), (117, 76, 3, False),
+            (117, 76, 3, False), (117, 76, 1, False), (256, 76, 1, False)));
+            Table.States (580).Minimal_Complete_Actions := To_Vector 
(((Reduce, 125, 0), (Reduce, 192, 0)));
+            Table.States (581).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (581), (74, 96), (256, 1), 1, null, null);
+            Table.States (581).Kernel := To_Vector ((0 => (256, 117, 0, 
False)));
+            Table.States (581).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 256, 1)));
+            Table.States (582).Action_List.Set_Capacity (2);
             Add_Action (Table.States (582), 74, 337);
             Add_Action (Table.States (582), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (582));
-            Add_Goto (Table.States (582), 122, 756);
-            Table.States (582).Kernel := To_Vector ((0 => (112, 6, 1, False)));
+            Table.States (582).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (582), 122, 755);
+            Table.States (582).Kernel := To_Vector ((0 => (193, 256, 1, 
False)));
             Table.States (582).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (583).Action_List.Set_Capacity (2);
             Add_Action (Table.States (583), 74, 337);
             Add_Action (Table.States (583), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (583));
-            Add_Goto (Table.States (583), 122, 757);
-            Table.States (583).Kernel := To_Vector ((0 => (308, 60, 1, 
False)));
+            Table.States (583).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (583), 122, 756);
+            Table.States (583).Kernel := To_Vector ((0 => (243, 41, 1, 
False)));
             Table.States (583).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (584).Action_List.Set_Capacity (2);
             Add_Action (Table.States (584), 74, 337);
-            Add_Action (Table.States (584), 76, 235);
-            Add_Action (Table.States (584), 84, 237);
             Add_Action (Table.States (584), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Action (Table.States (584), 101, 239);
-            Add_Action (Table.States (584), 102, 240);
-            Add_Error (Table.States (584));
-            Add_Goto (Table.States (584), 115, 241);
-            Add_Goto (Table.States (584), 122, 758);
-            Add_Goto (Table.States (584), 322, 242);
-            Table.States (584).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
+            Table.States (584).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (584), 122, 757);
+            Table.States (584).Kernel := To_Vector ((0 => (112, 6, 1, False)));
+            Table.States (584).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (585).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (585), 74, 337);
+            Add_Action (Table.States (585), 96, Reduce, (122, 1), 0, null, 
null);
+            Table.States (585).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (585), 122, 758);
+            Table.States (585).Kernel := To_Vector ((0 => (308, 60, 1, 
False)));
+            Table.States (585).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (586).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (586), 74, 337);
+            Add_Action (Table.States (586), 76, 235);
+            Add_Action (Table.States (586), 84, 237);
+            Add_Action (Table.States (586), 96, Reduce, (122, 1), 0, null, 
null);
+            Add_Action (Table.States (586), 101, 239);
+            Add_Action (Table.States (586), 102, 240);
+            Table.States (586).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (586), 115, 241);
+            Add_Goto (Table.States (586), 122, 759);
+            Add_Goto (Table.States (586), 322, 242);
+            Table.States (586).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (272, 239, 3, True), (293, 239, 2, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (311, 239, 1, False)));
-            Table.States (584).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (585), 13, Reduce, (159, 1), 0, null, 
null);
-            Add_Action (Table.States (585), 25, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (585), 28, 183);
-            Add_Action (Table.States (585), 29, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (585), 30, 8);
-            Add_Action (Table.States (585), 40, 12);
-            Add_Action (Table.States (585), 46, 14);
-            Add_Action (Table.States (585), 47, 15);
-            Add_Action (Table.States (585), 48, 16);
-            Add_Action (Table.States (585), 50, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (585), 51, 19);
-            Add_Action (Table.States (585), 63, 25);
-            Add_Action (Table.States (585), 66, 26);
-            Add_Action (Table.States (585), 69, 27);
-            Add_Action (Table.States (585), 71, 28);
-            Add_Action (Table.States (585), 104, 185);
-            Add_Error (Table.States (585));
-            Add_Goto (Table.States (585), 112, 35);
-            Add_Goto (Table.States (585), 121, 37);
-            Add_Goto (Table.States (585), 127, 40);
-            Add_Goto (Table.States (585), 134, 45);
-            Add_Goto (Table.States (585), 135, 46);
-            Add_Goto (Table.States (585), 157, 391);
-            Add_Goto (Table.States (585), 158, 392);
-            Add_Goto (Table.States (585), 159, 759);
-            Add_Goto (Table.States (585), 179, 54);
-            Add_Goto (Table.States (585), 182, 55);
-            Add_Goto (Table.States (585), 186, 56);
-            Add_Goto (Table.States (585), 193, 58);
-            Add_Goto (Table.States (585), 206, 60);
-            Add_Goto (Table.States (585), 207, 61);
-            Add_Goto (Table.States (585), 209, 62);
-            Add_Goto (Table.States (585), 210, 63);
-            Add_Goto (Table.States (585), 213, 64);
-            Add_Goto (Table.States (585), 214, 65);
-            Add_Goto (Table.States (585), 215, 66);
-            Add_Goto (Table.States (585), 216, 67);
-            Add_Goto (Table.States (585), 219, 69);
-            Add_Goto (Table.States (585), 223, 71);
-            Add_Goto (Table.States (585), 243, 74);
-            Add_Goto (Table.States (585), 244, 75);
-            Add_Goto (Table.States (585), 245, 76);
-            Add_Goto (Table.States (585), 246, 77);
-            Add_Goto (Table.States (585), 247, 78);
-            Add_Goto (Table.States (585), 248, 79);
-            Add_Goto (Table.States (585), 249, 80);
-            Add_Goto (Table.States (585), 250, 81);
-            Add_Goto (Table.States (585), 251, 82);
-            Add_Goto (Table.States (585), 257, 394);
-            Add_Goto (Table.States (585), 259, 84);
-            Add_Goto (Table.States (585), 260, 85);
-            Add_Goto (Table.States (585), 262, 87);
-            Add_Goto (Table.States (585), 263, 88);
-            Add_Goto (Table.States (585), 264, 89);
-            Add_Goto (Table.States (585), 265, 90);
-            Add_Goto (Table.States (585), 271, 91);
-            Add_Goto (Table.States (585), 281, 94);
-            Add_Goto (Table.States (585), 289, 95);
-            Add_Goto (Table.States (585), 304, 102);
-            Add_Goto (Table.States (585), 305, 103);
-            Add_Goto (Table.States (585), 307, 105);
-            Add_Goto (Table.States (585), 308, 106);
-            Add_Goto (Table.States (585), 309, 107);
-            Add_Goto (Table.States (585), 311, 108);
-            Add_Goto (Table.States (585), 313, 109);
-            Add_Goto (Table.States (585), 316, 111);
-            Add_Goto (Table.States (585), 317, 112);
-            Add_Goto (Table.States (585), 319, 113);
-            Add_Goto (Table.States (585), 325, 115);
-            Add_Goto (Table.States (585), 331, 116);
-            Table.States (585).Kernel := To_Vector ((0 => (307, 35, 3, 
False)));
-            Table.States (585).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
-            Add_Action (Table.States (586), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
+            Table.States (586).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (587).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (587), 13, Reduce, (159, 1), 0, null, 
null);
+            Add_Action (Table.States (587), 25, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (587), 28, 183);
+            Add_Action (Table.States (587), 29, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (587), 30, 8);
+            Add_Action (Table.States (587), 40, 12);
+            Add_Action (Table.States (587), 46, 14);
+            Add_Action (Table.States (587), 47, 15);
+            Add_Action (Table.States (587), 48, 16);
+            Add_Action (Table.States (587), 50, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (587), 51, 19);
+            Add_Action (Table.States (587), 63, 25);
+            Add_Action (Table.States (587), 66, 26);
+            Add_Action (Table.States (587), 69, 27);
+            Add_Action (Table.States (587), 71, 28);
+            Add_Action (Table.States (587), 104, 185);
+            Table.States (587).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (587), 112, 35);
+            Add_Goto (Table.States (587), 121, 37);
+            Add_Goto (Table.States (587), 127, 40);
+            Add_Goto (Table.States (587), 134, 45);
+            Add_Goto (Table.States (587), 135, 46);
+            Add_Goto (Table.States (587), 157, 391);
+            Add_Goto (Table.States (587), 158, 392);
+            Add_Goto (Table.States (587), 159, 760);
+            Add_Goto (Table.States (587), 179, 54);
+            Add_Goto (Table.States (587), 182, 55);
+            Add_Goto (Table.States (587), 186, 56);
+            Add_Goto (Table.States (587), 193, 58);
+            Add_Goto (Table.States (587), 206, 60);
+            Add_Goto (Table.States (587), 207, 61);
+            Add_Goto (Table.States (587), 209, 62);
+            Add_Goto (Table.States (587), 210, 63);
+            Add_Goto (Table.States (587), 213, 64);
+            Add_Goto (Table.States (587), 214, 65);
+            Add_Goto (Table.States (587), 215, 66);
+            Add_Goto (Table.States (587), 216, 67);
+            Add_Goto (Table.States (587), 219, 69);
+            Add_Goto (Table.States (587), 223, 71);
+            Add_Goto (Table.States (587), 243, 74);
+            Add_Goto (Table.States (587), 244, 75);
+            Add_Goto (Table.States (587), 245, 76);
+            Add_Goto (Table.States (587), 246, 77);
+            Add_Goto (Table.States (587), 247, 78);
+            Add_Goto (Table.States (587), 248, 79);
+            Add_Goto (Table.States (587), 249, 80);
+            Add_Goto (Table.States (587), 250, 81);
+            Add_Goto (Table.States (587), 251, 82);
+            Add_Goto (Table.States (587), 257, 394);
+            Add_Goto (Table.States (587), 259, 84);
+            Add_Goto (Table.States (587), 260, 85);
+            Add_Goto (Table.States (587), 262, 87);
+            Add_Goto (Table.States (587), 263, 88);
+            Add_Goto (Table.States (587), 264, 89);
+            Add_Goto (Table.States (587), 265, 90);
+            Add_Goto (Table.States (587), 271, 91);
+            Add_Goto (Table.States (587), 281, 94);
+            Add_Goto (Table.States (587), 289, 95);
+            Add_Goto (Table.States (587), 304, 102);
+            Add_Goto (Table.States (587), 305, 103);
+            Add_Goto (Table.States (587), 307, 105);
+            Add_Goto (Table.States (587), 308, 106);
+            Add_Goto (Table.States (587), 309, 107);
+            Add_Goto (Table.States (587), 311, 108);
+            Add_Goto (Table.States (587), 313, 109);
+            Add_Goto (Table.States (587), 316, 111);
+            Add_Goto (Table.States (587), 317, 112);
+            Add_Goto (Table.States (587), 319, 113);
+            Add_Goto (Table.States (587), 325, 115);
+            Add_Goto (Table.States (587), 331, 116);
+            Table.States (587).Kernel := To_Vector ((0 => (307, 35, 3, 
False)));
+            Table.States (587).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
+            Table.States (588).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (588), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (309, 0), 4,
             subprogram_declaration_0'Access, null);
-            Table.States (586).Kernel := To_Vector ((0 => (309, 96, 0, 
False)));
-            Table.States (586).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 309, 4)));
-            Add_Action (Table.States (587), 4, 1);
-            Add_Action (Table.States (587), 5, 2);
-            Add_Action (Table.States (587), 13, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (587), 15, 3);
-            Add_Action (Table.States (587), 17, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (587), 18, 4);
-            Add_Action (Table.States (587), 24, Reduce, (300, 1), 0, null, 
null);
-            Add_Action (Table.States (587), 26, Reduce, (300, 1), 0, null, 
null);
-            Add_Action (Table.States (587), 27, 5);
-            Add_Action (Table.States (587), 28, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (587), 31, 9);
-            Add_Action (Table.States (587), 32, 10);
-            Add_Action (Table.States (587), 37, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (587), 41, 13);
-            Add_Action (Table.States (587), 48, 16);
-            Add_Action (Table.States (587), 52, 20);
-            Add_Action (Table.States (587), 57, 21);
-            Add_Action (Table.States (587), 58, 22);
-            Add_Action (Table.States (587), 61, 24);
-            Add_Action (Table.States (587), 73, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (587), 93, 31);
-            Add_Action (Table.States (587), 104, 360);
-            Add_Action (Table.States (587), 105, 33);
-            Add_Action (Table.States (587), 106, 34);
-            Add_Error (Table.States (587));
-            Add_Goto (Table.States (587), 113, 36);
-            Add_Goto (Table.States (587), 123, 38);
-            Add_Goto (Table.States (587), 126, 39);
-            Add_Goto (Table.States (587), 128, 41);
-            Add_Goto (Table.States (587), 131, 42);
-            Add_Goto (Table.States (587), 132, 43);
-            Add_Goto (Table.States (587), 133, 44);
-            Add_Goto (Table.States (587), 139, 47);
-            Add_Goto (Table.States (587), 151, 50);
-            Add_Goto (Table.States (587), 152, 51);
-            Add_Goto (Table.States (587), 161, 53);
-            Add_Goto (Table.States (587), 190, 57);
-            Add_Goto (Table.States (587), 196, 59);
-            Add_Goto (Table.States (587), 217, 68);
-            Add_Goto (Table.States (587), 218, 760);
-            Add_Goto (Table.States (587), 222, 70);
-            Add_Goto (Table.States (587), 232, 72);
-            Add_Goto (Table.States (587), 239, 73);
-            Add_Goto (Table.States (587), 257, 83);
-            Add_Goto (Table.States (587), 261, 86);
-            Add_Goto (Table.States (587), 272, 92);
-            Add_Goto (Table.States (587), 276, 93);
-            Add_Goto (Table.States (587), 290, 96);
-            Add_Goto (Table.States (587), 293, 97);
-            Add_Goto (Table.States (587), 294, 98);
-            Add_Goto (Table.States (587), 298, 99);
-            Add_Goto (Table.States (587), 299, 361);
-            Add_Goto (Table.States (587), 300, 390);
-            Add_Goto (Table.States (587), 302, 100);
-            Add_Goto (Table.States (587), 303, 101);
-            Add_Goto (Table.States (587), 306, 363);
-            Add_Goto (Table.States (587), 323, 114);
-            Table.States (587).Kernel := To_Vector ((0 => (113, 21, 2, 
False)));
-            Table.States (587).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 218, 0)));
-            Add_Action (Table.States (588), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
+            Table.States (588).Kernel := To_Vector ((0 => (309, 96, 0, 
False)));
+            Table.States (588).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 309, 4)));
+            Table.States (589).Action_List.Set_Capacity (24);
+            Add_Action (Table.States (589), 4, 1);
+            Add_Action (Table.States (589), 5, 2);
+            Add_Action (Table.States (589), 13, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (589), 15, 3);
+            Add_Action (Table.States (589), 17, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (589), 18, 4);
+            Add_Action (Table.States (589), 24, Reduce, (300, 1), 0, null, 
null);
+            Add_Action (Table.States (589), 26, Reduce, (300, 1), 0, null, 
null);
+            Add_Action (Table.States (589), 27, 5);
+            Add_Action (Table.States (589), 28, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (589), 31, 9);
+            Add_Action (Table.States (589), 32, 10);
+            Add_Action (Table.States (589), 37, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (589), 41, 13);
+            Add_Action (Table.States (589), 48, 16);
+            Add_Action (Table.States (589), 52, 20);
+            Add_Action (Table.States (589), 57, 21);
+            Add_Action (Table.States (589), 58, 22);
+            Add_Action (Table.States (589), 61, 24);
+            Add_Action (Table.States (589), 73, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (589), 93, 31);
+            Add_Action (Table.States (589), 104, 360);
+            Add_Action (Table.States (589), 105, 33);
+            Add_Action (Table.States (589), 106, 34);
+            Table.States (589).Goto_List.Set_Capacity (32);
+            Add_Goto (Table.States (589), 113, 36);
+            Add_Goto (Table.States (589), 123, 38);
+            Add_Goto (Table.States (589), 126, 39);
+            Add_Goto (Table.States (589), 128, 41);
+            Add_Goto (Table.States (589), 131, 42);
+            Add_Goto (Table.States (589), 132, 43);
+            Add_Goto (Table.States (589), 133, 44);
+            Add_Goto (Table.States (589), 139, 47);
+            Add_Goto (Table.States (589), 151, 50);
+            Add_Goto (Table.States (589), 152, 51);
+            Add_Goto (Table.States (589), 161, 53);
+            Add_Goto (Table.States (589), 190, 57);
+            Add_Goto (Table.States (589), 196, 59);
+            Add_Goto (Table.States (589), 217, 68);
+            Add_Goto (Table.States (589), 218, 761);
+            Add_Goto (Table.States (589), 222, 70);
+            Add_Goto (Table.States (589), 232, 72);
+            Add_Goto (Table.States (589), 239, 73);
+            Add_Goto (Table.States (589), 257, 83);
+            Add_Goto (Table.States (589), 261, 86);
+            Add_Goto (Table.States (589), 272, 92);
+            Add_Goto (Table.States (589), 276, 93);
+            Add_Goto (Table.States (589), 290, 96);
+            Add_Goto (Table.States (589), 293, 97);
+            Add_Goto (Table.States (589), 294, 98);
+            Add_Goto (Table.States (589), 298, 99);
+            Add_Goto (Table.States (589), 299, 361);
+            Add_Goto (Table.States (589), 300, 390);
+            Add_Goto (Table.States (589), 302, 100);
+            Add_Goto (Table.States (589), 303, 101);
+            Add_Goto (Table.States (589), 306, 363);
+            Add_Goto (Table.States (589), 323, 114);
+            Table.States (589).Kernel := To_Vector ((0 => (113, 21, 2, 
False)));
+            Table.States (589).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 218, 0)));
+            Table.States (590).Action_List.Set_Capacity (46);
+            Add_Action (Table.States (590), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (113, 1), 5, accept_statement_1'Access, null);
-            Table.States (588).Kernel := To_Vector ((0 => (113, 96, 0, 
False)));
-            Table.States (588).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 113, 5)));
-            Add_Action (Table.States (589), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (275,
+            Table.States (590).Kernel := To_Vector ((0 => (113, 96, 0, 
False)));
+            Table.States (590).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 113, 5)));
+            Table.States (591).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (591), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (275,
             0), 4, raise_expression_0'Access, null);
-            Table.States (589).Kernel := To_Vector ((0 => (275, 192, 0, 
True)));
-            Table.States (589).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 275, 4)));
-            Table.States (589).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (590), 72, 761);
-            Add_Error (Table.States (590));
-            Add_Goto (Table.States (590), 137, 762);
-            Add_Goto (Table.States (590), 138, 763);
-            Table.States (590).Kernel := To_Vector ((0 => (136, 35, 2, 
False)));
-            Table.States (590).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 72, 761)));
-            Add_Action (Table.States (591), 87, 764);
-            Add_Error (Table.States (591));
-            Table.States (591).Kernel := To_Vector ((0 => (273, 230, 1, 
False)));
-            Table.States (591).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 87, 764)));
-            Add_Action (Table.States (592), 3, 121);
-            Add_Action (Table.States (592), 22, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (592), 23, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (592), 39, 122);
-            Add_Action (Table.States (592), 40, 123);
-            Add_Action (Table.States (592), 41, 124);
-            Add_Action (Table.States (592), 52, 125);
-            Add_Action (Table.States (592), 76, 126);
-            Add_Action (Table.States (592), 77, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (592), 94, 127);
-            Add_Action (Table.States (592), 95, 128);
-            Add_Action (Table.States (592), 103, 129);
-            Add_Action (Table.States (592), 104, 119);
-            Add_Action (Table.States (592), 105, 33);
-            Add_Action (Table.States (592), 106, 34);
-            Add_Error (Table.States (592));
-            Add_Goto (Table.States (592), 117, 130);
-            Add_Goto (Table.States (592), 128, 41);
-            Add_Goto (Table.States (592), 191, 131);
-            Add_Goto (Table.States (592), 192, 765);
-            Add_Goto (Table.States (592), 197, 133);
-            Add_Goto (Table.States (592), 239, 134);
-            Add_Goto (Table.States (592), 258, 135);
-            Add_Goto (Table.States (592), 272, 92);
-            Add_Goto (Table.States (592), 275, 136);
-            Add_Goto (Table.States (592), 282, 137);
-            Add_Goto (Table.States (592), 283, 138);
-            Add_Goto (Table.States (592), 284, 139);
-            Add_Goto (Table.States (592), 285, 140);
-            Add_Goto (Table.States (592), 286, 141);
-            Add_Goto (Table.States (592), 287, 142);
-            Add_Goto (Table.States (592), 293, 97);
-            Add_Goto (Table.States (592), 301, 143);
-            Add_Goto (Table.States (592), 320, 144);
-            Add_Goto (Table.States (592), 321, 145);
-            Add_Goto (Table.States (592), 330, 146);
-            Table.States (592).Kernel := To_Vector (((221, 68, 3, False), 
(221, 68, 1, False), (221, 68, 2, False),
+            Table.States (591).Kernel := To_Vector ((0 => (275, 192, 0, 
True)));
+            Table.States (591).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 275, 4)));
+            Table.States (591).Minimal_Complete_Actions_Recursive := True;
+            Table.States (592).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (592), 72, 762);
+            Table.States (592).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (592), 137, 763);
+            Add_Goto (Table.States (592), 138, 764);
+            Table.States (592).Kernel := To_Vector ((0 => (136, 35, 2, 
False)));
+            Table.States (592).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 72, 762)));
+            Table.States (593).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (593), 87, 765);
+            Table.States (593).Kernel := To_Vector ((0 => (273, 230, 1, 
False)));
+            Table.States (593).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 87, 765)));
+            Table.States (594).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (594), 3, 121);
+            Add_Action (Table.States (594), 22, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (594), 23, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (594), 39, 122);
+            Add_Action (Table.States (594), 40, 123);
+            Add_Action (Table.States (594), 41, 124);
+            Add_Action (Table.States (594), 52, 125);
+            Add_Action (Table.States (594), 76, 126);
+            Add_Action (Table.States (594), 77, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (594), 94, 127);
+            Add_Action (Table.States (594), 95, 128);
+            Add_Action (Table.States (594), 103, 129);
+            Add_Action (Table.States (594), 104, 119);
+            Add_Action (Table.States (594), 105, 33);
+            Add_Action (Table.States (594), 106, 34);
+            Table.States (594).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (594), 117, 130);
+            Add_Goto (Table.States (594), 128, 41);
+            Add_Goto (Table.States (594), 191, 131);
+            Add_Goto (Table.States (594), 192, 766);
+            Add_Goto (Table.States (594), 197, 133);
+            Add_Goto (Table.States (594), 239, 134);
+            Add_Goto (Table.States (594), 258, 135);
+            Add_Goto (Table.States (594), 272, 92);
+            Add_Goto (Table.States (594), 275, 136);
+            Add_Goto (Table.States (594), 282, 137);
+            Add_Goto (Table.States (594), 283, 138);
+            Add_Goto (Table.States (594), 284, 139);
+            Add_Goto (Table.States (594), 285, 140);
+            Add_Goto (Table.States (594), 286, 141);
+            Add_Goto (Table.States (594), 287, 142);
+            Add_Goto (Table.States (594), 293, 97);
+            Add_Goto (Table.States (594), 301, 143);
+            Add_Goto (Table.States (594), 320, 144);
+            Add_Goto (Table.States (594), 321, 145);
+            Add_Goto (Table.States (594), 330, 146);
+            Table.States (594).Kernel := To_Vector (((221, 68, 3, False), 
(221, 68, 1, False), (221, 68, 2, False),
             (221, 68, 0, False)));
-            Table.States (592).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (593), 76, 235);
-            Add_Action (Table.States (593), 79, Reduce, (165, 1), 3, null, 
null);
-            Add_Action (Table.States (593), 84, 237);
-            Add_Action (Table.States (593), 87, Reduce, (165, 1), 3, null, 
null);
-            Add_Action (Table.States (593), 101, 239);
-            Add_Action (Table.States (593), 102, 240);
-            Add_Error (Table.States (593));
-            Add_Goto (Table.States (593), 115, 241);
-            Add_Goto (Table.States (593), 322, 242);
-            Table.States (593).Kernel := To_Vector (((128, 239, 2, True), 
(165, 239, 0, False), (239, 239, 5, True),
+            Table.States (594).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (595).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (595), 76, 235);
+            Add_Action (Table.States (595), 79, Reduce, (165, 1), 3, null, 
null);
+            Add_Action (Table.States (595), 84, 237);
+            Add_Action (Table.States (595), 87, Reduce, (165, 1), 3, null, 
null);
+            Add_Action (Table.States (595), 101, 239);
+            Add_Action (Table.States (595), 102, 240);
+            Table.States (595).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (595), 115, 241);
+            Add_Goto (Table.States (595), 322, 242);
+            Table.States (595).Kernel := To_Vector (((128, 239, 2, True), 
(165, 239, 0, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (593).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 165, 3)));
-            Add_Action (Table.States (594), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
+            Table.States (595).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 165, 3)));
+            Table.States (596).Action_List.Set_Capacity (63);
+            Add_Action (Table.States (596), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (117, 2), 4, null, null);
-            Table.States (594).Kernel := To_Vector ((0 => (117, 77, 0, 
False)));
-            Table.States (594).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 117, 4)));
-            Add_Action (Table.States (595), (35, 77, 83, 96), (124, 1), 3, 
null, null);
-            Table.States (595).Kernel := To_Vector ((0 => (124, 80, 0, 
False)));
-            Table.States (595).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 124, 3)));
-            Add_Action (Table.States (596), (35, 77, 83, 96), (124, 0), 3, 
association_opt_0'Access, null);
-            Table.States (596).Kernel := To_Vector ((0 => (124, 192, 0, 
False)));
-            Table.States (596).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 124, 3)));
-            Add_Action (Table.States (597), (35, 77, 83, 96), (125, 0), 3, 
null, null);
-            Table.States (597).Kernel := To_Vector ((0 => (125, 124, 0, 
True)));
-            Table.States (597).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 3)));
-            Table.States (597).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (598), (79, 87), (166, 0), 3, null, null);
-            Table.States (598).Kernel := To_Vector ((0 => (166, 165, 0, 
True)));
-            Table.States (598).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 166, 3)));
-            Table.States (598).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (599), (79, 87), (165, 0), 1, null, null);
-            Table.States (599).Kernel := To_Vector ((0 => (165, 191, 0, 
False)));
-            Table.States (599).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 165, 1)));
-            Add_Action (Table.States (600), (35, 77, 83, 96), (124, 3), 3, 
association_opt_3'Access, null);
-            Table.States (600).Kernel := To_Vector ((0 => (124, 80, 0, 
False)));
-            Table.States (600).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 124, 3)));
-            Add_Action (Table.States (601), (35, 77, 83, 96), (124, 2), 3, 
association_opt_2'Access, null);
-            Table.States (601).Kernel := To_Vector ((0 => (124, 192, 0, 
False)));
-            Table.States (601).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 124, 3)));
-            Add_Action (Table.States (602), 10, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 33, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 38, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 40, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 43, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 54, 766);
-            Add_Action (Table.States (602), 55, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 75, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 77, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 78, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 79, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 83, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 85, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 86, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 87, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 88, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 89, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 91, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 92, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 94, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 95, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 97, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 98, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 99, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (602), 100, Reduce, (258, 1), 1, null, 
null);
-            Add_Error (Table.States (602));
-            Table.States (602).Kernel := To_Vector (((117, 41, 2, False), 
(258, 41, 0, False)));
-            Table.States (602).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 1)));
-            Add_Action (Table.States (603), 77, 767);
-            Add_Action (Table.States (603), 83, 443);
-            Add_Error (Table.States (603));
-            Table.States (603).Kernel := To_Vector (((117, 125, 1, False), 
(125, 125, 1, True)));
-            Table.States (603).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 767)));
-            Add_Action (Table.States (604), 10, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 20, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 21, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 22, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 23, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 35, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 37, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 42, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 43, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 53, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 68, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 74, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 75, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 76, 768);
-            Add_Action (Table.States (604), 77, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 79, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 82, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 83, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 87, Reduce, (277, 1), 3, null, 
null);
-            Add_Action (Table.States (604), 96, Reduce, (277, 1), 3, null, 
null);
-            Add_Error (Table.States (604));
-            Table.States (604).Kernel := To_Vector (((277, 53, 2, False), 
(277, 53, 0, False)));
-            Table.States (604).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 277, 3)));
+            Table.States (596).Kernel := To_Vector ((0 => (117, 77, 0, 
False)));
+            Table.States (596).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 117, 4)));
+            Table.States (597).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (597), (35, 77, 83, 96), (124, 1), 3, 
null, null);
+            Table.States (597).Kernel := To_Vector ((0 => (124, 80, 0, 
False)));
+            Table.States (597).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 124, 3)));
+            Table.States (598).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (598), (35, 77, 83, 96), (124, 0), 3, 
association_opt_0'Access, null);
+            Table.States (598).Kernel := To_Vector ((0 => (124, 192, 0, 
False)));
+            Table.States (598).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 124, 3)));
+            Table.States (599).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (599), (35, 77, 83, 96), (125, 0), 3, 
null, null);
+            Table.States (599).Kernel := To_Vector ((0 => (125, 124, 0, 
True)));
+            Table.States (599).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 3)));
+            Table.States (599).Minimal_Complete_Actions_Recursive := True;
+            Table.States (600).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (600), (79, 87), (166, 0), 3, null, null);
+            Table.States (600).Kernel := To_Vector ((0 => (166, 165, 0, 
True)));
+            Table.States (600).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 166, 3)));
+            Table.States (600).Minimal_Complete_Actions_Recursive := True;
+            Table.States (601).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (601), (79, 87), (165, 0), 1, null, null);
+            Table.States (601).Kernel := To_Vector ((0 => (165, 191, 0, 
False)));
+            Table.States (601).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 165, 1)));
+            Table.States (602).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (602), (35, 77, 83, 96), (124, 3), 3, 
association_opt_3'Access, null);
+            Table.States (602).Kernel := To_Vector ((0 => (124, 80, 0, 
False)));
+            Table.States (602).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 124, 3)));
+            Table.States (603).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (603), (35, 77, 83, 96), (124, 2), 3, 
association_opt_2'Access, null);
+            Table.States (603).Kernel := To_Vector ((0 => (124, 192, 0, 
False)));
+            Table.States (603).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 124, 3)));
+            Table.States (604).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (604), 10, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 33, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 38, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 40, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 43, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 54, 767);
+            Add_Action (Table.States (604), 55, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 75, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 77, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 78, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 79, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 83, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 85, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 86, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 87, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 88, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 89, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 91, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 92, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 94, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 95, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 97, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 98, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 99, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (604), 100, Reduce, (258, 1), 1, null, 
null);
+            Table.States (604).Kernel := To_Vector (((117, 41, 2, False), 
(258, 41, 0, False)));
+            Table.States (604).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 1)));
          end Subr_11;
          procedure Subr_12
          is begin
-            Add_Action (Table.States (605), (10, 20, 21, 22, 23, 35, 37, 42, 
43, 53, 68, 74, 75, 77, 79, 82, 83, 87,
+            Table.States (605).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (605), 77, 768);
+            Add_Action (Table.States (605), 83, 443);
+            Table.States (605).Kernel := To_Vector (((117, 125, 1, False), 
(125, 125, 1, True)));
+            Table.States (605).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 768)));
+            Table.States (606).Action_List.Set_Capacity (20);
+            Add_Action (Table.States (606), 10, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 20, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 21, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 22, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 23, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 35, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 37, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 42, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 43, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 53, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 68, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 74, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 75, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 76, 769);
+            Add_Action (Table.States (606), 77, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 79, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 82, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 83, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 87, Reduce, (277, 1), 3, null, 
null);
+            Add_Action (Table.States (606), 96, Reduce, (277, 1), 3, null, 
null);
+            Table.States (606).Kernel := To_Vector (((277, 53, 2, False), 
(277, 53, 0, False)));
+            Table.States (606).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 277, 3)));
+            Table.States (607).Action_List.Set_Capacity (19);
+            Add_Action (Table.States (607), (10, 20, 21, 22, 23, 35, 37, 42, 
43, 53, 68, 74, 75, 77, 79, 82, 83, 87,
             96), (277, 2), 3, null, null);
-            Table.States (605).Kernel := To_Vector ((0 => (277, 301, 0, 
False)));
-            Table.States (605).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 277, 3)));
-            Add_Action (Table.States (606), 79, 445);
-            Add_Action (Table.States (606), 87, 769);
-            Add_Error (Table.States (606));
-            Table.States (606).Kernel := To_Vector (((140, 166, 1, False), 
(166, 166, 2, True)));
-            Table.States (606).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 87, 769)));
-            Add_Action (Table.States (607), 15, 770);
-            Add_Error (Table.States (607));
-            Table.States (607).Kernel := To_Vector ((0 => (139, 24, 2, 
False)));
-            Table.States (607).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 15, 770)));
-            Add_Action (Table.States (608), (24, 72), (141, 0), 2, null, null);
-            Table.States (608).Kernel := To_Vector ((0 => (141, 140, 0, 
True)));
-            Table.States (608).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 141, 2)));
-            Table.States (608).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (609), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (283,
-            0), 4, null, null);
-            Table.States (609).Kernel := To_Vector ((0 => (283, 287, 0, 
True)));
-            Table.States (609).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 283, 4)));
-            Table.States (609).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (610), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (285,
-            0), 4, null, null);
-            Table.States (610).Kernel := To_Vector ((0 => (285, 287, 0, 
True)));
-            Table.States (610).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 285, 4)));
+            Table.States (607).Kernel := To_Vector ((0 => (277, 301, 0, 
False)));
+            Table.States (607).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 277, 3)));
+            Table.States (608).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (608), 79, 445);
+            Add_Action (Table.States (608), 87, 770);
+            Table.States (608).Kernel := To_Vector (((140, 166, 1, False), 
(166, 166, 2, True)));
+            Table.States (608).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 87, 770)));
+            Table.States (609).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (609), 15, 771);
+            Table.States (609).Kernel := To_Vector ((0 => (139, 24, 2, 
False)));
+            Table.States (609).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 15, 771)));
+            Table.States (610).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (610), (24, 72), (141, 0), 2, 
case_statement_alternative_list_0'Access, null);
+            Table.States (610).Kernel := To_Vector ((0 => (141, 140, 0, 
True)));
+            Table.States (610).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 141, 2)));
             Table.States (610).Minimal_Complete_Actions_Recursive := True;
+            Table.States (611).Action_List.Set_Capacity (17);
             Add_Action (Table.States (611), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (283,
-            1), 4, null, null);
+            0), 4, null, null);
             Table.States (611).Kernel := To_Vector ((0 => (283, 287, 0, 
True)));
             Table.States (611).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 283, 4)));
             Table.States (611).Minimal_Complete_Actions_Recursive := True;
+            Table.States (612).Action_List.Set_Capacity (17);
             Add_Action (Table.States (612), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (285,
-            1), 4, null, null);
+            0), 4, null, null);
             Table.States (612).Kernel := To_Vector ((0 => (285, 287, 0, 
True)));
             Table.States (612).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 285, 4)));
             Table.States (612).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (613), 3, 121);
-            Add_Action (Table.States (613), 39, 122);
-            Add_Action (Table.States (613), 40, 123);
-            Add_Action (Table.States (613), 41, 124);
-            Add_Action (Table.States (613), 76, 126);
-            Add_Action (Table.States (613), 94, 127);
-            Add_Action (Table.States (613), 95, 128);
-            Add_Action (Table.States (613), 103, 129);
-            Add_Action (Table.States (613), 104, 119);
-            Add_Action (Table.States (613), 105, 33);
-            Add_Action (Table.States (613), 106, 34);
-            Add_Error (Table.States (613));
-            Add_Goto (Table.States (613), 117, 130);
-            Add_Goto (Table.States (613), 128, 41);
-            Add_Goto (Table.States (613), 197, 133);
-            Add_Goto (Table.States (613), 234, 771);
-            Add_Goto (Table.States (613), 239, 274);
-            Add_Goto (Table.States (613), 258, 135);
-            Add_Goto (Table.States (613), 272, 92);
-            Add_Goto (Table.States (613), 277, 466);
-            Add_Goto (Table.States (613), 293, 97);
-            Add_Goto (Table.States (613), 301, 467);
-            Add_Goto (Table.States (613), 320, 144);
-            Add_Goto (Table.States (613), 321, 145);
-            Add_Goto (Table.States (613), 330, 146);
-            Table.States (613).Kernel := To_Vector ((0 => (233, 79, 1, True)));
-            Table.States (613).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (613).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (613), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (283,
+            1), 4, null, null);
+            Table.States (613).Kernel := To_Vector ((0 => (283, 287, 0, 
True)));
+            Table.States (613).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 283, 4)));
             Table.States (613).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (614), 10, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 20, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 21, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 22, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 23, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 35, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 37, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 43, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 53, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 68, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 74, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 75, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 77, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 79, 613);
-            Add_Conflict (Table.States (614), 79, (287, 0), 4, null, null);
-            Add_Action (Table.States (614), 83, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 87, Reduce, (287, 0), 4, null, 
null);
-            Add_Action (Table.States (614), 96, Reduce, (287, 0), 4, null, 
null);
-            Add_Error (Table.States (614));
-            Table.States (614).Kernel := To_Vector (((233, 233, 2, True), 
(287, 233, 0, False)));
-            Table.States (614).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 287, 4)));
-            Add_Action (Table.States (615), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
+            Table.States (614).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (614), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (285,
+            1), 4, null, null);
+            Table.States (614).Kernel := To_Vector ((0 => (285, 287, 0, 
True)));
+            Table.States (614).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 285, 4)));
+            Table.States (614).Minimal_Complete_Actions_Recursive := True;
+            Table.States (615).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (615), 3, 121);
+            Add_Action (Table.States (615), 39, 122);
+            Add_Action (Table.States (615), 40, 123);
+            Add_Action (Table.States (615), 41, 124);
+            Add_Action (Table.States (615), 76, 126);
+            Add_Action (Table.States (615), 94, 127);
+            Add_Action (Table.States (615), 95, 128);
+            Add_Action (Table.States (615), 103, 129);
+            Add_Action (Table.States (615), 104, 119);
+            Add_Action (Table.States (615), 105, 33);
+            Add_Action (Table.States (615), 106, 34);
+            Table.States (615).Goto_List.Set_Capacity (13);
+            Add_Goto (Table.States (615), 117, 130);
+            Add_Goto (Table.States (615), 128, 41);
+            Add_Goto (Table.States (615), 197, 133);
+            Add_Goto (Table.States (615), 234, 772);
+            Add_Goto (Table.States (615), 239, 274);
+            Add_Goto (Table.States (615), 258, 135);
+            Add_Goto (Table.States (615), 272, 92);
+            Add_Goto (Table.States (615), 277, 466);
+            Add_Goto (Table.States (615), 293, 97);
+            Add_Goto (Table.States (615), 301, 467);
+            Add_Goto (Table.States (615), 320, 144);
+            Add_Goto (Table.States (615), 321, 145);
+            Add_Goto (Table.States (615), 330, 146);
+            Table.States (615).Kernel := To_Vector ((0 => (233, 79, 1, True)));
+            Table.States (615).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (615).Minimal_Complete_Actions_Recursive := True;
+            Table.States (616).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (616), 10, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 20, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 21, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 22, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 23, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 35, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 37, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 43, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 53, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 68, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 74, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 75, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 77, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 79, 615);
+            Add_Conflict (Table.States (616), 79, (287, 0), 4, null, null);
+            Add_Action (Table.States (616), 83, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 87, Reduce, (287, 0), 4, null, 
null);
+            Add_Action (Table.States (616), 96, Reduce, (287, 0), 4, null, 
null);
+            Table.States (616).Kernel := To_Vector (((233, 233, 2, True), 
(287, 233, 0, False)));
+            Table.States (616).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 287, 4)));
+            Table.States (617).Action_List.Set_Capacity (46);
+            Add_Action (Table.States (617), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (190, 0), 5, exit_statement_0'Access, null);
-            Table.States (615).Kernel := To_Vector ((0 => (190, 96, 0, 
False)));
-            Table.States (615).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 190, 5)));
-            Add_Action (Table.States (616), 38, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (616), 55, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (616), 78, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (616), 85, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (616), 94, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (616), 95, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (616), 97, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (616), 99, Reduce, (258, 1), 1, null, 
null);
-            Add_Action (Table.States (616), 104, 119);
-            Add_Action (Table.States (616), 105, 33);
-            Add_Action (Table.States (616), 106, 34);
-            Add_Error (Table.States (616));
-            Add_Goto (Table.States (616), 128, 41);
-            Add_Goto (Table.States (616), 239, 772);
-            Add_Goto (Table.States (616), 272, 92);
-            Add_Goto (Table.States (616), 293, 97);
-            Table.States (616).Kernel := To_Vector (((258, 41, 0, False), 
(314, 41, 5, False), (314, 41, 1, False)));
-            Table.States (616).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 1)));
-            Add_Action (Table.States (617), (37, 87), (230, 2), 4, 
iterator_specification_2'Access, null);
-            Table.States (617).Kernel := To_Vector ((0 => (230, 167, 0, 
False)));
-            Table.States (617).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 230, 4)));
-            Add_Action (Table.States (618), 3, 121);
-            Add_Action (Table.States (618), 39, 122);
-            Add_Action (Table.States (618), 40, 123);
-            Add_Action (Table.States (618), 41, 124);
-            Add_Action (Table.States (618), 76, 126);
-            Add_Action (Table.States (618), 94, 127);
-            Add_Action (Table.States (618), 95, 128);
-            Add_Action (Table.States (618), 103, 129);
+            Table.States (617).Kernel := To_Vector ((0 => (190, 96, 0, 
False)));
+            Table.States (617).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 190, 5)));
+            Table.States (618).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (618), 38, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (618), 55, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (618), 78, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (618), 85, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (618), 94, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (618), 95, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (618), 97, Reduce, (258, 1), 1, null, 
null);
+            Add_Action (Table.States (618), 99, Reduce, (258, 1), 1, null, 
null);
             Add_Action (Table.States (618), 104, 119);
             Add_Action (Table.States (618), 105, 33);
             Add_Action (Table.States (618), 106, 34);
-            Add_Error (Table.States (618));
-            Add_Goto (Table.States (618), 117, 130);
+            Table.States (618).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (618), 128, 41);
-            Add_Goto (Table.States (618), 197, 133);
-            Add_Goto (Table.States (618), 239, 274);
-            Add_Goto (Table.States (618), 258, 135);
+            Add_Goto (Table.States (618), 239, 773);
             Add_Goto (Table.States (618), 272, 92);
-            Add_Goto (Table.States (618), 277, 773);
             Add_Goto (Table.States (618), 293, 97);
-            Add_Goto (Table.States (618), 301, 479);
-            Add_Goto (Table.States (618), 320, 144);
-            Add_Goto (Table.States (618), 321, 145);
-            Add_Goto (Table.States (618), 330, 146);
-            Table.States (618).Kernel := To_Vector ((0 => (155, 53, 3, 
False)));
-            Table.States (618).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (619), 3, 121);
-            Add_Action (Table.States (619), 15, 258);
-            Add_Action (Table.States (619), 28, 259);
-            Add_Action (Table.States (619), 32, 260);
-            Add_Action (Table.States (619), 39, 122);
-            Add_Action (Table.States (619), 40, 774);
-            Add_Action (Table.States (619), 41, 124);
-            Add_Action (Table.States (619), 44, 263);
-            Add_Action (Table.States (619), 52, 125);
-            Add_Action (Table.States (619), 76, 126);
-            Add_Action (Table.States (619), 77, Reduce, (124, 5), 0, null, 
null);
-            Add_Action (Table.States (619), 79, Reduce, (166, 2), 0, null, 
null);
-            Add_Action (Table.States (619), 83, Reduce, (124, 5), 0, null, 
null);
-            Add_Action (Table.States (619), 87, Reduce, (166, 2), 0, null, 
null);
-            Add_Action (Table.States (619), 94, 127);
-            Add_Action (Table.States (619), 95, 128);
-            Add_Action (Table.States (619), 103, 129);
-            Add_Action (Table.States (619), 104, 119);
-            Add_Action (Table.States (619), 105, 33);
-            Add_Action (Table.States (619), 106, 264);
-            Add_Error (Table.States (619));
-            Add_Goto (Table.States (619), 117, 130);
-            Add_Goto (Table.States (619), 124, 265);
-            Add_Goto (Table.States (619), 125, 406);
-            Add_Goto (Table.States (619), 128, 41);
-            Add_Goto (Table.States (619), 136, 267);
-            Add_Goto (Table.States (619), 153, 407);
-            Add_Goto (Table.States (619), 165, 269);
-            Add_Goto (Table.States (619), 166, 270);
-            Add_Goto (Table.States (619), 167, 775);
-            Add_Goto (Table.States (619), 168, 776);
-            Add_Goto (Table.States (619), 191, 408);
-            Add_Goto (Table.States (619), 197, 133);
-            Add_Goto (Table.States (619), 221, 273);
-            Add_Goto (Table.States (619), 239, 477);
-            Add_Goto (Table.States (619), 258, 135);
-            Add_Goto (Table.States (619), 272, 92);
-            Add_Goto (Table.States (619), 273, 275);
-            Add_Goto (Table.States (619), 275, 136);
-            Add_Goto (Table.States (619), 277, 777);
-            Add_Goto (Table.States (619), 278, 410);
-            Add_Goto (Table.States (619), 282, 137);
-            Add_Goto (Table.States (619), 283, 138);
-            Add_Goto (Table.States (619), 284, 139);
-            Add_Goto (Table.States (619), 285, 140);
-            Add_Goto (Table.States (619), 286, 141);
-            Add_Goto (Table.States (619), 287, 142);
-            Add_Goto (Table.States (619), 293, 97);
-            Add_Goto (Table.States (619), 301, 277);
-            Add_Goto (Table.States (619), 314, 480);
-            Add_Goto (Table.States (619), 320, 144);
-            Add_Goto (Table.States (619), 321, 145);
-            Add_Goto (Table.States (619), 330, 146);
-            Table.States (619).Kernel := To_Vector (((115, 76, 1, False), 
(115, 76, 3, False), (224, 76, 4, False),
+            Table.States (618).Kernel := To_Vector (((258, 41, 0, False), 
(314, 41, 5, False), (314, 41, 1, False)));
+            Table.States (618).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 1)));
+            Table.States (619).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (619), (37, 87), (230, 2), 4, 
iterator_specification_2'Access, null);
+            Table.States (619).Kernel := To_Vector ((0 => (230, 167, 0, 
False)));
+            Table.States (619).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 230, 4)));
+            Table.States (620).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (620), 3, 121);
+            Add_Action (Table.States (620), 39, 122);
+            Add_Action (Table.States (620), 40, 123);
+            Add_Action (Table.States (620), 41, 124);
+            Add_Action (Table.States (620), 76, 126);
+            Add_Action (Table.States (620), 94, 127);
+            Add_Action (Table.States (620), 95, 128);
+            Add_Action (Table.States (620), 103, 129);
+            Add_Action (Table.States (620), 104, 119);
+            Add_Action (Table.States (620), 105, 33);
+            Add_Action (Table.States (620), 106, 34);
+            Table.States (620).Goto_List.Set_Capacity (12);
+            Add_Goto (Table.States (620), 117, 130);
+            Add_Goto (Table.States (620), 128, 41);
+            Add_Goto (Table.States (620), 197, 133);
+            Add_Goto (Table.States (620), 239, 274);
+            Add_Goto (Table.States (620), 258, 135);
+            Add_Goto (Table.States (620), 272, 92);
+            Add_Goto (Table.States (620), 277, 774);
+            Add_Goto (Table.States (620), 293, 97);
+            Add_Goto (Table.States (620), 301, 479);
+            Add_Goto (Table.States (620), 320, 144);
+            Add_Goto (Table.States (620), 321, 145);
+            Add_Goto (Table.States (620), 330, 146);
+            Table.States (620).Kernel := To_Vector ((0 => (155, 53, 3, 
False)));
+            Table.States (620).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (621).Action_List.Set_Capacity (20);
+            Add_Action (Table.States (621), 3, 121);
+            Add_Action (Table.States (621), 15, 258);
+            Add_Action (Table.States (621), 28, 259);
+            Add_Action (Table.States (621), 32, 260);
+            Add_Action (Table.States (621), 39, 122);
+            Add_Action (Table.States (621), 40, 775);
+            Add_Action (Table.States (621), 41, 124);
+            Add_Action (Table.States (621), 44, 263);
+            Add_Action (Table.States (621), 52, 125);
+            Add_Action (Table.States (621), 76, 126);
+            Add_Action (Table.States (621), 77, Reduce, (124, 5), 0, null, 
null);
+            Add_Action (Table.States (621), 79, Reduce, (166, 2), 0, null, 
null);
+            Add_Action (Table.States (621), 83, Reduce, (124, 5), 0, null, 
null);
+            Add_Action (Table.States (621), 87, Reduce, (166, 2), 0, null, 
null);
+            Add_Action (Table.States (621), 94, 127);
+            Add_Action (Table.States (621), 95, 128);
+            Add_Action (Table.States (621), 103, 129);
+            Add_Action (Table.States (621), 104, 119);
+            Add_Action (Table.States (621), 105, 33);
+            Add_Action (Table.States (621), 106, 264);
+            Table.States (621).Goto_List.Set_Capacity (32);
+            Add_Goto (Table.States (621), 117, 130);
+            Add_Goto (Table.States (621), 124, 265);
+            Add_Goto (Table.States (621), 125, 406);
+            Add_Goto (Table.States (621), 128, 41);
+            Add_Goto (Table.States (621), 136, 267);
+            Add_Goto (Table.States (621), 153, 407);
+            Add_Goto (Table.States (621), 165, 269);
+            Add_Goto (Table.States (621), 166, 270);
+            Add_Goto (Table.States (621), 167, 776);
+            Add_Goto (Table.States (621), 168, 777);
+            Add_Goto (Table.States (621), 191, 408);
+            Add_Goto (Table.States (621), 197, 133);
+            Add_Goto (Table.States (621), 221, 273);
+            Add_Goto (Table.States (621), 239, 477);
+            Add_Goto (Table.States (621), 258, 135);
+            Add_Goto (Table.States (621), 272, 92);
+            Add_Goto (Table.States (621), 273, 275);
+            Add_Goto (Table.States (621), 275, 136);
+            Add_Goto (Table.States (621), 277, 778);
+            Add_Goto (Table.States (621), 278, 410);
+            Add_Goto (Table.States (621), 282, 137);
+            Add_Goto (Table.States (621), 283, 138);
+            Add_Goto (Table.States (621), 284, 139);
+            Add_Goto (Table.States (621), 285, 140);
+            Add_Goto (Table.States (621), 286, 141);
+            Add_Goto (Table.States (621), 287, 142);
+            Add_Goto (Table.States (621), 293, 97);
+            Add_Goto (Table.States (621), 301, 277);
+            Add_Goto (Table.States (621), 314, 480);
+            Add_Goto (Table.States (621), 320, 144);
+            Add_Goto (Table.States (621), 321, 145);
+            Add_Goto (Table.States (621), 330, 146);
+            Table.States (621).Kernel := To_Vector (((115, 76, 1, False), 
(115, 76, 3, False), (224, 76, 4, False),
             (239, 76, 4, True)));
-            Table.States (619).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 0)));
-            Table.States (619).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (620), (10, 21, 37, 42, 74, 77, 82, 83, 
87, 96), (314, 2), 2,
+            Table.States (621).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 0)));
+            Table.States (621).Minimal_Complete_Actions_Recursive := True;
+            Table.States (622).Action_List.Set_Capacity (10);
+            Add_Action (Table.States (622), (10, 21, 37, 42, 74, 77, 82, 83, 
87, 96), (314, 2), 2,
             subtype_indication_2'Access, null);
-            Table.States (620).Kernel := To_Vector ((0 => (314, 155, 0, 
False)));
-            Table.States (620).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 314, 2)));
-            Add_Action (Table.States (621), (10, 21, 37, 42, 74, 77, 82, 83, 
87, 96), (155, 1), 1, null, null);
-            Table.States (621).Kernel := To_Vector ((0 => (155, 224, 0, 
False)));
-            Table.States (621).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 155, 1)));
-            Add_Action (Table.States (622), 37, Reduce, (230, 3), 4, null, 
null);
-            Add_Action (Table.States (622), 76, 235);
-            Add_Action (Table.States (622), 84, 237);
-            Add_Action (Table.States (622), 87, Reduce, (230, 3), 4, null, 
null);
-            Add_Action (Table.States (622), 101, 239);
-            Add_Action (Table.States (622), 102, 240);
-            Add_Error (Table.States (622));
-            Add_Goto (Table.States (622), 115, 241);
-            Add_Goto (Table.States (622), 322, 242);
-            Table.States (622).Kernel := To_Vector (((128, 239, 2, True), 
(230, 239, 0, False), (239, 239, 5, True),
+            Table.States (622).Kernel := To_Vector ((0 => (314, 155, 0, 
False)));
+            Table.States (622).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 314, 2)));
+            Table.States (623).Action_List.Set_Capacity (10);
+            Add_Action (Table.States (623), (10, 21, 37, 42, 74, 77, 82, 83, 
87, 96), (155, 1), 1, null, null);
+            Table.States (623).Kernel := To_Vector ((0 => (155, 224, 0, 
False)));
+            Table.States (623).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 155, 1)));
+            Table.States (624).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (624), 37, Reduce, (230, 3), 4, null, 
null);
+            Add_Action (Table.States (624), 76, 235);
+            Add_Action (Table.States (624), 84, 237);
+            Add_Action (Table.States (624), 87, Reduce, (230, 3), 4, null, 
null);
+            Add_Action (Table.States (624), 101, 239);
+            Add_Action (Table.States (624), 102, 240);
+            Table.States (624).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (624), 115, 241);
+            Add_Goto (Table.States (624), 322, 242);
+            Table.States (624).Kernel := To_Vector (((128, 239, 2, True), 
(230, 239, 0, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (622).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 230, 4)));
-            Add_Action (Table.States (623), 104, 119);
-            Add_Action (Table.States (623), 105, 33);
-            Add_Action (Table.States (623), 106, 34);
-            Add_Error (Table.States (623));
-            Add_Goto (Table.States (623), 128, 41);
-            Add_Goto (Table.States (623), 239, 772);
-            Add_Goto (Table.States (623), 272, 92);
-            Add_Goto (Table.States (623), 293, 97);
-            Table.States (623).Kernel := To_Vector (((314, 41, 5, False), 
(314, 41, 1, False)));
-            Table.States (623).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (624), 59, 778);
-            Add_Action (Table.States (624), 104, 119);
-            Add_Action (Table.States (624), 105, 33);
-            Add_Action (Table.States (624), 106, 34);
-            Add_Error (Table.States (624));
-            Add_Goto (Table.States (624), 128, 41);
-            Add_Goto (Table.States (624), 239, 779);
-            Add_Goto (Table.States (624), 272, 92);
-            Add_Goto (Table.States (624), 293, 97);
-            Table.States (624).Kernel := To_Vector (((230, 42, 2, False), 
(230, 42, 1, False)));
-            Table.States (624).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (625), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
+            Table.States (624).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 230, 4)));
+            Table.States (625).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (625), 104, 119);
+            Add_Action (Table.States (625), 105, 33);
+            Add_Action (Table.States (625), 106, 34);
+            Table.States (625).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (625), 128, 41);
+            Add_Goto (Table.States (625), 239, 773);
+            Add_Goto (Table.States (625), 272, 92);
+            Add_Goto (Table.States (625), 293, 97);
+            Table.States (625).Kernel := To_Vector (((314, 41, 5, False), 
(314, 41, 1, False)));
+            Table.States (625).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (626).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (626), 59, 779);
+            Add_Action (Table.States (626), 104, 119);
+            Add_Action (Table.States (626), 105, 33);
+            Add_Action (Table.States (626), 106, 34);
+            Table.States (626).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (626), 128, 41);
+            Add_Goto (Table.States (626), 239, 780);
+            Add_Goto (Table.States (626), 272, 92);
+            Add_Goto (Table.States (626), 293, 97);
+            Table.States (626).Kernel := To_Vector (((230, 42, 2, False), 
(230, 42, 1, False)));
+            Table.States (626).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (627).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (627), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 72, 73, 
74, 93, 104, 105, 106, 107), (121, 0), 5,
             aspect_clause_0'Access, null);
-            Table.States (625).Kernel := To_Vector ((0 => (121, 96, 0, 
False)));
-            Table.States (625).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 121, 5)));
-            Add_Action (Table.States (626), 96, 780);
-            Add_Error (Table.States (626));
-            Table.States (626).Kernel := To_Vector ((0 => (127, 192, 1, 
False)));
-            Table.States (626).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 780)));
-            Add_Action (Table.States (627), 38, 781);
-            Add_Error (Table.States (627));
-            Table.States (627).Kernel := To_Vector ((0 => (235, 12, 2, 
False)));
-            Table.States (627).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 781)));
-            Add_Action (Table.States (628), 104, 782);
-            Add_Error (Table.States (628));
-            Add_Goto (Table.States (628), 144, 783);
-            Add_Goto (Table.States (628), 145, 784);
-            Table.States (628).Kernel := To_Vector ((0 => (281, 235, 11, 
False)));
-            Table.States (628).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 782)));
-            Add_Action (Table.States (629), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
+            Table.States (627).Kernel := To_Vector ((0 => (121, 96, 0, 
False)));
+            Table.States (627).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 121, 5)));
+            Table.States (628).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (628), 96, 781);
+            Table.States (628).Kernel := To_Vector ((0 => (127, 192, 1, 
False)));
+            Table.States (628).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 781)));
+            Table.States (629).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (629), 38, 782);
+            Table.States (629).Kernel := To_Vector ((0 => (235, 12, 2, 
False)));
+            Table.States (629).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 782)));
+            Table.States (630).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (630), 104, 783);
+            Table.States (630).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (630), 144, 784);
+            Add_Goto (Table.States (630), 145, 785);
+            Table.States (630).Kernel := To_Vector ((0 => (281, 235, 11, 
False)));
+            Table.States (630).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 783)));
+            Table.States (631).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (631), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 72, 73, 
74, 93, 104, 105, 106, 107), (182, 0), 5,
             enumeration_representation_clause_0'Access, null);
-            Table.States (629).Kernel := To_Vector ((0 => (182, 96, 0, 
False)));
-            Table.States (629).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 182, 5)));
-            Add_Action (Table.States (630), 21, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (630), 35, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (630), 56, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (630), 74, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (630), 76, 235);
-            Add_Action (Table.States (630), 77, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (630), 82, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (630), 84, 237);
-            Add_Action (Table.States (630), 96, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (630), 101, 239);
-            Add_Action (Table.States (630), 102, 240);
-            Add_Error (Table.States (630));
-            Add_Goto (Table.States (630), 115, 241);
-            Add_Goto (Table.States (630), 322, 242);
-            Table.States (630).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
+            Table.States (631).Kernel := To_Vector ((0 => (182, 96, 0, 
False)));
+            Table.States (631).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 182, 5)));
+            Table.States (632).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (632), 21, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (632), 35, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (632), 56, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (632), 74, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (632), 76, 235);
+            Add_Action (Table.States (632), 77, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (632), 82, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (632), 84, 237);
+            Add_Action (Table.States (632), 96, Reduce, (240, 0), 1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (632), 101, 239);
+            Add_Action (Table.States (632), 102, 240);
+            Table.States (632).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (632), 115, 241);
+            Add_Goto (Table.States (632), 322, 242);
+            Table.States (632).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (240, 239, 0, False), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (630).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
-            Add_Action (Table.States (631), (21, 35, 56, 74, 77, 82, 96), 
(291, 0), 3, result_profile_0'Access, null);
-            Table.States (631).Kernel := To_Vector ((0 => (291, 240, 0, 
False)));
-            Table.States (631).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 291, 3)));
-            Add_Action (Table.States (632), 7, Reduce, (118, 1), 0, null, 
null);
-            Add_Action (Table.States (632), 8, 401);
-            Add_Action (Table.States (632), 33, Reduce, (118, 1), 0, null, 
null);
-            Add_Action (Table.States (632), 40, Reduce, (118, 1), 0, null, 
null);
-            Add_Action (Table.States (632), 45, Reduce, (118, 1), 0, null, 
null);
-            Add_Action (Table.States (632), 77, Reduce, (118, 1), 0, null, 
null);
-            Add_Action (Table.States (632), 82, Reduce, (118, 1), 0, null, 
null);
-            Add_Action (Table.States (632), 96, Reduce, (118, 1), 0, null, 
null);
-            Add_Action (Table.States (632), 104, Reduce, (118, 1), 0, null, 
null);
-            Add_Action (Table.States (632), 105, Reduce, (118, 1), 0, null, 
null);
-            Add_Action (Table.States (632), 106, Reduce, (118, 1), 0, null, 
null);
-            Add_Error (Table.States (632));
-            Add_Goto (Table.States (632), 118, 785);
-            Table.States (632).Kernel := To_Vector (((254, 81, 2, False), 
(254, 81, 1, False), (254, 81, 3, False),
+            Table.States (632).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
+            Table.States (633).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (633), (21, 35, 56, 74, 77, 82, 96), 
(291, 0), 3, result_profile_0'Access, null);
+            Table.States (633).Kernel := To_Vector ((0 => (291, 240, 0, 
False)));
+            Table.States (633).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 291, 3)));
+            Table.States (634).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (634), 7, Reduce, (118, 1), 0, null, 
null);
+            Add_Action (Table.States (634), 8, 401);
+            Add_Action (Table.States (634), 33, Reduce, (118, 1), 0, null, 
null);
+            Add_Action (Table.States (634), 40, Reduce, (118, 1), 0, null, 
null);
+            Add_Action (Table.States (634), 45, Reduce, (118, 1), 0, null, 
null);
+            Add_Action (Table.States (634), 77, Reduce, (118, 1), 0, null, 
null);
+            Add_Action (Table.States (634), 82, Reduce, (118, 1), 0, null, 
null);
+            Add_Action (Table.States (634), 96, Reduce, (118, 1), 0, null, 
null);
+            Add_Action (Table.States (634), 104, Reduce, (118, 1), 0, null, 
null);
+            Add_Action (Table.States (634), 105, Reduce, (118, 1), 0, null, 
null);
+            Add_Action (Table.States (634), 106, Reduce, (118, 1), 0, null, 
null);
+            Table.States (634).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (634), 118, 786);
+            Table.States (634).Kernel := To_Vector (((254, 81, 2, False), 
(254, 81, 1, False), (254, 81, 3, False),
             (254, 81, 2, False)));
-            Table.States (632).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 118, 0)));
-            Add_Action (Table.States (633), (21, 35, 56, 58, 72, 74, 77, 82, 
96), (199, 0), 3, formal_part_0'Access,
+            Table.States (634).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 118, 0)));
+            Table.States (635).Action_List.Set_Capacity (9);
+            Add_Action (Table.States (635), (21, 35, 56, 58, 72, 74, 77, 82, 
96), (199, 0), 3, formal_part_0'Access,
             null);
-            Table.States (633).Kernel := To_Vector ((0 => (199, 77, 0, 
False)));
-            Table.States (633).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 199, 3)));
-            Add_Action (Table.States (634), 77, Reduce, (254, 4), 0, null, 
null);
-            Add_Action (Table.States (634), 96, Reduce, (254, 4), 0, null, 
null);
-            Add_Action (Table.States (634), 104, 164);
-            Add_Error (Table.States (634));
-            Add_Goto (Table.States (634), 219, 493);
-            Add_Goto (Table.States (634), 254, 786);
-            Table.States (634).Kernel := To_Vector ((0 => (255, 96, 0, True)));
-            Table.States (634).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 0)));
-            Table.States (634).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (635), 74, 337);
-            Add_Action (Table.States (635), 76, 235);
-            Add_Action (Table.States (635), 84, 237);
-            Add_Action (Table.States (635), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Action (Table.States (635), 101, 239);
-            Add_Action (Table.States (635), 102, 240);
-            Add_Error (Table.States (635));
-            Add_Goto (Table.States (635), 115, 241);
-            Add_Goto (Table.States (635), 122, 787);
-            Add_Goto (Table.States (635), 322, 242);
-            Table.States (635).Kernel := To_Vector (((128, 239, 2, True), 
(215, 239, 1, False), (239, 239, 5, True),
-            (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
-            (293, 239, 2, True)));
-            Table.States (635).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (636), 74, 337);
-            Add_Action (Table.States (636), 76, 235);
-            Add_Action (Table.States (636), 84, 237);
-            Add_Action (Table.States (636), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Action (Table.States (636), 101, 239);
-            Add_Action (Table.States (636), 102, 240);
-            Add_Error (Table.States (636));
-            Add_Goto (Table.States (636), 115, 241);
-            Add_Goto (Table.States (636), 122, 788);
-            Add_Goto (Table.States (636), 322, 242);
-            Table.States (636).Kernel := To_Vector (((128, 239, 2, True), 
(215, 239, 1, False), (239, 239, 5, True),
-            (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
-            (293, 239, 2, True)));
-            Table.States (636).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (635).Kernel := To_Vector ((0 => (199, 77, 0, 
False)));
+            Table.States (635).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 199, 3)));
+            Table.States (636).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (636), 77, Reduce, (254, 4), 0, null, 
null);
+            Add_Action (Table.States (636), 96, Reduce, (254, 4), 0, null, 
null);
+            Add_Action (Table.States (636), 104, 164);
+            Table.States (636).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (636), 219, 493);
+            Add_Goto (Table.States (636), 254, 787);
+            Table.States (636).Kernel := To_Vector ((0 => (255, 96, 0, True)));
+            Table.States (636).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 0)));
+            Table.States (636).Minimal_Complete_Actions_Recursive := True;
+            Table.States (637).Action_List.Set_Capacity (6);
             Add_Action (Table.States (637), 74, 337);
             Add_Action (Table.States (637), 76, 235);
             Add_Action (Table.States (637), 84, 237);
             Add_Action (Table.States (637), 96, Reduce, (122, 1), 0, null, 
null);
             Add_Action (Table.States (637), 101, 239);
             Add_Action (Table.States (637), 102, 240);
-            Add_Error (Table.States (637));
+            Table.States (637).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (637), 115, 241);
-            Add_Goto (Table.States (637), 122, 789);
+            Add_Goto (Table.States (637), 122, 788);
             Add_Goto (Table.States (637), 322, 242);
             Table.States (637).Kernel := To_Vector (((128, 239, 2, True), 
(215, 239, 1, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (637).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (638), 6, 790);
-            Add_Action (Table.States (638), 7, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (638), 11, 699);
-            Add_Action (Table.States (638), 19, 791);
-            Add_Action (Table.States (638), 20, 792);
-            Add_Action (Table.States (638), 34, 702);
-            Add_Action (Table.States (638), 36, 793);
-            Add_Action (Table.States (638), 38, 794);
-            Add_Action (Table.States (638), 39, Reduce, (109, 5), 0, null, 
null);
-            Add_Action (Table.States (638), 40, 386);
-            Add_Action (Table.States (638), 49, Reduce, (111, 5), 0, null, 
null);
-            Add_Action (Table.States (638), 51, 706);
-            Add_Action (Table.States (638), 53, 795);
-            Add_Action (Table.States (638), 64, 709);
-            Add_Action (Table.States (638), 65, 796);
-            Add_Action (Table.States (638), 66, 711);
-            Add_Action (Table.States (638), 76, 797);
-            Add_Error (Table.States (638));
-            Add_Goto (Table.States (638), 109, 798);
-            Add_Goto (Table.States (638), 111, 799);
-            Add_Goto (Table.States (638), 114, 800);
-            Add_Goto (Table.States (638), 120, 801);
-            Add_Goto (Table.States (638), 202, 802);
-            Add_Goto (Table.States (638), 203, 803);
-            Add_Goto (Table.States (638), 228, 804);
-            Add_Goto (Table.States (638), 241, 721);
-            Table.States (638).Kernel := To_Vector (((201, 35, 2, False), 
(201, 35, 2, False)));
-            Table.States (638).Minimal_Complete_Actions := To_Vector 
(((Reduce, 111, 0), (Shift, 65, 796)));
-            Add_Action (Table.States (639), 96, 805);
-            Add_Error (Table.States (639));
-            Table.States (639).Kernel := To_Vector ((0 => (201, 122, 1, 
False)));
-            Table.States (639).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 805)));
-            Add_Action (Table.States (640), 39, 806);
-            Add_Error (Table.States (640));
-            Table.States (640).Kernel := To_Vector ((0 => (204, 35, 3, 
False)));
-            Table.States (640).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 806)));
-            Add_Action (Table.States (641), 41, 642);
-            Add_Action (Table.States (641), 74, 337);
-            Add_Action (Table.States (641), 80, 643);
-            Add_Action (Table.States (641), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Action (Table.States (641), 104, 119);
-            Add_Action (Table.States (641), 105, 33);
-            Add_Action (Table.States (641), 106, 34);
-            Add_Error (Table.States (641));
-            Add_Goto (Table.States (641), 122, 807);
-            Add_Goto (Table.States (641), 128, 41);
-            Add_Goto (Table.States (641), 239, 644);
-            Add_Goto (Table.States (641), 272, 92);
-            Add_Goto (Table.States (641), 293, 97);
-            Add_Goto (Table.States (641), 310, 808);
-            Table.States (641).Kernel := To_Vector (((200, 6, 2, False), (200, 
6, 1, False)));
-            Table.States (641).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (642), (74, 96), (310, 2), 1, null, null);
-            Table.States (642).Kernel := To_Vector ((0 => (310, 41, 0, 
False)));
-            Table.States (642).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 310, 1)));
-            Add_Action (Table.States (643), (74, 96), (310, 1), 1, null, null);
-            Table.States (643).Kernel := To_Vector ((0 => (310, 80, 0, 
False)));
-            Table.States (643).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 310, 1)));
-            Add_Action (Table.States (644), 74, Reduce, (310, 0), 1, 
subprogram_default_0'Access, null);
-            Add_Action (Table.States (644), 76, 235);
-            Add_Action (Table.States (644), 84, 237);
-            Add_Action (Table.States (644), 96, Reduce, (310, 0), 1, 
subprogram_default_0'Access, null);
-            Add_Action (Table.States (644), 101, 239);
-            Add_Action (Table.States (644), 102, 240);
-            Add_Error (Table.States (644));
-            Add_Goto (Table.States (644), 115, 241);
-            Add_Goto (Table.States (644), 322, 242);
-            Table.States (644).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
+            Table.States (638).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (638), 74, 337);
+            Add_Action (Table.States (638), 76, 235);
+            Add_Action (Table.States (638), 84, 237);
+            Add_Action (Table.States (638), 96, Reduce, (122, 1), 0, null, 
null);
+            Add_Action (Table.States (638), 101, 239);
+            Add_Action (Table.States (638), 102, 240);
+            Table.States (638).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (638), 115, 241);
+            Add_Goto (Table.States (638), 122, 789);
+            Add_Goto (Table.States (638), 322, 242);
+            Table.States (638).Kernel := To_Vector (((128, 239, 2, True), 
(215, 239, 1, False), (239, 239, 5, True),
+            (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
+            (293, 239, 2, True)));
+            Table.States (638).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (639).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (639), 74, 337);
+            Add_Action (Table.States (639), 76, 235);
+            Add_Action (Table.States (639), 84, 237);
+            Add_Action (Table.States (639), 96, Reduce, (122, 1), 0, null, 
null);
+            Add_Action (Table.States (639), 101, 239);
+            Add_Action (Table.States (639), 102, 240);
+            Table.States (639).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (639), 115, 241);
+            Add_Goto (Table.States (639), 122, 790);
+            Add_Goto (Table.States (639), 322, 242);
+            Table.States (639).Kernel := To_Vector (((128, 239, 2, True), 
(215, 239, 1, False), (239, 239, 5, True),
+            (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
+            (293, 239, 2, True)));
+            Table.States (639).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (640).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (640), 6, 791);
+            Add_Action (Table.States (640), 7, Reduce, (241, 1), 0, null, 
null);
+            Add_Action (Table.States (640), 11, 701);
+            Add_Action (Table.States (640), 19, 792);
+            Add_Action (Table.States (640), 20, 793);
+            Add_Action (Table.States (640), 34, 704);
+            Add_Action (Table.States (640), 36, 794);
+            Add_Action (Table.States (640), 38, 795);
+            Add_Action (Table.States (640), 39, Reduce, (109, 5), 0, null, 
null);
+            Add_Action (Table.States (640), 40, 386);
+            Add_Action (Table.States (640), 49, Reduce, (111, 5), 0, null, 
null);
+            Add_Action (Table.States (640), 51, 708);
+            Add_Action (Table.States (640), 53, 796);
+            Add_Action (Table.States (640), 64, 711);
+            Add_Action (Table.States (640), 65, 797);
+            Add_Action (Table.States (640), 66, 713);
+            Add_Action (Table.States (640), 76, 798);
+            Table.States (640).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (640), 109, 799);
+            Add_Goto (Table.States (640), 111, 800);
+            Add_Goto (Table.States (640), 114, 801);
+            Add_Goto (Table.States (640), 120, 802);
+            Add_Goto (Table.States (640), 202, 803);
+            Add_Goto (Table.States (640), 203, 804);
+            Add_Goto (Table.States (640), 228, 805);
+            Add_Goto (Table.States (640), 241, 723);
+            Table.States (640).Kernel := To_Vector (((201, 35, 2, False), 
(201, 35, 2, False)));
+            Table.States (640).Minimal_Complete_Actions := To_Vector 
(((Reduce, 111, 0), (Shift, 65, 797)));
+            Table.States (641).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (641), 96, 806);
+            Table.States (641).Kernel := To_Vector ((0 => (201, 122, 1, 
False)));
+            Table.States (641).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 806)));
+            Table.States (642).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (642), 39, 807);
+            Table.States (642).Kernel := To_Vector ((0 => (204, 35, 3, 
False)));
+            Table.States (642).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 807)));
+            Table.States (643).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (643), 41, 644);
+            Add_Action (Table.States (643), 74, 337);
+            Add_Action (Table.States (643), 80, 645);
+            Add_Action (Table.States (643), 96, Reduce, (122, 1), 0, null, 
null);
+            Add_Action (Table.States (643), 104, 119);
+            Add_Action (Table.States (643), 105, 33);
+            Add_Action (Table.States (643), 106, 34);
+            Table.States (643).Goto_List.Set_Capacity (6);
+            Add_Goto (Table.States (643), 122, 808);
+            Add_Goto (Table.States (643), 128, 41);
+            Add_Goto (Table.States (643), 239, 646);
+            Add_Goto (Table.States (643), 272, 92);
+            Add_Goto (Table.States (643), 293, 97);
+            Add_Goto (Table.States (643), 310, 809);
+            Table.States (643).Kernel := To_Vector (((200, 6, 2, False), (200, 
6, 1, False)));
+            Table.States (643).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (644).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (644), (74, 96), (310, 2), 1, null, null);
+            Table.States (644).Kernel := To_Vector ((0 => (310, 41, 0, 
False)));
+            Table.States (644).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 310, 1)));
+            Table.States (645).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (645), (74, 96), (310, 1), 1, null, null);
+            Table.States (645).Kernel := To_Vector ((0 => (310, 80, 0, 
False)));
+            Table.States (645).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 310, 1)));
+            Table.States (646).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (646), 74, Reduce, (310, 0), 1, 
subprogram_default_0'Access, null);
+            Add_Action (Table.States (646), 76, 235);
+            Add_Action (Table.States (646), 84, 237);
+            Add_Action (Table.States (646), 96, Reduce, (310, 0), 1, 
subprogram_default_0'Access, null);
+            Add_Action (Table.States (646), 101, 239);
+            Add_Action (Table.States (646), 102, 240);
+            Table.States (646).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (646), 115, 241);
+            Add_Goto (Table.States (646), 322, 242);
+            Table.States (646).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (272, 239, 3, True), (293, 239, 2, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (310, 239, 0, False)));
-            Table.States (644).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 310, 1)));
-            Add_Action (Table.States (645), 74, 337);
-            Add_Action (Table.States (645), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (645));
-            Add_Goto (Table.States (645), 122, 809);
-            Table.States (645).Kernel := To_Vector ((0 => (200, 310, 1, 
False)));
-            Table.States (645).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (646), (29, 47, 48, 50, 69, 71, 74, 104), 
(200, 3), 4,
+            Table.States (646).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 310, 1)));
+            Table.States (647).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (647), 74, 337);
+            Add_Action (Table.States (647), 96, Reduce, (122, 1), 0, null, 
null);
+            Table.States (647).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (647), 122, 810);
+            Table.States (647).Kernel := To_Vector ((0 => (200, 310, 1, 
False)));
+            Table.States (647).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (648).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (648), (29, 47, 48, 50, 69, 71, 74, 104), 
(200, 3), 4,
             formal_subprogram_declaration_3'Access, null);
-            Table.States (646).Kernel := To_Vector ((0 => (200, 96, 0, 
False)));
-            Table.States (646).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 200, 4)));
-            Add_Action (Table.States (647), (7, 40, 74, 82, 96, 104, 105, 
106), (236, 1), 2, null, null);
-            Table.States (647).Kernel := To_Vector ((0 => (236, 45, 0, 
False)));
-            Table.States (647).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 236, 2)));
-            Add_Action (Table.States (648), 74, 337);
-            Add_Action (Table.States (648), 82, 810);
-            Add_Action (Table.States (648), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (648));
-            Add_Goto (Table.States (648), 122, 811);
-            Table.States (648).Kernel := To_Vector (((198, 114, 2, False), 
(198, 114, 1, False)));
-            Table.States (648).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (649), 7, 556);
-            Add_Action (Table.States (649), 104, 119);
-            Add_Action (Table.States (649), 105, 33);
-            Add_Action (Table.States (649), 106, 34);
-            Add_Error (Table.States (649));
-            Add_Goto (Table.States (649), 128, 41);
-            Add_Goto (Table.States (649), 239, 812);
-            Add_Goto (Table.States (649), 272, 92);
-            Add_Goto (Table.States (649), 293, 97);
-            Table.States (649).Kernel := To_Vector (((114, 241, 2, False), 
(114, 241, 3, True), (114, 241, 2, False),
-            (198, 241, 3, False), (198, 241, 2, False)));
-            Table.States (649).Minimal_Complete_Actions := To_Vector (((Shift, 
7, 556), (Shift, 104, 119)));
-            Add_Action (Table.States (650), 4, 1);
-            Add_Action (Table.States (650), 5, 2);
-            Add_Action (Table.States (650), 13, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (650), 15, 3);
-            Add_Action (Table.States (650), 17, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (650), 18, 4);
-            Add_Action (Table.States (650), 24, Reduce, (300, 1), 0, null, 
null);
-            Add_Action (Table.States (650), 27, 5);
-            Add_Action (Table.States (650), 28, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (650), 31, 9);
-            Add_Action (Table.States (650), 32, 10);
-            Add_Action (Table.States (650), 37, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (650), 41, 13);
-            Add_Action (Table.States (650), 48, 16);
-            Add_Action (Table.States (650), 52, 20);
-            Add_Action (Table.States (650), 57, 21);
-            Add_Action (Table.States (650), 58, 22);
-            Add_Action (Table.States (650), 61, 24);
-            Add_Action (Table.States (650), 73, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (650), 93, 31);
-            Add_Action (Table.States (650), 104, 360);
-            Add_Action (Table.States (650), 105, 33);
-            Add_Action (Table.States (650), 106, 34);
-            Add_Error (Table.States (650));
-            Add_Goto (Table.States (650), 113, 36);
-            Add_Goto (Table.States (650), 123, 38);
-            Add_Goto (Table.States (650), 126, 39);
-            Add_Goto (Table.States (650), 128, 41);
-            Add_Goto (Table.States (650), 131, 42);
-            Add_Goto (Table.States (650), 132, 43);
-            Add_Goto (Table.States (650), 133, 44);
-            Add_Goto (Table.States (650), 139, 47);
-            Add_Goto (Table.States (650), 151, 50);
-            Add_Goto (Table.States (650), 152, 51);
-            Add_Goto (Table.States (650), 161, 53);
-            Add_Goto (Table.States (650), 190, 57);
-            Add_Goto (Table.States (650), 196, 59);
-            Add_Goto (Table.States (650), 217, 68);
-            Add_Goto (Table.States (650), 222, 70);
-            Add_Goto (Table.States (650), 232, 72);
-            Add_Goto (Table.States (650), 239, 73);
-            Add_Goto (Table.States (650), 257, 83);
-            Add_Goto (Table.States (650), 261, 86);
-            Add_Goto (Table.States (650), 272, 92);
-            Add_Goto (Table.States (650), 276, 93);
-            Add_Goto (Table.States (650), 290, 96);
-            Add_Goto (Table.States (650), 293, 97);
-            Add_Goto (Table.States (650), 294, 98);
-            Add_Goto (Table.States (650), 298, 99);
-            Add_Goto (Table.States (650), 299, 361);
-            Add_Goto (Table.States (650), 300, 813);
-            Add_Goto (Table.States (650), 302, 100);
-            Add_Goto (Table.States (650), 303, 101);
-            Add_Goto (Table.States (650), 306, 363);
-            Add_Goto (Table.States (650), 323, 114);
-            Table.States (650).Kernel := To_Vector ((0 => (222, 22, 3, 
False)));
-            Table.States (650).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
-            Add_Action (Table.States (651), 3, 121);
-            Add_Action (Table.States (651), 39, 122);
-            Add_Action (Table.States (651), 40, 123);
-            Add_Action (Table.States (651), 41, 124);
-            Add_Action (Table.States (651), 52, 125);
-            Add_Action (Table.States (651), 68, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (651), 76, 126);
-            Add_Action (Table.States (651), 94, 127);
-            Add_Action (Table.States (651), 95, 128);
-            Add_Action (Table.States (651), 103, 129);
+            Table.States (648).Kernel := To_Vector ((0 => (200, 96, 0, 
False)));
+            Table.States (648).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 200, 4)));
+            Table.States (649).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (649), (7, 40, 74, 82, 96, 104, 105, 
106), (236, 1), 2, null, null);
+            Table.States (649).Kernel := To_Vector ((0 => (236, 45, 0, 
False)));
+            Table.States (649).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 236, 2)));
+            Table.States (650).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (650), 74, 337);
+            Add_Action (Table.States (650), 82, 811);
+            Add_Action (Table.States (650), 96, Reduce, (122, 1), 0, null, 
null);
+            Table.States (650).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (650), 122, 812);
+            Table.States (650).Kernel := To_Vector (((198, 114, 2, False), 
(198, 114, 1, False)));
+            Table.States (650).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (651).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (651), 7, 556);
             Add_Action (Table.States (651), 104, 119);
             Add_Action (Table.States (651), 105, 33);
             Add_Action (Table.States (651), 106, 34);
-            Add_Error (Table.States (651));
-            Add_Goto (Table.States (651), 117, 130);
+            Table.States (651).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (651), 128, 41);
-            Add_Goto (Table.States (651), 191, 131);
-            Add_Goto (Table.States (651), 192, 814);
-            Add_Goto (Table.States (651), 197, 133);
-            Add_Goto (Table.States (651), 239, 134);
-            Add_Goto (Table.States (651), 258, 135);
+            Add_Goto (Table.States (651), 239, 813);
             Add_Goto (Table.States (651), 272, 92);
-            Add_Goto (Table.States (651), 275, 136);
-            Add_Goto (Table.States (651), 282, 137);
-            Add_Goto (Table.States (651), 283, 138);
-            Add_Goto (Table.States (651), 284, 139);
-            Add_Goto (Table.States (651), 285, 140);
-            Add_Goto (Table.States (651), 286, 141);
-            Add_Goto (Table.States (651), 287, 142);
             Add_Goto (Table.States (651), 293, 97);
-            Add_Goto (Table.States (651), 301, 143);
-            Add_Goto (Table.States (651), 320, 144);
-            Add_Goto (Table.States (651), 321, 145);
-            Add_Goto (Table.States (651), 330, 146);
-            Table.States (651).Kernel := To_Vector ((0 => (174, 23, 1, 
False)));
-            Table.States (651).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (652), 32, 815);
-            Add_Error (Table.States (652));
-            Table.States (652).Kernel := To_Vector ((0 => (222, 24, 2, 
False)));
-            Table.States (652).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 32, 815)));
-            Add_Action (Table.States (653), (22, 23, 24), (175, 1), 1, null, 
null);
-            Table.States (653).Kernel := To_Vector ((0 => (175, 174, 0, 
False)));
-            Table.States (653).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 175, 1)));
-            Add_Action (Table.States (654), 22, 816);
-            Add_Action (Table.States (654), 23, 651);
-            Add_Action (Table.States (654), 24, 817);
-            Add_Error (Table.States (654));
-            Add_Goto (Table.States (654), 174, 818);
-            Table.States (654).Kernel := To_Vector (((175, 175, 2, True), 
(222, 175, 4, False), (222, 175, 3, False)));
-            Table.States (654).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 817)));
-            Add_Action (Table.States (655), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
+            Table.States (651).Kernel := To_Vector (((114, 241, 2, False), 
(114, 241, 3, True), (114, 241, 2, False),
+            (198, 241, 3, False), (198, 241, 2, False)));
+            Table.States (651).Minimal_Complete_Actions := To_Vector (((Shift, 
7, 556), (Shift, 104, 119)));
+            Table.States (652).Action_List.Set_Capacity (23);
+            Add_Action (Table.States (652), 4, 1);
+            Add_Action (Table.States (652), 5, 2);
+            Add_Action (Table.States (652), 13, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (652), 15, 3);
+            Add_Action (Table.States (652), 17, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (652), 18, 4);
+            Add_Action (Table.States (652), 24, Reduce, (300, 1), 0, null, 
null);
+            Add_Action (Table.States (652), 27, 5);
+            Add_Action (Table.States (652), 28, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (652), 31, 9);
+            Add_Action (Table.States (652), 32, 10);
+            Add_Action (Table.States (652), 37, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (652), 41, 13);
+            Add_Action (Table.States (652), 48, 16);
+            Add_Action (Table.States (652), 52, 20);
+            Add_Action (Table.States (652), 57, 21);
+            Add_Action (Table.States (652), 58, 22);
+            Add_Action (Table.States (652), 61, 24);
+            Add_Action (Table.States (652), 73, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (652), 93, 31);
+            Add_Action (Table.States (652), 104, 360);
+            Add_Action (Table.States (652), 105, 33);
+            Add_Action (Table.States (652), 106, 34);
+            Table.States (652).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (652), 113, 36);
+            Add_Goto (Table.States (652), 123, 38);
+            Add_Goto (Table.States (652), 126, 39);
+            Add_Goto (Table.States (652), 128, 41);
+            Add_Goto (Table.States (652), 131, 42);
+            Add_Goto (Table.States (652), 132, 43);
+            Add_Goto (Table.States (652), 133, 44);
+            Add_Goto (Table.States (652), 139, 47);
+            Add_Goto (Table.States (652), 151, 50);
+            Add_Goto (Table.States (652), 152, 51);
+            Add_Goto (Table.States (652), 161, 53);
+            Add_Goto (Table.States (652), 190, 57);
+            Add_Goto (Table.States (652), 196, 59);
+            Add_Goto (Table.States (652), 217, 68);
+            Add_Goto (Table.States (652), 222, 70);
+            Add_Goto (Table.States (652), 232, 72);
+            Add_Goto (Table.States (652), 239, 73);
+            Add_Goto (Table.States (652), 257, 83);
+            Add_Goto (Table.States (652), 261, 86);
+            Add_Goto (Table.States (652), 272, 92);
+            Add_Goto (Table.States (652), 276, 93);
+            Add_Goto (Table.States (652), 290, 96);
+            Add_Goto (Table.States (652), 293, 97);
+            Add_Goto (Table.States (652), 294, 98);
+            Add_Goto (Table.States (652), 298, 99);
+            Add_Goto (Table.States (652), 299, 361);
+            Add_Goto (Table.States (652), 300, 814);
+            Add_Goto (Table.States (652), 302, 100);
+            Add_Goto (Table.States (652), 303, 101);
+            Add_Goto (Table.States (652), 306, 363);
+            Add_Goto (Table.States (652), 323, 114);
+            Table.States (652).Kernel := To_Vector ((0 => (222, 22, 3, 
False)));
+            Table.States (652).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (653).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (653), 3, 121);
+            Add_Action (Table.States (653), 39, 122);
+            Add_Action (Table.States (653), 40, 123);
+            Add_Action (Table.States (653), 41, 124);
+            Add_Action (Table.States (653), 52, 125);
+            Add_Action (Table.States (653), 68, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (653), 76, 126);
+            Add_Action (Table.States (653), 94, 127);
+            Add_Action (Table.States (653), 95, 128);
+            Add_Action (Table.States (653), 103, 129);
+            Add_Action (Table.States (653), 104, 119);
+            Add_Action (Table.States (653), 105, 33);
+            Add_Action (Table.States (653), 106, 34);
+            Table.States (653).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (653), 117, 130);
+            Add_Goto (Table.States (653), 128, 41);
+            Add_Goto (Table.States (653), 191, 131);
+            Add_Goto (Table.States (653), 192, 815);
+            Add_Goto (Table.States (653), 197, 133);
+            Add_Goto (Table.States (653), 239, 134);
+            Add_Goto (Table.States (653), 258, 135);
+            Add_Goto (Table.States (653), 272, 92);
+            Add_Goto (Table.States (653), 275, 136);
+            Add_Goto (Table.States (653), 282, 137);
+            Add_Goto (Table.States (653), 283, 138);
+            Add_Goto (Table.States (653), 284, 139);
+            Add_Goto (Table.States (653), 285, 140);
+            Add_Goto (Table.States (653), 286, 141);
+            Add_Goto (Table.States (653), 287, 142);
+            Add_Goto (Table.States (653), 293, 97);
+            Add_Goto (Table.States (653), 301, 143);
+            Add_Goto (Table.States (653), 320, 144);
+            Add_Goto (Table.States (653), 321, 145);
+            Add_Goto (Table.States (653), 330, 146);
+            Table.States (653).Kernel := To_Vector ((0 => (174, 23, 1, 
False)));
+            Table.States (653).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (654).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (654), 32, 816);
+            Table.States (654).Kernel := To_Vector ((0 => (222, 24, 2, 
False)));
+            Table.States (654).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 32, 816)));
+            Table.States (655).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (655), (22, 23, 24), (175, 1), 1, null, 
null);
+            Table.States (655).Kernel := To_Vector ((0 => (175, 174, 0, 
False)));
+            Table.States (655).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 175, 1)));
+            Table.States (656).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (656), 22, 817);
+            Add_Action (Table.States (656), 23, 653);
+            Add_Action (Table.States (656), 24, 818);
+            Table.States (656).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (656), 174, 819);
+            Table.States (656).Kernel := To_Vector (((175, 175, 2, True), 
(222, 175, 4, False), (222, 175, 3, False)));
+            Table.States (656).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 818)));
+            Table.States (657).Action_List.Set_Capacity (39);
+            Add_Action (Table.States (657), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
             48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 93, 
104, 105, 106, 107), (332, 0), 5,
             with_clause_0'Access, null);
-            Table.States (655).Kernel := To_Vector ((0 => (332, 96, 0, 
False)));
-            Table.States (655).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 332, 5)));
-            Add_Action (Table.States (656), 74, 337);
-            Add_Action (Table.States (656), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (656));
-            Add_Goto (Table.States (656), 122, 819);
-            Table.States (656).Kernel := To_Vector ((0 => (248, 60, 1, 
False)));
-            Table.States (656).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (657), 13, Reduce, (159, 1), 0, null, 
null);
-            Add_Action (Table.States (657), 24, Reduce, (159, 1), 0, null, 
null);
-            Add_Action (Table.States (657), 25, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (657), 28, 183);
-            Add_Action (Table.States (657), 29, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (657), 30, 8);
-            Add_Action (Table.States (657), 40, 12);
-            Add_Action (Table.States (657), 46, 14);
-            Add_Action (Table.States (657), 47, 15);
-            Add_Action (Table.States (657), 48, 16);
-            Add_Action (Table.States (657), 50, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (657), 51, 19);
-            Add_Action (Table.States (657), 63, 25);
-            Add_Action (Table.States (657), 66, 26);
-            Add_Action (Table.States (657), 69, 27);
-            Add_Action (Table.States (657), 71, 28);
-            Add_Action (Table.States (657), 104, 185);
-            Add_Error (Table.States (657));
-            Add_Goto (Table.States (657), 112, 35);
-            Add_Goto (Table.States (657), 121, 37);
-            Add_Goto (Table.States (657), 127, 40);
-            Add_Goto (Table.States (657), 134, 45);
-            Add_Goto (Table.States (657), 135, 46);
-            Add_Goto (Table.States (657), 157, 391);
-            Add_Goto (Table.States (657), 158, 392);
-            Add_Goto (Table.States (657), 159, 820);
-            Add_Goto (Table.States (657), 179, 54);
-            Add_Goto (Table.States (657), 182, 55);
-            Add_Goto (Table.States (657), 186, 56);
-            Add_Goto (Table.States (657), 193, 58);
-            Add_Goto (Table.States (657), 206, 60);
-            Add_Goto (Table.States (657), 207, 61);
-            Add_Goto (Table.States (657), 209, 62);
-            Add_Goto (Table.States (657), 210, 63);
-            Add_Goto (Table.States (657), 213, 64);
-            Add_Goto (Table.States (657), 214, 65);
-            Add_Goto (Table.States (657), 215, 66);
-            Add_Goto (Table.States (657), 216, 67);
-            Add_Goto (Table.States (657), 219, 69);
-            Add_Goto (Table.States (657), 223, 71);
-            Add_Goto (Table.States (657), 243, 74);
-            Add_Goto (Table.States (657), 244, 75);
-            Add_Goto (Table.States (657), 245, 76);
-            Add_Goto (Table.States (657), 246, 77);
-            Add_Goto (Table.States (657), 247, 78);
-            Add_Goto (Table.States (657), 248, 79);
-            Add_Goto (Table.States (657), 249, 80);
-            Add_Goto (Table.States (657), 250, 81);
-            Add_Goto (Table.States (657), 251, 82);
-            Add_Goto (Table.States (657), 257, 394);
-            Add_Goto (Table.States (657), 259, 84);
-            Add_Goto (Table.States (657), 260, 85);
-            Add_Goto (Table.States (657), 262, 87);
-            Add_Goto (Table.States (657), 263, 88);
-            Add_Goto (Table.States (657), 264, 89);
-            Add_Goto (Table.States (657), 265, 90);
-            Add_Goto (Table.States (657), 271, 91);
-            Add_Goto (Table.States (657), 281, 94);
-            Add_Goto (Table.States (657), 289, 95);
-            Add_Goto (Table.States (657), 304, 102);
-            Add_Goto (Table.States (657), 305, 103);
-            Add_Goto (Table.States (657), 307, 105);
-            Add_Goto (Table.States (657), 308, 106);
-            Add_Goto (Table.States (657), 309, 107);
-            Add_Goto (Table.States (657), 311, 108);
-            Add_Goto (Table.States (657), 313, 109);
-            Add_Goto (Table.States (657), 316, 111);
-            Add_Goto (Table.States (657), 317, 112);
-            Add_Goto (Table.States (657), 319, 113);
-            Add_Goto (Table.States (657), 325, 115);
-            Add_Goto (Table.States (657), 331, 116);
-            Table.States (657).Kernel := To_Vector (((247, 35, 3, False), 
(247, 35, 2, False)));
-            Table.States (657).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
+            Table.States (657).Kernel := To_Vector ((0 => (332, 96, 0, 
False)));
+            Table.States (657).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 332, 5)));
+            Table.States (658).Action_List.Set_Capacity (2);
             Add_Action (Table.States (658), 74, 337);
-            Add_Action (Table.States (658), 76, 235);
-            Add_Action (Table.States (658), 84, 237);
             Add_Action (Table.States (658), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Action (Table.States (658), 101, 239);
-            Add_Action (Table.States (658), 102, 240);
-            Add_Error (Table.States (658));
-            Add_Goto (Table.States (658), 115, 241);
-            Add_Goto (Table.States (658), 122, 821);
-            Add_Goto (Table.States (658), 322, 242);
-            Table.States (658).Kernel := To_Vector (((128, 239, 2, True), 
(213, 239, 1, False), (239, 239, 5, True),
+            Table.States (658).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (658), 122, 820);
+            Table.States (658).Kernel := To_Vector ((0 => (248, 60, 1, 
False)));
+            Table.States (658).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (659).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (659), 13, Reduce, (159, 1), 0, null, 
null);
+            Add_Action (Table.States (659), 24, Reduce, (159, 1), 0, null, 
null);
+            Add_Action (Table.States (659), 25, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (659), 28, 183);
+            Add_Action (Table.States (659), 29, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (659), 30, 8);
+            Add_Action (Table.States (659), 40, 12);
+            Add_Action (Table.States (659), 46, 14);
+            Add_Action (Table.States (659), 47, 15);
+            Add_Action (Table.States (659), 48, 16);
+            Add_Action (Table.States (659), 50, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (659), 51, 19);
+            Add_Action (Table.States (659), 63, 25);
+            Add_Action (Table.States (659), 66, 26);
+            Add_Action (Table.States (659), 69, 27);
+            Add_Action (Table.States (659), 71, 28);
+            Add_Action (Table.States (659), 104, 185);
+            Table.States (659).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (659), 112, 35);
+            Add_Goto (Table.States (659), 121, 37);
+            Add_Goto (Table.States (659), 127, 40);
+            Add_Goto (Table.States (659), 134, 45);
+            Add_Goto (Table.States (659), 135, 46);
+            Add_Goto (Table.States (659), 157, 391);
+            Add_Goto (Table.States (659), 158, 392);
+            Add_Goto (Table.States (659), 159, 821);
+            Add_Goto (Table.States (659), 179, 54);
+            Add_Goto (Table.States (659), 182, 55);
+            Add_Goto (Table.States (659), 186, 56);
+            Add_Goto (Table.States (659), 193, 58);
+            Add_Goto (Table.States (659), 206, 60);
+            Add_Goto (Table.States (659), 207, 61);
+            Add_Goto (Table.States (659), 209, 62);
+            Add_Goto (Table.States (659), 210, 63);
+            Add_Goto (Table.States (659), 213, 64);
+            Add_Goto (Table.States (659), 214, 65);
+            Add_Goto (Table.States (659), 215, 66);
+            Add_Goto (Table.States (659), 216, 67);
+            Add_Goto (Table.States (659), 219, 69);
+            Add_Goto (Table.States (659), 223, 71);
+            Add_Goto (Table.States (659), 243, 74);
+            Add_Goto (Table.States (659), 244, 75);
+            Add_Goto (Table.States (659), 245, 76);
+            Add_Goto (Table.States (659), 246, 77);
+            Add_Goto (Table.States (659), 247, 78);
+            Add_Goto (Table.States (659), 248, 79);
+            Add_Goto (Table.States (659), 249, 80);
+            Add_Goto (Table.States (659), 250, 81);
+            Add_Goto (Table.States (659), 251, 82);
+            Add_Goto (Table.States (659), 257, 394);
+            Add_Goto (Table.States (659), 259, 84);
+            Add_Goto (Table.States (659), 260, 85);
+            Add_Goto (Table.States (659), 262, 87);
+            Add_Goto (Table.States (659), 263, 88);
+            Add_Goto (Table.States (659), 264, 89);
+            Add_Goto (Table.States (659), 265, 90);
+            Add_Goto (Table.States (659), 271, 91);
+            Add_Goto (Table.States (659), 281, 94);
+            Add_Goto (Table.States (659), 289, 95);
+            Add_Goto (Table.States (659), 304, 102);
+            Add_Goto (Table.States (659), 305, 103);
+            Add_Goto (Table.States (659), 307, 105);
+            Add_Goto (Table.States (659), 308, 106);
+            Add_Goto (Table.States (659), 309, 107);
+            Add_Goto (Table.States (659), 311, 108);
+            Add_Goto (Table.States (659), 313, 109);
+            Add_Goto (Table.States (659), 316, 111);
+            Add_Goto (Table.States (659), 317, 112);
+            Add_Goto (Table.States (659), 319, 113);
+            Add_Goto (Table.States (659), 325, 115);
+            Add_Goto (Table.States (659), 331, 116);
+            Table.States (659).Kernel := To_Vector (((247, 35, 3, False), 
(247, 35, 2, False)));
+            Table.States (659).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
+            Table.States (660).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (660), 74, 337);
+            Add_Action (Table.States (660), 76, 235);
+            Add_Action (Table.States (660), 84, 237);
+            Add_Action (Table.States (660), 96, Reduce, (122, 1), 0, null, 
null);
+            Add_Action (Table.States (660), 101, 239);
+            Add_Action (Table.States (660), 102, 240);
+            Table.States (660).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (660), 115, 241);
+            Add_Goto (Table.States (660), 122, 822);
+            Add_Goto (Table.States (660), 322, 242);
+            Table.States (660).Kernel := To_Vector (((128, 239, 2, True), 
(213, 239, 1, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (658).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (659), 96, 822);
-            Add_Error (Table.States (659));
-            Table.States (659).Kernel := To_Vector ((0 => (250, 122, 1, 
False)));
-            Table.States (659).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 822)));
-            Add_Action (Table.States (660), 24, 823);
-            Add_Action (Table.States (660), 49, 824);
-            Add_Error (Table.States (660));
-            Table.States (660).Kernel := To_Vector (((251, 159, 2, False), 
(251, 159, 1, False)));
-            Table.States (660).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 823)));
-            Add_Action (Table.States (661), 96, 825);
-            Add_Error (Table.States (661));
-            Table.States (661).Kernel := To_Vector ((0 => (257, 77, 1, 
False)));
-            Table.States (661).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 825)));
-            Add_Action (Table.States (662), 96, 826);
-            Add_Error (Table.States (662));
-            Table.States (662).Kernel := To_Vector ((0 => (257, 77, 1, 
False)));
-            Table.States (662).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 826)));
-            Add_Action (Table.States (663), 74, 337);
-            Add_Action (Table.States (663), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (663));
-            Add_Goto (Table.States (663), 122, 827);
-            Table.States (663).Kernel := To_Vector ((0 => (265, 60, 1, 
False)));
-            Table.States (663).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (664), 24, Reduce, (269, 1), 0, null, 
null);
-            Add_Action (Table.States (664), 25, 828);
-            Add_Action (Table.States (664), 28, 183);
-            Add_Action (Table.States (664), 29, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (664), 40, 12);
-            Add_Action (Table.States (664), 46, 14);
-            Add_Action (Table.States (664), 50, Reduce, (246, 2), 0, null, 
null);
-            Add_Error (Table.States (664));
-            Add_Goto (Table.States (664), 121, 829);
-            Add_Goto (Table.States (664), 127, 40);
-            Add_Goto (Table.States (664), 176, 830);
-            Add_Goto (Table.States (664), 182, 55);
-            Add_Goto (Table.States (664), 193, 831);
-            Add_Goto (Table.States (664), 207, 61);
-            Add_Goto (Table.States (664), 243, 832);
-            Add_Goto (Table.States (664), 246, 833);
-            Add_Goto (Table.States (664), 262, 87);
-            Add_Goto (Table.States (664), 267, 834);
-            Add_Goto (Table.States (664), 268, 835);
-            Add_Goto (Table.States (664), 269, 836);
-            Add_Goto (Table.States (664), 281, 94);
-            Add_Goto (Table.States (664), 307, 837);
-            Add_Goto (Table.States (664), 309, 838);
-            Table.States (664).Kernel := To_Vector ((0 => (264, 35, 2, 
False)));
-            Table.States (664).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 269, 0)));
+            Table.States (660).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
          end Subr_12;
          procedure Subr_13
          is begin
-            Add_Action (Table.States (665), 35, 839);
-            Add_Error (Table.States (665));
-            Table.States (665).Kernel := To_Vector (((271, 122, 6, False), 
(271, 122, 3, False)));
-            Table.States (665).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 839)));
-            Add_Action (Table.States (666), 104, 119);
-            Add_Action (Table.States (666), 105, 33);
-            Add_Action (Table.States (666), 106, 34);
-            Add_Error (Table.States (666));
-            Add_Goto (Table.States (666), 128, 41);
-            Add_Goto (Table.States (666), 227, 840);
-            Add_Goto (Table.States (666), 239, 841);
-            Add_Goto (Table.States (666), 272, 92);
-            Add_Goto (Table.States (666), 293, 97);
-            Table.States (666).Kernel := To_Vector ((0 => (304, 39, 4, 
False)));
-            Table.States (666).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (667), 24, 842);
-            Add_Action (Table.States (667), 49, 843);
-            Add_Error (Table.States (667));
-            Table.States (667).Kernel := To_Vector (((266, 159, 2, False), 
(266, 159, 1, False)));
-            Table.States (667).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 842)));
-            Add_Action (Table.States (668), 96, 844);
-            Add_Error (Table.States (668));
-            Table.States (668).Kernel := To_Vector ((0 => (304, 266, 1, 
False)));
-            Table.States (668).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 844)));
-            Add_Action (Table.States (669), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
+            Table.States (661).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (661), 96, 823);
+            Table.States (661).Kernel := To_Vector ((0 => (250, 122, 1, 
False)));
+            Table.States (661).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 823)));
+            Table.States (662).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (662), 24, 824);
+            Add_Action (Table.States (662), 49, 825);
+            Table.States (662).Kernel := To_Vector (((251, 159, 2, False), 
(251, 159, 1, False)));
+            Table.States (662).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 824)));
+            Table.States (663).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (663), 96, 826);
+            Table.States (663).Kernel := To_Vector ((0 => (257, 77, 1, 
False)));
+            Table.States (663).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 826)));
+            Table.States (664).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (664), 96, 827);
+            Table.States (664).Kernel := To_Vector ((0 => (257, 77, 1, 
False)));
+            Table.States (664).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 827)));
+            Table.States (665).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (665), 74, 337);
+            Add_Action (Table.States (665), 96, Reduce, (122, 1), 0, null, 
null);
+            Table.States (665).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (665), 122, 828);
+            Table.States (665).Kernel := To_Vector ((0 => (265, 60, 1, 
False)));
+            Table.States (665).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (666).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (666), 24, Reduce, (269, 1), 0, null, 
null);
+            Add_Action (Table.States (666), 25, 829);
+            Add_Action (Table.States (666), 28, 183);
+            Add_Action (Table.States (666), 29, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (666), 40, 12);
+            Add_Action (Table.States (666), 46, 14);
+            Add_Action (Table.States (666), 50, Reduce, (246, 2), 0, null, 
null);
+            Table.States (666).Goto_List.Set_Capacity (15);
+            Add_Goto (Table.States (666), 121, 830);
+            Add_Goto (Table.States (666), 127, 40);
+            Add_Goto (Table.States (666), 176, 831);
+            Add_Goto (Table.States (666), 182, 55);
+            Add_Goto (Table.States (666), 193, 832);
+            Add_Goto (Table.States (666), 207, 61);
+            Add_Goto (Table.States (666), 243, 833);
+            Add_Goto (Table.States (666), 246, 834);
+            Add_Goto (Table.States (666), 262, 87);
+            Add_Goto (Table.States (666), 267, 835);
+            Add_Goto (Table.States (666), 268, 836);
+            Add_Goto (Table.States (666), 269, 837);
+            Add_Goto (Table.States (666), 281, 94);
+            Add_Goto (Table.States (666), 307, 838);
+            Add_Goto (Table.States (666), 309, 839);
+            Table.States (666).Kernel := To_Vector ((0 => (264, 35, 2, 
False)));
+            Table.States (666).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 269, 0)));
+            Table.States (667).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (667), 35, 840);
+            Table.States (667).Kernel := To_Vector (((271, 122, 6, False), 
(271, 122, 3, False)));
+            Table.States (667).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 840)));
+            Table.States (668).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (668), 104, 119);
+            Add_Action (Table.States (668), 105, 33);
+            Add_Action (Table.States (668), 106, 34);
+            Table.States (668).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (668), 128, 41);
+            Add_Goto (Table.States (668), 227, 841);
+            Add_Goto (Table.States (668), 239, 842);
+            Add_Goto (Table.States (668), 272, 92);
+            Add_Goto (Table.States (668), 293, 97);
+            Table.States (668).Kernel := To_Vector ((0 => (304, 39, 4, 
False)));
+            Table.States (668).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (669).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (669), 24, 843);
+            Add_Action (Table.States (669), 49, 844);
+            Table.States (669).Kernel := To_Vector (((266, 159, 2, False), 
(266, 159, 1, False)));
+            Table.States (669).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 843)));
+            Table.States (670).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (670), 96, 845);
+            Table.States (670).Kernel := To_Vector ((0 => (304, 266, 1, 
False)));
+            Table.States (670).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 845)));
+            Table.States (671).Action_List.Set_Capacity (46);
+            Add_Action (Table.States (671), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (276, 0), 5, raise_statement_0'Access, null);
-            Table.States (669).Kernel := To_Vector ((0 => (276, 96, 0, 
False)));
-            Table.States (669).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 276, 5)));
-            Add_Action (Table.States (670), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
+            Table.States (671).Kernel := To_Vector ((0 => (276, 96, 0, 
False)));
+            Table.States (671).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 276, 5)));
+            Table.States (672).Action_List.Set_Capacity (46);
+            Add_Action (Table.States (672), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (290, 0), 5, requeue_statement_0'Access, null);
-            Table.States (670).Kernel := To_Vector ((0 => (290, 96, 0, 
False)));
-            Table.States (670).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 290, 5)));
-            Add_Action (Table.States (671), 7, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (671), 40, 742);
-            Add_Action (Table.States (671), 104, 119);
-            Add_Action (Table.States (671), 105, 33);
-            Add_Action (Table.States (671), 106, 34);
-            Add_Error (Table.States (671));
-            Add_Goto (Table.States (671), 114, 845);
-            Add_Goto (Table.States (671), 128, 41);
-            Add_Goto (Table.States (671), 239, 484);
-            Add_Goto (Table.States (671), 241, 721);
-            Add_Goto (Table.States (671), 272, 92);
-            Add_Goto (Table.States (671), 292, 846);
-            Add_Goto (Table.States (671), 293, 97);
-            Add_Goto (Table.States (671), 314, 847);
-            Table.States (671).Kernel := To_Vector (((194, 154, 2, False), 
(194, 154, 1, False)));
-            Table.States (671).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (672), 58, 848);
-            Add_Error (Table.States (672));
-            Table.States (672).Kernel := To_Vector ((0 => (196, 24, 2, 
False)));
-            Table.States (672).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 58, 848)));
-            Add_Action (Table.States (673), 14, 849);
-            Add_Error (Table.States (673));
-            Table.States (673).Kernel := To_Vector (((247, 47, 6, False), 
(247, 47, 5, False)));
-            Table.States (673).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 849)));
-            Add_Action (Table.States (674), 14, 850);
-            Add_Error (Table.States (674));
-            Table.States (674).Kernel := To_Vector ((0 => (264, 51, 5, 
False)));
-            Table.States (674).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 850)));
-            Add_Action (Table.States (675), 14, 851);
-            Add_Error (Table.States (675));
-            Table.States (675).Kernel := To_Vector ((0 => (316, 66, 6, 
False)));
-            Table.States (675).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 851)));
-            Add_Action (Table.States (676), 29, 7);
-            Add_Action (Table.States (676), 50, 18);
-            Add_Error (Table.States (676));
-            Add_Goto (Table.States (676), 207, 61);
-            Add_Goto (Table.States (676), 262, 87);
-            Add_Goto (Table.States (676), 312, 852);
-            Table.States (676).Kernel := To_Vector ((0 => (307, 246, 6, 
False)));
-            Table.States (676).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 50, 18)));
-            Add_Action (Table.States (677), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
+            Table.States (672).Kernel := To_Vector ((0 => (290, 96, 0, 
False)));
+            Table.States (672).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 290, 5)));
+            Table.States (673).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (673), 7, Reduce, (241, 1), 0, null, 
null);
+            Add_Action (Table.States (673), 40, 744);
+            Add_Action (Table.States (673), 104, 119);
+            Add_Action (Table.States (673), 105, 33);
+            Add_Action (Table.States (673), 106, 34);
+            Table.States (673).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (673), 114, 846);
+            Add_Goto (Table.States (673), 128, 41);
+            Add_Goto (Table.States (673), 239, 484);
+            Add_Goto (Table.States (673), 241, 723);
+            Add_Goto (Table.States (673), 272, 92);
+            Add_Goto (Table.States (673), 292, 847);
+            Add_Goto (Table.States (673), 293, 97);
+            Add_Goto (Table.States (673), 314, 848);
+            Table.States (673).Kernel := To_Vector (((194, 154, 2, False), 
(194, 154, 1, False)));
+            Table.States (673).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (674).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (674), 58, 849);
+            Table.States (674).Kernel := To_Vector ((0 => (196, 24, 2, 
False)));
+            Table.States (674).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 58, 849)));
+            Table.States (675).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (675), 14, 850);
+            Table.States (675).Kernel := To_Vector (((247, 47, 6, False), 
(247, 47, 5, False)));
+            Table.States (675).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 850)));
+            Table.States (676).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (676), 14, 851);
+            Table.States (676).Kernel := To_Vector ((0 => (264, 51, 5, 
False)));
+            Table.States (676).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 851)));
+            Table.States (677).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (677), 14, 852);
+            Table.States (677).Kernel := To_Vector ((0 => (316, 66, 6, 
False)));
+            Table.States (677).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 852)));
+            Table.States (678).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (678), 29, 7);
+            Add_Action (Table.States (678), 50, 18);
+            Table.States (678).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (678), 207, 61);
+            Add_Goto (Table.States (678), 262, 87);
+            Add_Goto (Table.States (678), 312, 853);
+            Table.States (678).Kernel := To_Vector ((0 => (307, 246, 6, 
False)));
+            Table.States (678).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 50, 18)));
+            Table.States (679).Action_List.Set_Capacity (39);
+            Add_Action (Table.States (679), (4, 5, 13, 15, 17, 18, 25, 27, 28, 
29, 30, 31, 32, 36, 37, 40, 41, 46, 47,
             48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 93, 
104, 105, 106, 107), (315, 0), 5,
             subunit_0'Access, null);
-            Table.States (677).Kernel := To_Vector ((0 => (315, 263, 0, 
False)));
-            Table.States (677).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 315, 5)));
-            Add_Action (Table.States (678), 96, 853);
-            Add_Error (Table.States (678));
-            Table.States (678).Kernel := To_Vector ((0 => (295, 67, 1, 
False)));
-            Table.States (678).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 853)));
-            Add_Action (Table.States (679), 4, 1);
-            Add_Action (Table.States (679), 5, 2);
-            Add_Action (Table.States (679), 13, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (679), 15, 3);
-            Add_Action (Table.States (679), 17, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (679), 18, 4);
-            Add_Action (Table.States (679), 22, Reduce, (300, 1), 0, null, 
null);
-            Add_Action (Table.States (679), 24, Reduce, (300, 1), 0, null, 
null);
-            Add_Action (Table.States (679), 27, 5);
-            Add_Action (Table.States (679), 28, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (679), 31, 9);
-            Add_Action (Table.States (679), 32, 10);
-            Add_Action (Table.States (679), 37, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (679), 41, 13);
-            Add_Action (Table.States (679), 43, Reduce, (300, 1), 0, null, 
null);
-            Add_Action (Table.States (679), 48, 16);
-            Add_Action (Table.States (679), 52, 20);
-            Add_Action (Table.States (679), 57, 21);
-            Add_Action (Table.States (679), 58, 22);
-            Add_Action (Table.States (679), 61, 24);
-            Add_Action (Table.States (679), 73, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (679), 93, 31);
-            Add_Action (Table.States (679), 104, 360);
-            Add_Action (Table.States (679), 105, 33);
-            Add_Action (Table.States (679), 106, 34);
-            Add_Error (Table.States (679));
-            Add_Goto (Table.States (679), 113, 36);
-            Add_Goto (Table.States (679), 123, 38);
-            Add_Goto (Table.States (679), 126, 39);
-            Add_Goto (Table.States (679), 128, 41);
-            Add_Goto (Table.States (679), 131, 42);
-            Add_Goto (Table.States (679), 132, 43);
-            Add_Goto (Table.States (679), 133, 44);
-            Add_Goto (Table.States (679), 139, 47);
-            Add_Goto (Table.States (679), 151, 50);
-            Add_Goto (Table.States (679), 152, 51);
-            Add_Goto (Table.States (679), 161, 53);
-            Add_Goto (Table.States (679), 190, 57);
-            Add_Goto (Table.States (679), 196, 59);
-            Add_Goto (Table.States (679), 217, 68);
-            Add_Goto (Table.States (679), 222, 70);
-            Add_Goto (Table.States (679), 232, 72);
-            Add_Goto (Table.States (679), 239, 73);
-            Add_Goto (Table.States (679), 257, 83);
-            Add_Goto (Table.States (679), 261, 86);
-            Add_Goto (Table.States (679), 272, 92);
-            Add_Goto (Table.States (679), 276, 93);
-            Add_Goto (Table.States (679), 290, 96);
-            Add_Goto (Table.States (679), 293, 97);
-            Add_Goto (Table.States (679), 294, 98);
-            Add_Goto (Table.States (679), 298, 99);
-            Add_Goto (Table.States (679), 299, 361);
-            Add_Goto (Table.States (679), 300, 854);
-            Add_Goto (Table.States (679), 302, 100);
-            Add_Goto (Table.States (679), 303, 101);
-            Add_Goto (Table.States (679), 306, 363);
-            Add_Goto (Table.States (679), 323, 114);
-            Table.States (679).Kernel := To_Vector ((0 => (295, 113, 0, 
False)));
-            Table.States (679).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
-            Add_Action (Table.States (680), (22, 24, 43), (295, 2), 4, 
select_alternative_2'Access, null);
-            Table.States (680).Kernel := To_Vector ((0 => (295, 160, 0, 
False)));
-            Table.States (680).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 295, 4)));
-            Add_Action (Table.States (681), 61, 855);
-            Add_Error (Table.States (681));
-            Table.States (681).Kernel := To_Vector ((0 => (152, 24, 2, 
False)));
-            Table.States (681).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 61, 855)));
-            Add_Action (Table.States (682), 61, 856);
-            Add_Error (Table.States (682));
-            Table.States (682).Kernel := To_Vector ((0 => (323, 24, 2, 
False)));
-            Table.States (682).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 61, 856)));
-            Add_Action (Table.States (683), (22, 24, 43), (160, 0), 2, null, 
null);
-            Table.States (683).Kernel := To_Vector ((0 => (160, 300, 0, 
False)));
-            Table.States (683).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 2)));
+            Table.States (679).Kernel := To_Vector ((0 => (315, 263, 0, 
False)));
+            Table.States (679).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 315, 5)));
+            Table.States (680).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (680), 96, 854);
+            Table.States (680).Kernel := To_Vector ((0 => (295, 67, 1, 
False)));
+            Table.States (680).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 854)));
+            Table.States (681).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (681), 4, 1);
+            Add_Action (Table.States (681), 5, 2);
+            Add_Action (Table.States (681), 13, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (681), 15, 3);
+            Add_Action (Table.States (681), 17, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (681), 18, 4);
+            Add_Action (Table.States (681), 22, Reduce, (300, 1), 0, null, 
null);
+            Add_Action (Table.States (681), 24, Reduce, (300, 1), 0, null, 
null);
+            Add_Action (Table.States (681), 27, 5);
+            Add_Action (Table.States (681), 28, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (681), 31, 9);
+            Add_Action (Table.States (681), 32, 10);
+            Add_Action (Table.States (681), 37, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (681), 41, 13);
+            Add_Action (Table.States (681), 43, Reduce, (300, 1), 0, null, 
null);
+            Add_Action (Table.States (681), 48, 16);
+            Add_Action (Table.States (681), 52, 20);
+            Add_Action (Table.States (681), 57, 21);
+            Add_Action (Table.States (681), 58, 22);
+            Add_Action (Table.States (681), 61, 24);
+            Add_Action (Table.States (681), 73, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (681), 93, 31);
+            Add_Action (Table.States (681), 104, 360);
+            Add_Action (Table.States (681), 105, 33);
+            Add_Action (Table.States (681), 106, 34);
+            Table.States (681).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (681), 113, 36);
+            Add_Goto (Table.States (681), 123, 38);
+            Add_Goto (Table.States (681), 126, 39);
+            Add_Goto (Table.States (681), 128, 41);
+            Add_Goto (Table.States (681), 131, 42);
+            Add_Goto (Table.States (681), 132, 43);
+            Add_Goto (Table.States (681), 133, 44);
+            Add_Goto (Table.States (681), 139, 47);
+            Add_Goto (Table.States (681), 151, 50);
+            Add_Goto (Table.States (681), 152, 51);
+            Add_Goto (Table.States (681), 161, 53);
+            Add_Goto (Table.States (681), 190, 57);
+            Add_Goto (Table.States (681), 196, 59);
+            Add_Goto (Table.States (681), 217, 68);
+            Add_Goto (Table.States (681), 222, 70);
+            Add_Goto (Table.States (681), 232, 72);
+            Add_Goto (Table.States (681), 239, 73);
+            Add_Goto (Table.States (681), 257, 83);
+            Add_Goto (Table.States (681), 261, 86);
+            Add_Goto (Table.States (681), 272, 92);
+            Add_Goto (Table.States (681), 276, 93);
+            Add_Goto (Table.States (681), 290, 96);
+            Add_Goto (Table.States (681), 293, 97);
+            Add_Goto (Table.States (681), 294, 98);
+            Add_Goto (Table.States (681), 298, 99);
+            Add_Goto (Table.States (681), 299, 361);
+            Add_Goto (Table.States (681), 300, 855);
+            Add_Goto (Table.States (681), 302, 100);
+            Add_Goto (Table.States (681), 303, 101);
+            Add_Goto (Table.States (681), 306, 363);
+            Add_Goto (Table.States (681), 323, 114);
+            Table.States (681).Kernel := To_Vector ((0 => (295, 113, 0, 
False)));
+            Table.States (681).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (682).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (682), (22, 24, 43), (295, 2), 4, 
select_alternative_2'Access, null);
+            Table.States (682).Kernel := To_Vector ((0 => (295, 160, 0, 
False)));
+            Table.States (682).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 295, 4)));
+            Table.States (683).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (683), 61, 856);
+            Table.States (683).Kernel := To_Vector ((0 => (152, 24, 2, 
False)));
+            Table.States (683).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 61, 856)));
+            Table.States (684).Action_List.Set_Capacity (1);
             Add_Action (Table.States (684), 61, 857);
-            Add_Error (Table.States (684));
-            Table.States (684).Kernel := To_Vector ((0 => (294, 24, 2, 
False)));
+            Table.States (684).Kernel := To_Vector ((0 => (323, 24, 2, 
False)));
             Table.States (684).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 61, 857)));
-            Add_Action (Table.States (685), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
+            Table.States (685).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (685), (22, 24, 43), (160, 0), 2, null, 
null);
+            Table.States (685).Kernel := To_Vector ((0 => (160, 300, 0, 
False)));
+            Table.States (685).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 2)));
+            Table.States (686).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (686), 61, 858);
+            Table.States (686).Kernel := To_Vector ((0 => (294, 24, 2, 
False)));
+            Table.States (686).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 61, 858)));
+            Table.States (687).Action_List.Set_Capacity (46);
+            Add_Action (Table.States (687), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (294, 1), 5, selective_accept_1'Access, null);
-            Table.States (685).Kernel := To_Vector ((0 => (294, 96, 0, 
False)));
-            Table.States (685).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 294, 5)));
-            Add_Action (Table.States (686), 24, 858);
-            Add_Error (Table.States (686));
-            Table.States (686).Kernel := To_Vector ((0 => (126, 300, 3, 
False)));
-            Table.States (686).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 858)));
-            Add_Action (Table.States (687), 96, 859);
-            Add_Error (Table.States (687));
-            Table.States (687).Kernel := To_Vector ((0 => (313, 122, 1, 
False)));
-            Table.States (687).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 859)));
-            Add_Action (Table.States (688), 74, 337);
-            Add_Action (Table.States (688), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (688));
-            Add_Goto (Table.States (688), 122, 860);
-            Table.States (688).Kernel := To_Vector ((0 => (317, 60, 1, 
False)));
-            Table.States (688).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (689), 13, Reduce, (159, 1), 0, null, 
null);
-            Add_Action (Table.States (689), 25, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (689), 28, 183);
-            Add_Action (Table.States (689), 29, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (689), 30, 8);
-            Add_Action (Table.States (689), 40, 12);
-            Add_Action (Table.States (689), 46, 14);
-            Add_Action (Table.States (689), 47, 15);
-            Add_Action (Table.States (689), 48, 16);
-            Add_Action (Table.States (689), 50, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (689), 51, 19);
-            Add_Action (Table.States (689), 63, 25);
-            Add_Action (Table.States (689), 66, 26);
-            Add_Action (Table.States (689), 69, 27);
-            Add_Action (Table.States (689), 71, 28);
-            Add_Action (Table.States (689), 104, 185);
-            Add_Error (Table.States (689));
-            Add_Goto (Table.States (689), 112, 35);
-            Add_Goto (Table.States (689), 121, 37);
-            Add_Goto (Table.States (689), 127, 40);
-            Add_Goto (Table.States (689), 134, 45);
-            Add_Goto (Table.States (689), 135, 46);
-            Add_Goto (Table.States (689), 157, 391);
-            Add_Goto (Table.States (689), 158, 392);
-            Add_Goto (Table.States (689), 159, 861);
-            Add_Goto (Table.States (689), 179, 54);
-            Add_Goto (Table.States (689), 182, 55);
-            Add_Goto (Table.States (689), 186, 56);
-            Add_Goto (Table.States (689), 193, 58);
-            Add_Goto (Table.States (689), 206, 60);
-            Add_Goto (Table.States (689), 207, 61);
-            Add_Goto (Table.States (689), 209, 62);
-            Add_Goto (Table.States (689), 210, 63);
-            Add_Goto (Table.States (689), 213, 64);
-            Add_Goto (Table.States (689), 214, 65);
-            Add_Goto (Table.States (689), 215, 66);
-            Add_Goto (Table.States (689), 216, 67);
-            Add_Goto (Table.States (689), 219, 69);
-            Add_Goto (Table.States (689), 223, 71);
-            Add_Goto (Table.States (689), 243, 74);
-            Add_Goto (Table.States (689), 244, 75);
-            Add_Goto (Table.States (689), 245, 76);
-            Add_Goto (Table.States (689), 246, 77);
-            Add_Goto (Table.States (689), 247, 78);
-            Add_Goto (Table.States (689), 248, 79);
-            Add_Goto (Table.States (689), 249, 80);
-            Add_Goto (Table.States (689), 250, 81);
-            Add_Goto (Table.States (689), 251, 82);
-            Add_Goto (Table.States (689), 257, 394);
-            Add_Goto (Table.States (689), 259, 84);
-            Add_Goto (Table.States (689), 260, 85);
-            Add_Goto (Table.States (689), 262, 87);
-            Add_Goto (Table.States (689), 263, 88);
-            Add_Goto (Table.States (689), 264, 89);
-            Add_Goto (Table.States (689), 265, 90);
-            Add_Goto (Table.States (689), 271, 91);
-            Add_Goto (Table.States (689), 281, 94);
-            Add_Goto (Table.States (689), 289, 95);
-            Add_Goto (Table.States (689), 304, 102);
-            Add_Goto (Table.States (689), 305, 103);
-            Add_Goto (Table.States (689), 307, 105);
-            Add_Goto (Table.States (689), 308, 106);
-            Add_Goto (Table.States (689), 309, 107);
-            Add_Goto (Table.States (689), 311, 108);
-            Add_Goto (Table.States (689), 313, 109);
-            Add_Goto (Table.States (689), 316, 111);
-            Add_Goto (Table.States (689), 317, 112);
-            Add_Goto (Table.States (689), 319, 113);
-            Add_Goto (Table.States (689), 325, 115);
-            Add_Goto (Table.States (689), 331, 116);
-            Table.States (689).Kernel := To_Vector ((0 => (316, 35, 3, 
False)));
-            Table.States (689).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
-            Add_Action (Table.States (690), 35, 862);
-            Add_Action (Table.States (690), 96, 863);
-            Add_Error (Table.States (690));
-            Table.States (690).Kernel := To_Vector (((319, 122, 6, False), 
(319, 122, 3, False), (319, 122, 1,
+            Table.States (687).Kernel := To_Vector ((0 => (294, 96, 0, 
False)));
+            Table.States (687).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 294, 5)));
+            Table.States (688).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (688), 24, 859);
+            Table.States (688).Kernel := To_Vector ((0 => (126, 300, 3, 
False)));
+            Table.States (688).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 859)));
+            Table.States (689).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (689), 96, 860);
+            Table.States (689).Kernel := To_Vector ((0 => (313, 122, 1, 
False)));
+            Table.States (689).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 860)));
+            Table.States (690).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (690), 74, 337);
+            Add_Action (Table.States (690), 96, Reduce, (122, 1), 0, null, 
null);
+            Table.States (690).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (690), 122, 861);
+            Table.States (690).Kernel := To_Vector ((0 => (317, 60, 1, 
False)));
+            Table.States (690).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (691).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (691), 13, Reduce, (159, 1), 0, null, 
null);
+            Add_Action (Table.States (691), 25, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (691), 28, 183);
+            Add_Action (Table.States (691), 29, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (691), 30, 8);
+            Add_Action (Table.States (691), 40, 12);
+            Add_Action (Table.States (691), 46, 14);
+            Add_Action (Table.States (691), 47, 15);
+            Add_Action (Table.States (691), 48, 16);
+            Add_Action (Table.States (691), 50, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (691), 51, 19);
+            Add_Action (Table.States (691), 63, 25);
+            Add_Action (Table.States (691), 66, 26);
+            Add_Action (Table.States (691), 69, 27);
+            Add_Action (Table.States (691), 71, 28);
+            Add_Action (Table.States (691), 104, 185);
+            Table.States (691).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (691), 112, 35);
+            Add_Goto (Table.States (691), 121, 37);
+            Add_Goto (Table.States (691), 127, 40);
+            Add_Goto (Table.States (691), 134, 45);
+            Add_Goto (Table.States (691), 135, 46);
+            Add_Goto (Table.States (691), 157, 391);
+            Add_Goto (Table.States (691), 158, 392);
+            Add_Goto (Table.States (691), 159, 862);
+            Add_Goto (Table.States (691), 179, 54);
+            Add_Goto (Table.States (691), 182, 55);
+            Add_Goto (Table.States (691), 186, 56);
+            Add_Goto (Table.States (691), 193, 58);
+            Add_Goto (Table.States (691), 206, 60);
+            Add_Goto (Table.States (691), 207, 61);
+            Add_Goto (Table.States (691), 209, 62);
+            Add_Goto (Table.States (691), 210, 63);
+            Add_Goto (Table.States (691), 213, 64);
+            Add_Goto (Table.States (691), 214, 65);
+            Add_Goto (Table.States (691), 215, 66);
+            Add_Goto (Table.States (691), 216, 67);
+            Add_Goto (Table.States (691), 219, 69);
+            Add_Goto (Table.States (691), 223, 71);
+            Add_Goto (Table.States (691), 243, 74);
+            Add_Goto (Table.States (691), 244, 75);
+            Add_Goto (Table.States (691), 245, 76);
+            Add_Goto (Table.States (691), 246, 77);
+            Add_Goto (Table.States (691), 247, 78);
+            Add_Goto (Table.States (691), 248, 79);
+            Add_Goto (Table.States (691), 249, 80);
+            Add_Goto (Table.States (691), 250, 81);
+            Add_Goto (Table.States (691), 251, 82);
+            Add_Goto (Table.States (691), 257, 394);
+            Add_Goto (Table.States (691), 259, 84);
+            Add_Goto (Table.States (691), 260, 85);
+            Add_Goto (Table.States (691), 262, 87);
+            Add_Goto (Table.States (691), 263, 88);
+            Add_Goto (Table.States (691), 264, 89);
+            Add_Goto (Table.States (691), 265, 90);
+            Add_Goto (Table.States (691), 271, 91);
+            Add_Goto (Table.States (691), 281, 94);
+            Add_Goto (Table.States (691), 289, 95);
+            Add_Goto (Table.States (691), 304, 102);
+            Add_Goto (Table.States (691), 305, 103);
+            Add_Goto (Table.States (691), 307, 105);
+            Add_Goto (Table.States (691), 308, 106);
+            Add_Goto (Table.States (691), 309, 107);
+            Add_Goto (Table.States (691), 311, 108);
+            Add_Goto (Table.States (691), 313, 109);
+            Add_Goto (Table.States (691), 316, 111);
+            Add_Goto (Table.States (691), 317, 112);
+            Add_Goto (Table.States (691), 319, 113);
+            Add_Goto (Table.States (691), 325, 115);
+            Add_Goto (Table.States (691), 331, 116);
+            Table.States (691).Kernel := To_Vector ((0 => (316, 35, 3, 
False)));
+            Table.States (691).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
+            Table.States (692).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (692), 35, 863);
+            Add_Action (Table.States (692), 96, 864);
+            Table.States (692).Kernel := To_Vector (((319, 122, 6, False), 
(319, 122, 3, False), (319, 122, 1,
             False)));
-            Table.States (690).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 863)));
-            Add_Action (Table.States (691), 104, 119);
-            Add_Action (Table.States (691), 105, 33);
-            Add_Action (Table.States (691), 106, 34);
-            Add_Error (Table.States (691));
-            Add_Goto (Table.States (691), 128, 41);
-            Add_Goto (Table.States (691), 227, 864);
-            Add_Goto (Table.States (691), 239, 841);
-            Add_Goto (Table.States (691), 272, 92);
-            Add_Goto (Table.States (691), 293, 97);
-            Table.States (691).Kernel := To_Vector ((0 => (305, 39, 4, 
False)));
-            Table.States (691).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (692), 24, Reduce, (318, 1), 1, 
task_definition_1'Access, null);
-            Add_Action (Table.States (692), 49, 865);
-            Add_Error (Table.States (692));
-            Table.States (692).Kernel := To_Vector (((318, 159, 1, False), 
(318, 159, 0, False)));
-            Table.States (692).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 318, 1)));
-            Add_Action (Table.States (693), 24, 866);
-            Add_Error (Table.States (693));
-            Table.States (693).Kernel := To_Vector ((0 => (305, 318, 2, 
False)));
-            Table.States (693).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 866)));
-            Add_Action (Table.States (694), (35, 74, 96), (169, 0), 3, null, 
null);
-            Table.States (694).Kernel := To_Vector ((0 => (169, 77, 0, 
False)));
-            Table.States (694).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 169, 3)));
-            Add_Action (Table.States (695), (35, 74, 96), (169, 1), 3, 
discriminant_part_opt_1'Access, null);
-            Table.States (695).Kernel := To_Vector ((0 => (169, 77, 0, 
False)));
-            Table.States (695).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 169, 3)));
-            Add_Action (Table.States (696), 77, Reduce, (170, 4), 0, null, 
null);
-            Add_Action (Table.States (696), 96, Reduce, (170, 4), 0, null, 
null);
-            Add_Action (Table.States (696), 104, 164);
-            Add_Error (Table.States (696));
-            Add_Goto (Table.States (696), 170, 867);
-            Add_Goto (Table.States (696), 219, 547);
-            Table.States (696).Kernel := To_Vector ((0 => (171, 96, 0, True)));
-            Table.States (696).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 0)));
-            Table.States (696).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (697), 7, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (697), 40, 868);
-            Add_Action (Table.States (697), 104, 869);
-            Add_Action (Table.States (697), 105, 33);
-            Add_Action (Table.States (697), 106, 34);
-            Add_Error (Table.States (697));
-            Add_Goto (Table.States (697), 114, 870);
-            Add_Goto (Table.States (697), 128, 41);
-            Add_Goto (Table.States (697), 239, 871);
-            Add_Goto (Table.States (697), 241, 721);
-            Add_Goto (Table.States (697), 242, 872);
-            Add_Goto (Table.States (697), 272, 92);
-            Add_Goto (Table.States (697), 293, 873);
-            Table.States (697).Kernel := To_Vector (((170, 81, 2, False), 
(170, 81, 3, False), (170, 81, 1, False),
+            Table.States (692).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 864)));
+            Table.States (693).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (693), 104, 119);
+            Add_Action (Table.States (693), 105, 33);
+            Add_Action (Table.States (693), 106, 34);
+            Table.States (693).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (693), 128, 41);
+            Add_Goto (Table.States (693), 227, 865);
+            Add_Goto (Table.States (693), 239, 842);
+            Add_Goto (Table.States (693), 272, 92);
+            Add_Goto (Table.States (693), 293, 97);
+            Table.States (693).Kernel := To_Vector ((0 => (305, 39, 4, 
False)));
+            Table.States (693).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (694).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (694), 24, Reduce, (318, 1), 1, 
task_definition_1'Access, null);
+            Add_Action (Table.States (694), 49, 866);
+            Table.States (694).Kernel := To_Vector (((318, 159, 1, False), 
(318, 159, 0, False)));
+            Table.States (694).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 318, 1)));
+            Table.States (695).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (695), 24, 867);
+            Table.States (695).Kernel := To_Vector ((0 => (305, 318, 2, 
False)));
+            Table.States (695).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 867)));
+            Table.States (696).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (696), (35, 74, 96), (169, 0), 3, null, 
null);
+            Table.States (696).Kernel := To_Vector ((0 => (169, 77, 0, 
False)));
+            Table.States (696).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 169, 3)));
+            Table.States (697).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (697), (35, 74, 96), (169, 1), 3, 
discriminant_part_opt_1'Access, null);
+            Table.States (697).Kernel := To_Vector ((0 => (169, 77, 0, 
False)));
+            Table.States (697).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 169, 3)));
+            Table.States (698).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (698), 77, Reduce, (170, 4), 0, null, 
null);
+            Add_Action (Table.States (698), 96, Reduce, (170, 4), 0, null, 
null);
+            Add_Action (Table.States (698), 104, 164);
+            Table.States (698).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (698), 170, 868);
+            Add_Goto (Table.States (698), 219, 547);
+            Table.States (698).Kernel := To_Vector ((0 => (171, 96, 0, True)));
+            Table.States (698).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 0)));
+            Table.States (698).Minimal_Complete_Actions_Recursive := True;
+            Table.States (699).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (699), 7, Reduce, (241, 1), 0, null, 
null);
+            Add_Action (Table.States (699), 40, 869);
+            Add_Action (Table.States (699), 104, 870);
+            Add_Action (Table.States (699), 105, 33);
+            Add_Action (Table.States (699), 106, 34);
+            Table.States (699).Goto_List.Set_Capacity (7);
+            Add_Goto (Table.States (699), 114, 871);
+            Add_Goto (Table.States (699), 128, 41);
+            Add_Goto (Table.States (699), 239, 872);
+            Add_Goto (Table.States (699), 241, 723);
+            Add_Goto (Table.States (699), 242, 873);
+            Add_Goto (Table.States (699), 272, 92);
+            Add_Goto (Table.States (699), 293, 874);
+            Table.States (699).Kernel := To_Vector (((170, 81, 2, False), 
(170, 81, 3, False), (170, 81, 1, False),
             (170, 81, 2, False)));
-            Table.States (697).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 869)));
-            Add_Action (Table.States (698), 36, 874);
-            Add_Action (Table.States (698), 39, Reduce, (109, 2), 1, null, 
null);
-            Add_Conflict (Table.States (698), 39, (110, 2), 1, null, null);
-            Add_Action (Table.States (698), 64, 875);
-            Add_Action (Table.States (698), 65, 876);
-            Add_Error (Table.States (698));
-            Table.States (698).Kernel := To_Vector (((109, 6, 1, False), (109, 
6, 1, False), (109, 6, 0, False), (110,
+            Table.States (699).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 870)));
+            Table.States (700).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (700), 36, 875);
+            Add_Action (Table.States (700), 39, Reduce, (109, 2), 1, null, 
null);
+            Add_Conflict (Table.States (700), 39, (110, 2), 1, null, null);
+            Add_Action (Table.States (700), 64, 876);
+            Add_Action (Table.States (700), 65, 877);
+            Table.States (700).Kernel := To_Vector (((109, 6, 1, False), (109, 
6, 1, False), (109, 6, 0, False), (110,
             6, 1, False), (110, 6, 0, False), (111, 6, 2, False), (111, 6, 1, 
False)));
-            Table.States (698).Minimal_Complete_Actions := To_Vector 
(((Reduce, 109, 1), (Reduce, 110, 1)));
-            Add_Action (Table.States (699), 76, 877);
-            Add_Error (Table.States (699));
-            Table.States (699).Kernel := To_Vector (((120, 11, 7, False), 
(120, 11, 7, False)));
-            Table.States (699).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 76, 877)));
-            Add_Action (Table.States (700), 3, 121);
-            Add_Action (Table.States (700), 20, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (700), 39, 122);
-            Add_Action (Table.States (700), 40, 123);
-            Add_Action (Table.States (700), 41, 124);
-            Add_Action (Table.States (700), 52, 125);
-            Add_Action (Table.States (700), 53, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (700), 74, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (700), 76, 126);
-            Add_Action (Table.States (700), 94, 127);
-            Add_Action (Table.States (700), 95, 128);
-            Add_Action (Table.States (700), 96, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (700), 103, 129);
-            Add_Action (Table.States (700), 104, 119);
-            Add_Action (Table.States (700), 105, 33);
-            Add_Action (Table.States (700), 106, 34);
-            Add_Error (Table.States (700));
-            Add_Goto (Table.States (700), 117, 130);
-            Add_Goto (Table.States (700), 128, 41);
-            Add_Goto (Table.States (700), 191, 131);
-            Add_Goto (Table.States (700), 192, 878);
-            Add_Goto (Table.States (700), 197, 133);
-            Add_Goto (Table.States (700), 239, 134);
-            Add_Goto (Table.States (700), 258, 135);
-            Add_Goto (Table.States (700), 272, 92);
-            Add_Goto (Table.States (700), 275, 136);
-            Add_Goto (Table.States (700), 282, 137);
-            Add_Goto (Table.States (700), 283, 138);
-            Add_Goto (Table.States (700), 284, 139);
-            Add_Goto (Table.States (700), 285, 140);
-            Add_Goto (Table.States (700), 286, 141);
-            Add_Goto (Table.States (700), 287, 142);
-            Add_Goto (Table.States (700), 293, 97);
-            Add_Goto (Table.States (700), 301, 143);
-            Add_Goto (Table.States (700), 320, 144);
-            Add_Goto (Table.States (700), 321, 145);
-            Add_Goto (Table.States (700), 330, 146);
-            Table.States (700).Kernel := To_Vector (((326, 19, 1, False), 
(326, 19, 0, False)));
-            Table.States (700).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (701), 3, 121);
-            Add_Action (Table.States (701), 39, 122);
-            Add_Action (Table.States (701), 40, 123);
-            Add_Action (Table.States (701), 41, 124);
-            Add_Action (Table.States (701), 52, 125);
-            Add_Action (Table.States (701), 53, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (701), 74, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (701), 76, 126);
-            Add_Action (Table.States (701), 94, 127);
-            Add_Action (Table.States (701), 95, 128);
-            Add_Action (Table.States (701), 96, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (701), 103, 129);
-            Add_Action (Table.States (701), 104, 119);
-            Add_Action (Table.States (701), 105, 33);
-            Add_Action (Table.States (701), 106, 34);
-            Add_Error (Table.States (701));
-            Add_Goto (Table.States (701), 117, 130);
-            Add_Goto (Table.States (701), 128, 41);
-            Add_Goto (Table.States (701), 191, 131);
-            Add_Goto (Table.States (701), 192, 879);
-            Add_Goto (Table.States (701), 197, 133);
-            Add_Goto (Table.States (701), 239, 134);
-            Add_Goto (Table.States (701), 258, 135);
-            Add_Goto (Table.States (701), 272, 92);
-            Add_Goto (Table.States (701), 275, 136);
-            Add_Goto (Table.States (701), 282, 137);
-            Add_Goto (Table.States (701), 283, 138);
-            Add_Goto (Table.States (701), 284, 139);
-            Add_Goto (Table.States (701), 285, 140);
-            Add_Goto (Table.States (701), 286, 141);
-            Add_Goto (Table.States (701), 287, 142);
-            Add_Goto (Table.States (701), 293, 97);
-            Add_Goto (Table.States (701), 301, 143);
-            Add_Goto (Table.States (701), 320, 144);
-            Add_Goto (Table.States (701), 321, 145);
-            Add_Goto (Table.States (701), 330, 146);
-            Table.States (701).Kernel := To_Vector ((0 => (326, 20, 0, 
False)));
-            Table.States (701).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (702), (74, 96), (228, 8), 1, null, null);
-            Table.States (702).Kernel := To_Vector ((0 => (228, 34, 0, 
False)));
-            Table.States (702).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 1)));
-            Add_Action (Table.States (703), 34, 880);
-            Add_Action (Table.States (703), 39, Reduce, (109, 3), 1, null, 
null);
-            Add_Conflict (Table.States (703), 39, (110, 1), 1, null, null);
-            Add_Action (Table.States (703), 41, Reduce, (111, 4), 1, null, 
null);
-            Add_Action (Table.States (703), 49, Reduce, (111, 4), 1, null, 
null);
-            Add_Action (Table.States (703), 54, Reduce, (111, 4), 1, null, 
null);
-            Add_Error (Table.States (703));
-            Table.States (703).Kernel := To_Vector (((109, 36, 0, False), 
(110, 36, 0, False), (111, 36, 0, False),
+            Table.States (700).Minimal_Complete_Actions := To_Vector 
(((Reduce, 109, 1), (Reduce, 110, 1)));
+            Table.States (701).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (701), 76, 878);
+            Table.States (701).Kernel := To_Vector (((120, 11, 7, False), 
(120, 11, 7, False)));
+            Table.States (701).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 76, 878)));
+            Table.States (702).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (702), 3, 121);
+            Add_Action (Table.States (702), 20, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (702), 39, 122);
+            Add_Action (Table.States (702), 40, 123);
+            Add_Action (Table.States (702), 41, 124);
+            Add_Action (Table.States (702), 52, 125);
+            Add_Action (Table.States (702), 53, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (702), 74, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (702), 76, 126);
+            Add_Action (Table.States (702), 94, 127);
+            Add_Action (Table.States (702), 95, 128);
+            Add_Action (Table.States (702), 96, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (702), 103, 129);
+            Add_Action (Table.States (702), 104, 119);
+            Add_Action (Table.States (702), 105, 33);
+            Add_Action (Table.States (702), 106, 34);
+            Table.States (702).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (702), 117, 130);
+            Add_Goto (Table.States (702), 128, 41);
+            Add_Goto (Table.States (702), 191, 131);
+            Add_Goto (Table.States (702), 192, 879);
+            Add_Goto (Table.States (702), 197, 133);
+            Add_Goto (Table.States (702), 239, 134);
+            Add_Goto (Table.States (702), 258, 135);
+            Add_Goto (Table.States (702), 272, 92);
+            Add_Goto (Table.States (702), 275, 136);
+            Add_Goto (Table.States (702), 282, 137);
+            Add_Goto (Table.States (702), 283, 138);
+            Add_Goto (Table.States (702), 284, 139);
+            Add_Goto (Table.States (702), 285, 140);
+            Add_Goto (Table.States (702), 286, 141);
+            Add_Goto (Table.States (702), 287, 142);
+            Add_Goto (Table.States (702), 293, 97);
+            Add_Goto (Table.States (702), 301, 143);
+            Add_Goto (Table.States (702), 320, 144);
+            Add_Goto (Table.States (702), 321, 145);
+            Add_Goto (Table.States (702), 330, 146);
+            Table.States (702).Kernel := To_Vector (((326, 19, 1, False), 
(326, 19, 0, False)));
+            Table.States (702).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (703).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (703), 3, 121);
+            Add_Action (Table.States (703), 39, 122);
+            Add_Action (Table.States (703), 40, 123);
+            Add_Action (Table.States (703), 41, 124);
+            Add_Action (Table.States (703), 52, 125);
+            Add_Action (Table.States (703), 53, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (703), 74, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (703), 76, 126);
+            Add_Action (Table.States (703), 94, 127);
+            Add_Action (Table.States (703), 95, 128);
+            Add_Action (Table.States (703), 96, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (703), 103, 129);
+            Add_Action (Table.States (703), 104, 119);
+            Add_Action (Table.States (703), 105, 33);
+            Add_Action (Table.States (703), 106, 34);
+            Table.States (703).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (703), 117, 130);
+            Add_Goto (Table.States (703), 128, 41);
+            Add_Goto (Table.States (703), 191, 131);
+            Add_Goto (Table.States (703), 192, 880);
+            Add_Goto (Table.States (703), 197, 133);
+            Add_Goto (Table.States (703), 239, 134);
+            Add_Goto (Table.States (703), 258, 135);
+            Add_Goto (Table.States (703), 272, 92);
+            Add_Goto (Table.States (703), 275, 136);
+            Add_Goto (Table.States (703), 282, 137);
+            Add_Goto (Table.States (703), 283, 138);
+            Add_Goto (Table.States (703), 284, 139);
+            Add_Goto (Table.States (703), 285, 140);
+            Add_Goto (Table.States (703), 286, 141);
+            Add_Goto (Table.States (703), 287, 142);
+            Add_Goto (Table.States (703), 293, 97);
+            Add_Goto (Table.States (703), 301, 143);
+            Add_Goto (Table.States (703), 320, 144);
+            Add_Goto (Table.States (703), 321, 145);
+            Add_Goto (Table.States (703), 330, 146);
+            Table.States (703).Kernel := To_Vector ((0 => (326, 20, 0, 
False)));
+            Table.States (703).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (704).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (704), (74, 96), (228, 8), 1, null, null);
+            Table.States (704).Kernel := To_Vector ((0 => (228, 34, 0, 
False)));
+            Table.States (704).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 1)));
+            Table.States (705).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (705), 34, 881);
+            Add_Action (Table.States (705), 39, Reduce, (109, 3), 1, null, 
null);
+            Add_Conflict (Table.States (705), 39, (110, 1), 1, null, null);
+            Add_Action (Table.States (705), 41, Reduce, (111, 4), 1, null, 
null);
+            Add_Action (Table.States (705), 49, Reduce, (111, 4), 1, null, 
null);
+            Add_Action (Table.States (705), 54, Reduce, (111, 4), 1, null, 
null);
+            Table.States (705).Kernel := To_Vector (((109, 36, 0, False), 
(110, 36, 0, False), (111, 36, 0, False),
             (228, 36, 3, False), (228, 36, 1, False)));
-            Table.States (703).Minimal_Complete_Actions := To_Vector 
(((Reduce, 109, 1), (Reduce, 110, 1), (Reduce,
+            Table.States (705).Minimal_Complete_Actions := To_Vector 
(((Reduce, 109, 1), (Reduce, 110, 1), (Reduce,
             111, 1)));
-            Add_Action (Table.States (704), 3, 121);
-            Add_Action (Table.States (704), 39, 122);
-            Add_Action (Table.States (704), 40, 123);
-            Add_Action (Table.States (704), 41, 124);
-            Add_Action (Table.States (704), 52, 125);
-            Add_Action (Table.States (704), 74, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (704), 76, 126);
-            Add_Action (Table.States (704), 94, 127);
-            Add_Action (Table.States (704), 95, 128);
-            Add_Action (Table.States (704), 96, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (704), 103, 129);
-            Add_Action (Table.States (704), 104, 119);
-            Add_Action (Table.States (704), 105, 33);
-            Add_Action (Table.States (704), 106, 34);
-            Add_Error (Table.States (704));
-            Add_Goto (Table.States (704), 117, 130);
-            Add_Goto (Table.States (704), 128, 41);
-            Add_Goto (Table.States (704), 191, 131);
-            Add_Goto (Table.States (704), 192, 881);
-            Add_Goto (Table.States (704), 197, 133);
-            Add_Goto (Table.States (704), 239, 134);
-            Add_Goto (Table.States (704), 258, 135);
-            Add_Goto (Table.States (704), 272, 92);
-            Add_Goto (Table.States (704), 275, 136);
-            Add_Goto (Table.States (704), 282, 137);
-            Add_Goto (Table.States (704), 283, 138);
-            Add_Goto (Table.States (704), 284, 139);
-            Add_Goto (Table.States (704), 285, 140);
-            Add_Goto (Table.States (704), 286, 141);
-            Add_Goto (Table.States (704), 287, 142);
-            Add_Goto (Table.States (704), 293, 97);
-            Add_Goto (Table.States (704), 301, 143);
-            Add_Goto (Table.States (704), 320, 144);
-            Add_Goto (Table.States (704), 321, 145);
-            Add_Goto (Table.States (704), 330, 146);
-            Table.States (704).Kernel := To_Vector ((0 => (326, 38, 0, 
False)));
-            Table.States (704).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (705), 54, 882);
-            Add_Error (Table.States (705));
-            Table.States (705).Kernel := To_Vector ((0 => (280, 41, 1, 
False)));
-            Table.States (705).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 54, 882)));
-            Add_Action (Table.States (706), 34, 883);
-            Add_Error (Table.States (706));
-            Table.States (706).Kernel := To_Vector (((228, 51, 3, False), 
(228, 51, 1, False)));
-            Table.States (706).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 883)));
-            Add_Action (Table.States (707), 3, 121);
-            Add_Action (Table.States (707), 39, 122);
-            Add_Action (Table.States (707), 40, 123);
-            Add_Action (Table.States (707), 41, 124);
-            Add_Action (Table.States (707), 76, 126);
-            Add_Action (Table.States (707), 94, 127);
-            Add_Action (Table.States (707), 95, 128);
-            Add_Action (Table.States (707), 103, 129);
-            Add_Action (Table.States (707), 104, 119);
-            Add_Action (Table.States (707), 105, 33);
-            Add_Action (Table.States (707), 106, 34);
-            Add_Error (Table.States (707));
-            Add_Goto (Table.States (707), 117, 130);
-            Add_Goto (Table.States (707), 128, 41);
-            Add_Goto (Table.States (707), 197, 133);
-            Add_Goto (Table.States (707), 239, 134);
-            Add_Goto (Table.States (707), 258, 135);
-            Add_Goto (Table.States (707), 272, 92);
-            Add_Goto (Table.States (707), 293, 97);
-            Add_Goto (Table.States (707), 301, 884);
-            Add_Goto (Table.States (707), 320, 144);
-            Add_Goto (Table.States (707), 321, 145);
-            Add_Goto (Table.States (707), 330, 146);
-            Table.States (707).Kernel := To_Vector ((0 => (326, 53, 3, 
False)));
-            Table.States (707).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
-            Add_Action (Table.States (708), 15, 885);
-            Add_Action (Table.States (708), 24, Reduce, (150, 1), 0, null, 
null);
-            Add_Action (Table.States (708), 28, 183);
-            Add_Action (Table.States (708), 41, 886);
-            Add_Action (Table.States (708), 104, 164);
-            Add_Error (Table.States (708));
-            Add_Goto (Table.States (708), 121, 887);
-            Add_Goto (Table.States (708), 127, 40);
-            Add_Goto (Table.States (708), 146, 888);
-            Add_Goto (Table.States (708), 148, 889);
-            Add_Goto (Table.States (708), 149, 890);
-            Add_Goto (Table.States (708), 150, 891);
-            Add_Goto (Table.States (708), 182, 55);
-            Add_Goto (Table.States (708), 219, 892);
-            Add_Goto (Table.States (708), 281, 94);
-            Add_Goto (Table.States (708), 327, 893);
-            Table.States (708).Kernel := To_Vector ((0 => (280, 54, 2, 
False)));
-            Table.States (708).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 150, 0)));
-            Add_Action (Table.States (709), 34, 894);
-            Add_Action (Table.States (709), 39, Reduce, (109, 4), 1, null, 
null);
-            Add_Error (Table.States (709));
-            Table.States (709).Kernel := To_Vector (((109, 64, 0, False), 
(228, 64, 3, False), (228, 64, 1, False)));
-            Table.States (709).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 109, 1)));
-            Add_Action (Table.States (710), 36, 895);
-            Add_Action (Table.States (710), 41, Reduce, (111, 3), 1, null, 
null);
-            Add_Action (Table.States (710), 49, Reduce, (111, 3), 1, null, 
null);
-            Add_Action (Table.States (710), 54, Reduce, (111, 3), 1, null, 
null);
-            Add_Action (Table.States (710), 96, 896);
-            Add_Error (Table.States (710));
-            Table.States (710).Kernel := To_Vector (((111, 65, 1, False), 
(111, 65, 0, False), (223, 65, 1, False)));
-            Table.States (710).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 111, 1)));
-            Add_Action (Table.States (711), 34, 897);
-            Add_Error (Table.States (711));
-            Table.States (711).Kernel := To_Vector (((228, 66, 3, False), 
(228, 66, 1, False)));
-            Table.States (711).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 897)));
-            Add_Action (Table.States (712), 104, 898);
-            Add_Action (Table.States (712), 106, 899);
-            Add_Error (Table.States (712));
-            Add_Goto (Table.States (712), 180, 900);
-            Add_Goto (Table.States (712), 181, 901);
-            Table.States (712).Kernel := To_Vector ((0 => (183, 76, 2, 
False)));
-            Table.States (712).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 898)));
-            Add_Action (Table.States (713), 39, 902);
-            Add_Error (Table.States (713));
-            Table.States (713).Kernel := To_Vector ((0 => (259, 109, 5, 
False)));
-            Table.States (713).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 902)));
-            Add_Action (Table.States (714), 39, 903);
-            Add_Error (Table.States (714));
-            Table.States (714).Kernel := To_Vector (((162, 110, 5, False), 
(162, 110, 2, False)));
-            Table.States (714).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 903)));
-            Add_Action (Table.States (715), 41, 705);
-            Add_Action (Table.States (715), 49, 904);
-            Add_Action (Table.States (715), 54, 708);
-            Add_Error (Table.States (715));
-            Add_Goto (Table.States (715), 280, 905);
-            Table.States (715).Kernel := To_Vector (((260, 111, 2, False), 
(326, 111, 2, False)));
-            Table.States (715).Minimal_Complete_Actions := To_Vector (((Shift, 
49, 904), (Shift, 41, 705)));
-            Add_Action (Table.States (716), (74, 96), (326, 8), 1, null, null);
-            Table.States (716).Kernel := To_Vector ((0 => (326, 114, 0, 
False)));
-            Table.States (716).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 1)));
-            Add_Action (Table.States (717), (74, 96), (326, 6), 1, null, null);
-            Table.States (717).Kernel := To_Vector ((0 => (326, 120, 0, 
False)));
-            Table.States (717).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 1)));
-            Add_Action (Table.States (718), (74, 96), (326, 9), 1, null, null);
-            Table.States (718).Kernel := To_Vector ((0 => (326, 162, 0, 
False)));
+            Table.States (706).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (706), 3, 121);
+            Add_Action (Table.States (706), 39, 122);
+            Add_Action (Table.States (706), 40, 123);
+            Add_Action (Table.States (706), 41, 124);
+            Add_Action (Table.States (706), 52, 125);
+            Add_Action (Table.States (706), 74, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (706), 76, 126);
+            Add_Action (Table.States (706), 94, 127);
+            Add_Action (Table.States (706), 95, 128);
+            Add_Action (Table.States (706), 96, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (706), 103, 129);
+            Add_Action (Table.States (706), 104, 119);
+            Add_Action (Table.States (706), 105, 33);
+            Add_Action (Table.States (706), 106, 34);
+            Table.States (706).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (706), 117, 130);
+            Add_Goto (Table.States (706), 128, 41);
+            Add_Goto (Table.States (706), 191, 131);
+            Add_Goto (Table.States (706), 192, 882);
+            Add_Goto (Table.States (706), 197, 133);
+            Add_Goto (Table.States (706), 239, 134);
+            Add_Goto (Table.States (706), 258, 135);
+            Add_Goto (Table.States (706), 272, 92);
+            Add_Goto (Table.States (706), 275, 136);
+            Add_Goto (Table.States (706), 282, 137);
+            Add_Goto (Table.States (706), 283, 138);
+            Add_Goto (Table.States (706), 284, 139);
+            Add_Goto (Table.States (706), 285, 140);
+            Add_Goto (Table.States (706), 286, 141);
+            Add_Goto (Table.States (706), 287, 142);
+            Add_Goto (Table.States (706), 293, 97);
+            Add_Goto (Table.States (706), 301, 143);
+            Add_Goto (Table.States (706), 320, 144);
+            Add_Goto (Table.States (706), 321, 145);
+            Add_Goto (Table.States (706), 330, 146);
+            Table.States (706).Kernel := To_Vector ((0 => (326, 38, 0, 
False)));
+            Table.States (706).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (707).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (707), 54, 883);
+            Table.States (707).Kernel := To_Vector ((0 => (280, 41, 1, 
False)));
+            Table.States (707).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 54, 883)));
+            Table.States (708).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (708), 34, 884);
+            Table.States (708).Kernel := To_Vector (((228, 51, 3, False), 
(228, 51, 1, False)));
+            Table.States (708).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 884)));
+            Table.States (709).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (709), 3, 121);
+            Add_Action (Table.States (709), 39, 122);
+            Add_Action (Table.States (709), 40, 123);
+            Add_Action (Table.States (709), 41, 124);
+            Add_Action (Table.States (709), 76, 126);
+            Add_Action (Table.States (709), 94, 127);
+            Add_Action (Table.States (709), 95, 128);
+            Add_Action (Table.States (709), 103, 129);
+            Add_Action (Table.States (709), 104, 119);
+            Add_Action (Table.States (709), 105, 33);
+            Add_Action (Table.States (709), 106, 34);
+            Table.States (709).Goto_List.Set_Capacity (11);
+            Add_Goto (Table.States (709), 117, 130);
+            Add_Goto (Table.States (709), 128, 41);
+            Add_Goto (Table.States (709), 197, 133);
+            Add_Goto (Table.States (709), 239, 134);
+            Add_Goto (Table.States (709), 258, 135);
+            Add_Goto (Table.States (709), 272, 92);
+            Add_Goto (Table.States (709), 293, 97);
+            Add_Goto (Table.States (709), 301, 885);
+            Add_Goto (Table.States (709), 320, 144);
+            Add_Goto (Table.States (709), 321, 145);
+            Add_Goto (Table.States (709), 330, 146);
+            Table.States (709).Kernel := To_Vector ((0 => (326, 53, 3, 
False)));
+            Table.States (709).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (710).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (710), 15, 886);
+            Add_Action (Table.States (710), 24, Reduce, (150, 1), 0, null, 
null);
+            Add_Action (Table.States (710), 28, 183);
+            Add_Action (Table.States (710), 41, 887);
+            Add_Action (Table.States (710), 104, 164);
+            Table.States (710).Goto_List.Set_Capacity (10);
+            Add_Goto (Table.States (710), 121, 888);
+            Add_Goto (Table.States (710), 127, 40);
+            Add_Goto (Table.States (710), 146, 889);
+            Add_Goto (Table.States (710), 148, 890);
+            Add_Goto (Table.States (710), 149, 891);
+            Add_Goto (Table.States (710), 150, 892);
+            Add_Goto (Table.States (710), 182, 55);
+            Add_Goto (Table.States (710), 219, 893);
+            Add_Goto (Table.States (710), 281, 94);
+            Add_Goto (Table.States (710), 327, 894);
+            Table.States (710).Kernel := To_Vector ((0 => (280, 54, 2, 
False)));
+            Table.States (710).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 150, 0)));
+            Table.States (711).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (711), 34, 895);
+            Add_Action (Table.States (711), 39, Reduce, (109, 4), 1, null, 
null);
+            Table.States (711).Kernel := To_Vector (((109, 64, 0, False), 
(228, 64, 3, False), (228, 64, 1, False)));
+            Table.States (711).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 109, 1)));
+            Table.States (712).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (712), 36, 896);
+            Add_Action (Table.States (712), 41, Reduce, (111, 3), 1, null, 
null);
+            Add_Action (Table.States (712), 49, Reduce, (111, 3), 1, null, 
null);
+            Add_Action (Table.States (712), 54, Reduce, (111, 3), 1, null, 
null);
+            Add_Action (Table.States (712), 96, 897);
+            Table.States (712).Kernel := To_Vector (((111, 65, 1, False), 
(111, 65, 0, False), (223, 65, 1, False)));
+            Table.States (712).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 111, 1)));
+            Table.States (713).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (713), 34, 898);
+            Table.States (713).Kernel := To_Vector (((228, 66, 3, False), 
(228, 66, 1, False)));
+            Table.States (713).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 898)));
+            Table.States (714).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (714), 104, 899);
+            Add_Action (Table.States (714), 106, 900);
+            Table.States (714).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (714), 180, 901);
+            Add_Goto (Table.States (714), 181, 902);
+            Table.States (714).Kernel := To_Vector ((0 => (183, 76, 2, 
False)));
+            Table.States (714).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 899)));
+            Table.States (715).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (715), 39, 903);
+            Table.States (715).Kernel := To_Vector ((0 => (259, 109, 5, 
False)));
+            Table.States (715).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 903)));
+            Table.States (716).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (716), 39, 904);
+            Table.States (716).Kernel := To_Vector (((162, 110, 5, False), 
(162, 110, 2, False)));
+            Table.States (716).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 904)));
+            Table.States (717).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (717), 41, 707);
+            Add_Action (Table.States (717), 49, 905);
+            Add_Action (Table.States (717), 54, 710);
+            Table.States (717).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (717), 280, 906);
+            Table.States (717).Kernel := To_Vector (((260, 111, 2, False), 
(326, 111, 2, False)));
+            Table.States (717).Minimal_Complete_Actions := To_Vector (((Shift, 
49, 905), (Shift, 41, 707)));
+            Table.States (718).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (718), (74, 96), (326, 8), 1, null, null);
+            Table.States (718).Kernel := To_Vector ((0 => (326, 114, 0, 
False)));
             Table.States (718).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 1)));
-            Add_Action (Table.States (719), (74, 96), (326, 0), 1, null, null);
-            Table.States (719).Kernel := To_Vector ((0 => (326, 183, 0, 
False)));
+            Table.States (719).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (719), (74, 96), (326, 6), 1, null, null);
+            Table.States (719).Kernel := To_Vector ((0 => (326, 120, 0, 
False)));
             Table.States (719).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 1)));
-            Add_Action (Table.States (720), (74, 96), (326, 10), 1, null, 
null);
-            Table.States (720).Kernel := To_Vector ((0 => (326, 228, 0, 
False)));
+            Table.States (720).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (720), (74, 96), (326, 9), 1, null, null);
+            Table.States (720).Kernel := To_Vector ((0 => (326, 162, 0, 
False)));
             Table.States (720).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 1)));
-            Add_Action (Table.States (721), 7, 556);
-            Add_Error (Table.States (721));
-            Table.States (721).Kernel := To_Vector (((114, 241, 2, False), 
(114, 241, 3, True), (114, 241, 2, False)));
-            Table.States (721).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 7, 556)));
-            Add_Action (Table.States (722), 74, 337);
-            Add_Action (Table.States (722), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (722));
-            Add_Goto (Table.States (722), 122, 906);
-            Table.States (722).Kernel := To_Vector ((0 => (206, 326, 1, 
False)));
-            Table.States (722).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (723), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
-            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (331, 0), 5,
-            use_clause_0'Access, null);
-            Table.States (723).Kernel := To_Vector ((0 => (331, 96, 0, 
False)));
-            Table.States (723).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 331, 5)));
+            Table.States (721).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (721), (74, 96), (326, 0), 1, null, null);
+            Table.States (721).Kernel := To_Vector ((0 => (326, 183, 0, 
False)));
+            Table.States (721).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 1)));
+            Table.States (722).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (722), (74, 96), (326, 10), 1, null, 
null);
+            Table.States (722).Kernel := To_Vector ((0 => (326, 228, 0, 
False)));
+            Table.States (722).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 1)));
+            Table.States (723).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (723), 7, 556);
+            Table.States (723).Kernel := To_Vector (((114, 241, 2, False), 
(114, 241, 3, True), (114, 241, 2, False)));
+            Table.States (723).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 7, 556)));
+            Table.States (724).Action_List.Set_Capacity (2);
             Add_Action (Table.States (724), 74, 337);
-            Add_Action (Table.States (724), 76, 235);
-            Add_Action (Table.States (724), 84, 237);
             Add_Action (Table.States (724), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Action (Table.States (724), 101, 239);
-            Add_Action (Table.States (724), 102, 240);
-            Add_Error (Table.States (724));
-            Add_Goto (Table.States (724), 115, 241);
+            Table.States (724).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (724), 122, 907);
-            Add_Goto (Table.States (724), 322, 242);
-            Table.States (724).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
+            Table.States (724).Kernel := To_Vector ((0 => (206, 326, 1, 
False)));
+            Table.States (724).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (725).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (725), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (331, 0), 5,
+            use_clause_0'Access, null);
+            Table.States (725).Kernel := To_Vector ((0 => (331, 96, 0, 
False)));
+            Table.States (725).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 331, 5)));
+            Table.States (726).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (726), 74, 337);
+            Add_Action (Table.States (726), 76, 235);
+            Add_Action (Table.States (726), 84, 237);
+            Add_Action (Table.States (726), 96, Reduce, (122, 1), 0, null, 
null);
+            Add_Action (Table.States (726), 101, 239);
+            Add_Action (Table.States (726), 102, 240);
+            Table.States (726).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (726), 115, 241);
+            Add_Goto (Table.States (726), 122, 908);
+            Add_Goto (Table.States (726), 322, 242);
+            Table.States (726).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (245, 239, 1, False), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (724).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (725), 74, 337);
-            Add_Action (Table.States (725), 76, 235);
-            Add_Action (Table.States (725), 84, 237);
-            Add_Action (Table.States (725), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Action (Table.States (725), 101, 239);
-            Add_Action (Table.States (725), 102, 240);
-            Add_Error (Table.States (725));
-            Add_Goto (Table.States (725), 115, 241);
-            Add_Goto (Table.States (725), 122, 908);
-            Add_Goto (Table.States (725), 322, 242);
-            Table.States (725).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
+            Table.States (726).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (727).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (727), 74, 337);
+            Add_Action (Table.States (727), 76, 235);
+            Add_Action (Table.States (727), 84, 237);
+            Add_Action (Table.States (727), 96, Reduce, (122, 1), 0, null, 
null);
+            Add_Action (Table.States (727), 101, 239);
+            Add_Action (Table.States (727), 102, 240);
+            Table.States (727).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (727), 115, 241);
+            Add_Goto (Table.States (727), 122, 909);
+            Add_Goto (Table.States (727), 322, 242);
+            Table.States (727).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (245, 239, 1, False), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (725).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (726), (104, 105, 106), (208, 0), 1, 
null, null);
-            Table.States (726).Kernel := To_Vector ((0 => (208, 9, 0, False)));
-            Table.States (726).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 208, 1)));
-            Add_Action (Table.States (727), (104, 105, 106), (208, 1), 1, 
null, null);
-            Table.States (727).Kernel := To_Vector ((0 => (208, 16, 0, 
False)));
-            Table.States (727).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 208, 1)));
-            Add_Action (Table.States (728), (29, 50), (270, 0), 1, null, null);
-            Table.States (728).Kernel := To_Vector ((0 => (270, 51, 0, 
False)));
-            Table.States (728).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 270, 1)));
-            Add_Action (Table.States (729), 104, 119);
-            Add_Action (Table.States (729), 105, 33);
-            Add_Action (Table.States (729), 106, 34);
-            Add_Error (Table.States (729));
-            Add_Goto (Table.States (729), 128, 41);
-            Add_Goto (Table.States (729), 239, 909);
-            Add_Goto (Table.States (729), 272, 92);
-            Add_Goto (Table.States (729), 293, 97);
-            Table.States (729).Kernel := To_Vector ((0 => (114, 208, 1, 
False)));
-            Table.States (729).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (730), 29, 910);
-            Add_Action (Table.States (730), 50, 911);
-            Add_Error (Table.States (730));
-            Table.States (730).Kernel := To_Vector (((114, 270, 1, False), 
(114, 270, 2, True)));
-            Table.States (730).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 50, 911)));
-            Table.States (730).Minimal_Complete_Actions_Recursive := True;
+            Table.States (727).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (728).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (728), (104, 105, 106), (208, 0), 1, 
null, null);
+            Table.States (728).Kernel := To_Vector ((0 => (208, 9, 0, False)));
+            Table.States (728).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 208, 1)));
+            Table.States (729).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (729), (104, 105, 106), (208, 1), 1, 
null, null);
+            Table.States (729).Kernel := To_Vector ((0 => (208, 16, 0, 
False)));
+            Table.States (729).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 208, 1)));
+            Table.States (730).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (730), (29, 50), (270, 0), 1, null, null);
+            Table.States (730).Kernel := To_Vector ((0 => (270, 51, 0, 
False)));
+            Table.States (730).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 270, 1)));
+            Table.States (731).Action_List.Set_Capacity (3);
             Add_Action (Table.States (731), 104, 119);
             Add_Action (Table.States (731), 105, 33);
             Add_Action (Table.States (731), 106, 34);
-            Add_Error (Table.States (731));
+            Table.States (731).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (731), 128, 41);
-            Add_Goto (Table.States (731), 239, 912);
+            Add_Goto (Table.States (731), 239, 910);
             Add_Goto (Table.States (731), 272, 92);
             Add_Goto (Table.States (731), 293, 97);
-            Table.States (731).Kernel := To_Vector ((0 => (245, 56, 2, 
False)));
+            Table.States (731).Kernel := To_Vector ((0 => (114, 208, 1, 
False)));
             Table.States (731).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (732), 96, 913);
-            Add_Error (Table.States (732));
-            Table.States (732).Kernel := To_Vector ((0 => (133, 220, 1, 
False)));
-            Table.States (732).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 913)));
-            Add_Action (Table.States (733), 44, 914);
-            Add_Action (Table.States (733), 104, 915);
+            Table.States (732).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (732), 29, 911);
+            Add_Action (Table.States (732), 50, 912);
+            Table.States (732).Kernel := To_Vector (((114, 270, 1, False), 
(114, 270, 2, True)));
+            Table.States (732).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 50, 912)));
+            Table.States (732).Minimal_Complete_Actions_Recursive := True;
+            Table.States (733).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (733), 104, 119);
             Add_Action (Table.States (733), 105, 33);
             Add_Action (Table.States (733), 106, 34);
-            Add_Error (Table.States (733));
+            Table.States (733).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (733), 128, 41);
-            Add_Goto (Table.States (733), 184, 916);
-            Add_Goto (Table.States (733), 185, 917);
-            Add_Goto (Table.States (733), 239, 918);
+            Add_Goto (Table.States (733), 239, 913);
             Add_Goto (Table.States (733), 272, 92);
             Add_Goto (Table.States (733), 293, 97);
-            Table.States (733).Kernel := To_Vector (((187, 72, 4, False), 
(187, 72, 2, False)));
-            Table.States (733).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 915)));
-            Add_Action (Table.States (734), (24, 72), (188, 1), 1, null, null);
-            Table.States (734).Kernel := To_Vector ((0 => (188, 187, 0, 
False)));
-            Table.States (734).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 188, 1)));
-            Add_Action (Table.States (735), 24, Reduce, (189, 0), 1, null, 
null);
-            Add_Action (Table.States (735), 72, 733);
-            Add_Error (Table.States (735));
-            Add_Goto (Table.States (735), 187, 919);
-            Table.States (735).Kernel := To_Vector (((188, 188, 3, True), 
(189, 188, 0, False)));
-            Table.States (735).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 189, 1)));
-            Add_Action (Table.States (736), (1 =>  24), (218, 0), 3, 
handled_sequence_of_statements_0'Access, null);
-            Table.States (736).Kernel := To_Vector ((0 => (218, 189, 0, 
False)));
-            Table.States (736).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 218, 3)));
-            Add_Action (Table.States (737), (24, 72), (188, 2), 1, null, null);
-            Table.States (737).Kernel := To_Vector ((0 => (188, 257, 0, 
False)));
-            Table.States (737).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 188, 1)));
-            Add_Action (Table.States (738), 24, 920);
-            Add_Error (Table.States (738));
-            Table.States (738).Kernel := To_Vector ((0 => (133, 218, 2, 
False)));
-            Table.States (738).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 920)));
-            Add_Action (Table.States (739), 96, Reduce, (220, 1), 0, null, 
null);
-            Add_Action (Table.States (739), 104, 149);
-            Add_Error (Table.States (739));
-            Add_Goto (Table.States (739), 220, 921);
-            Table.States (739).Kernel := To_Vector ((0 => (232, 37, 1, 
False)));
-            Table.States (739).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
-            Add_Action (Table.States (740), 37, 922);
-            Add_Error (Table.States (740));
-            Table.States (740).Kernel := To_Vector ((0 => (232, 24, 2, 
False)));
-            Table.States (740).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 922)));
-            Add_Action (Table.States (741), 96, 923);
-            Add_Error (Table.States (741));
-            Table.States (741).Kernel := To_Vector ((0 => (157, 192, 1, 
False)));
-            Table.States (741).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 923)));
-            Add_Action (Table.States (742), 41, 924);
-            Add_Error (Table.States (742));
-            Table.States (742).Kernel := To_Vector (((241, 40, 1, False), 
(314, 40, 6, False), (314, 40, 2, False)));
-            Table.States (742).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 924)));
-            Add_Action (Table.States (743), 74, 337);
-            Add_Action (Table.States (743), 82, 925);
-            Add_Action (Table.States (743), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (743));
-            Add_Goto (Table.States (743), 122, 926);
-            Table.States (743).Kernel := To_Vector (((244, 114, 2, False), 
(244, 114, 1, False)));
-            Table.States (743).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (744), 74, 337);
-            Add_Action (Table.States (744), 82, 927);
-            Add_Action (Table.States (744), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (744));
-            Add_Goto (Table.States (744), 122, 928);
-            Table.States (744).Kernel := To_Vector (((244, 120, 2, False), 
(244, 120, 1, False)));
-            Table.States (744).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (745), 74, 337);
-            Add_Action (Table.States (745), 82, 929);
-            Add_Action (Table.States (745), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (745));
-            Add_Goto (Table.States (745), 122, 930);
-            Table.States (745).Kernel := To_Vector (((244, 314, 2, False), 
(244, 314, 1, False)));
-            Table.States (745).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (733).Kernel := To_Vector ((0 => (245, 56, 2, 
False)));
+            Table.States (733).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (734).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (734), 96, 914);
+            Table.States (734).Kernel := To_Vector ((0 => (133, 220, 1, 
False)));
+            Table.States (734).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 914)));
+            Table.States (735).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (735), 44, 915);
+            Add_Action (Table.States (735), 104, 916);
+            Add_Action (Table.States (735), 105, 33);
+            Add_Action (Table.States (735), 106, 34);
+            Table.States (735).Goto_List.Set_Capacity (6);
+            Add_Goto (Table.States (735), 128, 41);
+            Add_Goto (Table.States (735), 184, 917);
+            Add_Goto (Table.States (735), 185, 918);
+            Add_Goto (Table.States (735), 239, 919);
+            Add_Goto (Table.States (735), 272, 92);
+            Add_Goto (Table.States (735), 293, 97);
+            Table.States (735).Kernel := To_Vector (((187, 72, 4, False), 
(187, 72, 2, False)));
+            Table.States (735).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 916)));
+            Table.States (736).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (736), (24, 72), (188, 1), 1, null, null);
+            Table.States (736).Kernel := To_Vector ((0 => (188, 187, 0, 
False)));
+            Table.States (736).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 188, 1)));
+            Table.States (737).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (737), 24, Reduce, (189, 0), 1, null, 
null);
+            Add_Action (Table.States (737), 72, 735);
+            Table.States (737).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (737), 187, 920);
+            Table.States (737).Kernel := To_Vector (((188, 188, 3, True), 
(189, 188, 0, False)));
+            Table.States (737).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 189, 1)));
+            Table.States (738).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (738), (1 =>  24), (218, 0), 3, 
handled_sequence_of_statements_0'Access, null);
+            Table.States (738).Kernel := To_Vector ((0 => (218, 189, 0, 
False)));
+            Table.States (738).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 218, 3)));
+            Table.States (739).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (739), (24, 72), (188, 2), 1, null, null);
+            Table.States (739).Kernel := To_Vector ((0 => (188, 257, 0, 
False)));
+            Table.States (739).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 188, 1)));
+            Table.States (740).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (740), 24, 921);
+            Table.States (740).Kernel := To_Vector ((0 => (133, 218, 2, 
False)));
+            Table.States (740).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 921)));
          end Subr_13;
          procedure Subr_14
          is begin
-            Add_Action (Table.States (746), (77, 83), (278, 0), 3, null, null);
-            Table.States (746).Kernel := To_Vector ((0 => (278, 277, 0, 
True)));
-            Table.States (746).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 278, 3)));
-            Table.States (746).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (747), 77, 931);
-            Add_Error (Table.States (747));
-            Table.States (747).Kernel := To_Vector ((0 => (179, 167, 2, 
False)));
-            Table.States (747).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 931)));
-            Add_Action (Table.States (748), 96, 932);
-            Add_Error (Table.States (748));
-            Table.States (748).Kernel := To_Vector ((0 => (179, 122, 1, 
False)));
-            Table.States (748).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 932)));
-            Add_Action (Table.States (749), 104, 119);
-            Add_Action (Table.States (749), 105, 33);
-            Add_Action (Table.States (749), 106, 34);
-            Add_Error (Table.States (749));
-            Add_Goto (Table.States (749), 128, 41);
-            Add_Goto (Table.States (749), 239, 933);
-            Add_Goto (Table.States (749), 272, 92);
-            Add_Goto (Table.States (749), 293, 97);
-            Table.States (749).Kernel := To_Vector ((0 => (213, 39, 2, 
False)));
-            Table.States (749).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (750), 104, 119);
-            Add_Action (Table.States (750), 105, 33);
-            Add_Action (Table.States (750), 106, 34);
-            Add_Error (Table.States (750));
-            Add_Goto (Table.States (750), 128, 41);
-            Add_Goto (Table.States (750), 239, 934);
-            Add_Goto (Table.States (750), 272, 92);
-            Add_Goto (Table.States (750), 293, 97);
-            Table.States (750).Kernel := To_Vector ((0 => (213, 39, 2, 
False)));
-            Table.States (750).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (751), 77, 935);
-            Add_Action (Table.States (751), 83, 443);
-            Add_Error (Table.States (751));
-            Table.States (751).Kernel := To_Vector (((125, 125, 1, True), 
(256, 125, 1, False)));
-            Table.States (751).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 935)));
-            Add_Action (Table.States (752), 77, 936);
-            Add_Error (Table.States (752));
-            Table.States (752).Kernel := To_Vector ((0 => (256, 153, 1, 
False)));
-            Table.States (752).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 936)));
-            Add_Action (Table.States (753), 77, 937);
-            Add_Error (Table.States (753));
-            Table.States (753).Kernel := To_Vector ((0 => (256, 192, 1, 
False)));
-            Table.States (753).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 937)));
-            Add_Action (Table.States (754), 96, 938);
-            Add_Error (Table.States (754));
-            Table.States (754).Kernel := To_Vector ((0 => (193, 122, 1, 
False)));
-            Table.States (754).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 938)));
-            Add_Action (Table.States (755), 96, 939);
-            Add_Error (Table.States (755));
-            Table.States (755).Kernel := To_Vector ((0 => (243, 122, 1, 
False)));
-            Table.States (755).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 939)));
-            Add_Action (Table.States (756), 96, 940);
-            Add_Error (Table.States (756));
-            Table.States (756).Kernel := To_Vector ((0 => (112, 122, 1, 
False)));
-            Table.States (756).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 940)));
-            Add_Action (Table.States (757), 96, 941);
-            Add_Error (Table.States (757));
-            Table.States (757).Kernel := To_Vector ((0 => (308, 122, 1, 
False)));
-            Table.States (757).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 941)));
-            Add_Action (Table.States (758), 96, 942);
-            Add_Error (Table.States (758));
-            Table.States (758).Kernel := To_Vector ((0 => (311, 122, 1, 
False)));
-            Table.States (758).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 942)));
-            Add_Action (Table.States (759), 13, 943);
-            Add_Error (Table.States (759));
-            Table.States (759).Kernel := To_Vector ((0 => (307, 159, 3, 
False)));
-            Table.States (759).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 943)));
-            Add_Action (Table.States (760), 24, 944);
-            Add_Error (Table.States (760));
-            Table.States (760).Kernel := To_Vector ((0 => (113, 218, 2, 
False)));
-            Table.States (760).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 944)));
-            Add_Action (Table.States (761), 3, 121);
-            Add_Action (Table.States (761), 39, 122);
-            Add_Action (Table.States (761), 40, 261);
-            Add_Action (Table.States (761), 41, 124);
-            Add_Action (Table.States (761), 44, 263);
-            Add_Action (Table.States (761), 52, 125);
-            Add_Action (Table.States (761), 76, 126);
-            Add_Action (Table.States (761), 79, Reduce, (166, 2), 0, null, 
null);
-            Add_Action (Table.States (761), 87, Reduce, (166, 2), 0, null, 
null);
-            Add_Action (Table.States (761), 94, 127);
-            Add_Action (Table.States (761), 95, 128);
-            Add_Action (Table.States (761), 103, 129);
-            Add_Action (Table.States (761), 104, 119);
-            Add_Action (Table.States (761), 105, 33);
-            Add_Action (Table.States (761), 106, 34);
-            Add_Error (Table.States (761));
-            Add_Goto (Table.States (761), 117, 130);
-            Add_Goto (Table.States (761), 128, 41);
-            Add_Goto (Table.States (761), 165, 269);
-            Add_Goto (Table.States (761), 166, 945);
-            Add_Goto (Table.States (761), 191, 599);
-            Add_Goto (Table.States (761), 197, 133);
-            Add_Goto (Table.States (761), 239, 274);
-            Add_Goto (Table.States (761), 258, 135);
-            Add_Goto (Table.States (761), 272, 92);
-            Add_Goto (Table.States (761), 275, 136);
-            Add_Goto (Table.States (761), 277, 276);
-            Add_Goto (Table.States (761), 282, 137);
-            Add_Goto (Table.States (761), 283, 138);
-            Add_Goto (Table.States (761), 284, 139);
-            Add_Goto (Table.States (761), 285, 140);
-            Add_Goto (Table.States (761), 286, 141);
-            Add_Goto (Table.States (761), 287, 142);
-            Add_Goto (Table.States (761), 293, 97);
-            Add_Goto (Table.States (761), 301, 277);
-            Add_Goto (Table.States (761), 320, 144);
-            Add_Goto (Table.States (761), 321, 145);
-            Add_Goto (Table.States (761), 330, 146);
-            Table.States (761).Kernel := To_Vector ((0 => (137, 72, 1, 
False)));
-            Table.States (761).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 166, 0)));
-            Add_Action (Table.States (762), (77, 83), (138, 1), 1, null, null);
-            Table.States (762).Kernel := To_Vector ((0 => (138, 137, 0, 
False)));
-            Table.States (762).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 138, 1)));
-            Add_Action (Table.States (763), 77, Reduce, (136, 0), 4, 
case_expression_0'Access, null);
-            Add_Action (Table.States (763), 83, 946);
-            Add_Error (Table.States (763));
-            Table.States (763).Kernel := To_Vector (((136, 138, 0, False), 
(138, 138, 3, True)));
-            Table.States (763).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 136, 4)));
-            Add_Action (Table.States (764), 3, 121);
-            Add_Action (Table.States (764), 39, 122);
-            Add_Action (Table.States (764), 40, 123);
-            Add_Action (Table.States (764), 41, 124);
-            Add_Action (Table.States (764), 52, 125);
-            Add_Action (Table.States (764), 76, 126);
-            Add_Action (Table.States (764), 77, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (764), 94, 127);
-            Add_Action (Table.States (764), 95, 128);
-            Add_Action (Table.States (764), 103, 129);
-            Add_Action (Table.States (764), 104, 119);
-            Add_Action (Table.States (764), 105, 33);
-            Add_Action (Table.States (764), 106, 34);
-            Add_Error (Table.States (764));
-            Add_Goto (Table.States (764), 117, 130);
-            Add_Goto (Table.States (764), 128, 41);
-            Add_Goto (Table.States (764), 191, 131);
-            Add_Goto (Table.States (764), 192, 947);
-            Add_Goto (Table.States (764), 197, 133);
-            Add_Goto (Table.States (764), 239, 134);
-            Add_Goto (Table.States (764), 258, 135);
-            Add_Goto (Table.States (764), 272, 92);
-            Add_Goto (Table.States (764), 275, 136);
-            Add_Goto (Table.States (764), 282, 137);
-            Add_Goto (Table.States (764), 283, 138);
-            Add_Goto (Table.States (764), 284, 139);
-            Add_Goto (Table.States (764), 285, 140);
-            Add_Goto (Table.States (764), 286, 141);
-            Add_Goto (Table.States (764), 287, 142);
-            Add_Goto (Table.States (764), 293, 97);
-            Add_Goto (Table.States (764), 301, 143);
-            Add_Goto (Table.States (764), 320, 144);
-            Add_Goto (Table.States (764), 321, 145);
-            Add_Goto (Table.States (764), 330, 146);
-            Table.States (764).Kernel := To_Vector ((0 => (273, 87, 0, 
False)));
-            Table.States (764).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (765), 22, 948);
-            Add_Action (Table.States (765), 23, 949);
-            Add_Action (Table.States (765), 77, Reduce, (221, 3), 4, 
if_expression_3'Access, null);
-            Add_Error (Table.States (765));
-            Add_Goto (Table.States (765), 172, 950);
-            Add_Goto (Table.States (765), 173, 951);
-            Table.States (765).Kernel := To_Vector (((221, 192, 3, False), 
(221, 192, 1, False), (221, 192, 2, False),
+            Table.States (741).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (741), 96, Reduce, (220, 1), 0, null, 
null);
+            Add_Action (Table.States (741), 104, 149);
+            Table.States (741).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (741), 220, 922);
+            Table.States (741).Kernel := To_Vector ((0 => (232, 37, 1, 
False)));
+            Table.States (741).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (742).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (742), 37, 923);
+            Table.States (742).Kernel := To_Vector ((0 => (232, 24, 2, 
False)));
+            Table.States (742).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 923)));
+            Table.States (743).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (743), 96, 924);
+            Table.States (743).Kernel := To_Vector ((0 => (157, 192, 1, 
False)));
+            Table.States (743).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 924)));
+            Table.States (744).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (744), 41, 925);
+            Table.States (744).Kernel := To_Vector (((241, 40, 1, False), 
(314, 40, 6, False), (314, 40, 2, False)));
+            Table.States (744).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 925)));
+            Table.States (745).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (745), 74, 337);
+            Add_Action (Table.States (745), 82, 926);
+            Add_Action (Table.States (745), 96, Reduce, (122, 1), 0, null, 
null);
+            Table.States (745).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (745), 122, 927);
+            Table.States (745).Kernel := To_Vector (((244, 114, 2, False), 
(244, 114, 1, False)));
+            Table.States (745).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (746).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (746), 74, 337);
+            Add_Action (Table.States (746), 82, 928);
+            Add_Action (Table.States (746), 96, Reduce, (122, 1), 0, null, 
null);
+            Table.States (746).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (746), 122, 929);
+            Table.States (746).Kernel := To_Vector (((244, 120, 2, False), 
(244, 120, 1, False)));
+            Table.States (746).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (747).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (747), 74, 337);
+            Add_Action (Table.States (747), 82, 930);
+            Add_Action (Table.States (747), 96, Reduce, (122, 1), 0, null, 
null);
+            Table.States (747).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (747), 122, 931);
+            Table.States (747).Kernel := To_Vector (((244, 314, 2, False), 
(244, 314, 1, False)));
+            Table.States (747).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (748).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (748), (77, 83), (278, 0), 3, null, null);
+            Table.States (748).Kernel := To_Vector ((0 => (278, 277, 0, 
True)));
+            Table.States (748).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 278, 3)));
+            Table.States (748).Minimal_Complete_Actions_Recursive := True;
+            Table.States (749).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (749), 77, 932);
+            Table.States (749).Kernel := To_Vector ((0 => (129, 191, 1, 
False)));
+            Table.States (749).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 932)));
+            Table.States (750).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (750), 77, 933);
+            Table.States (750).Kernel := To_Vector ((0 => (179, 167, 2, 
False)));
+            Table.States (750).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 933)));
+            Table.States (751).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (751), 96, 934);
+            Table.States (751).Kernel := To_Vector ((0 => (179, 122, 1, 
False)));
+            Table.States (751).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 934)));
+            Table.States (752).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (752), 104, 119);
+            Add_Action (Table.States (752), 105, 33);
+            Add_Action (Table.States (752), 106, 34);
+            Table.States (752).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (752), 128, 41);
+            Add_Goto (Table.States (752), 239, 935);
+            Add_Goto (Table.States (752), 272, 92);
+            Add_Goto (Table.States (752), 293, 97);
+            Table.States (752).Kernel := To_Vector ((0 => (213, 39, 2, 
False)));
+            Table.States (752).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (753).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (753), 104, 119);
+            Add_Action (Table.States (753), 105, 33);
+            Add_Action (Table.States (753), 106, 34);
+            Table.States (753).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (753), 128, 41);
+            Add_Goto (Table.States (753), 239, 936);
+            Add_Goto (Table.States (753), 272, 92);
+            Add_Goto (Table.States (753), 293, 97);
+            Table.States (753).Kernel := To_Vector ((0 => (213, 39, 2, 
False)));
+            Table.States (753).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (754).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (754), 74, 447);
+            Add_Action (Table.States (754), 77, 937);
+            Table.States (754).Kernel := To_Vector (((117, 192, 4, False), 
(117, 192, 2, False), (256, 192, 1,
+            False)));
+            Table.States (754).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 937)));
+            Table.States (755).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (755), 96, 938);
+            Table.States (755).Kernel := To_Vector ((0 => (193, 122, 1, 
False)));
+            Table.States (755).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 938)));
+            Table.States (756).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (756), 96, 939);
+            Table.States (756).Kernel := To_Vector ((0 => (243, 122, 1, 
False)));
+            Table.States (756).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 939)));
+            Table.States (757).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (757), 96, 940);
+            Table.States (757).Kernel := To_Vector ((0 => (112, 122, 1, 
False)));
+            Table.States (757).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 940)));
+            Table.States (758).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (758), 96, 941);
+            Table.States (758).Kernel := To_Vector ((0 => (308, 122, 1, 
False)));
+            Table.States (758).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 941)));
+            Table.States (759).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (759), 96, 942);
+            Table.States (759).Kernel := To_Vector ((0 => (311, 122, 1, 
False)));
+            Table.States (759).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 942)));
+            Table.States (760).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (760), 13, 943);
+            Table.States (760).Kernel := To_Vector ((0 => (307, 159, 3, 
False)));
+            Table.States (760).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 943)));
+            Table.States (761).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (761), 24, 944);
+            Table.States (761).Kernel := To_Vector ((0 => (113, 218, 2, 
False)));
+            Table.States (761).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 944)));
+            Table.States (762).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (762), 3, 121);
+            Add_Action (Table.States (762), 39, 122);
+            Add_Action (Table.States (762), 40, 261);
+            Add_Action (Table.States (762), 41, 124);
+            Add_Action (Table.States (762), 44, 263);
+            Add_Action (Table.States (762), 52, 125);
+            Add_Action (Table.States (762), 76, 126);
+            Add_Action (Table.States (762), 79, Reduce, (166, 2), 0, null, 
null);
+            Add_Action (Table.States (762), 87, Reduce, (166, 2), 0, null, 
null);
+            Add_Action (Table.States (762), 94, 127);
+            Add_Action (Table.States (762), 95, 128);
+            Add_Action (Table.States (762), 103, 129);
+            Add_Action (Table.States (762), 104, 119);
+            Add_Action (Table.States (762), 105, 33);
+            Add_Action (Table.States (762), 106, 34);
+            Table.States (762).Goto_List.Set_Capacity (22);
+            Add_Goto (Table.States (762), 117, 130);
+            Add_Goto (Table.States (762), 128, 41);
+            Add_Goto (Table.States (762), 165, 269);
+            Add_Goto (Table.States (762), 166, 945);
+            Add_Goto (Table.States (762), 191, 601);
+            Add_Goto (Table.States (762), 197, 133);
+            Add_Goto (Table.States (762), 239, 274);
+            Add_Goto (Table.States (762), 258, 135);
+            Add_Goto (Table.States (762), 272, 92);
+            Add_Goto (Table.States (762), 275, 136);
+            Add_Goto (Table.States (762), 277, 276);
+            Add_Goto (Table.States (762), 282, 137);
+            Add_Goto (Table.States (762), 283, 138);
+            Add_Goto (Table.States (762), 284, 139);
+            Add_Goto (Table.States (762), 285, 140);
+            Add_Goto (Table.States (762), 286, 141);
+            Add_Goto (Table.States (762), 287, 142);
+            Add_Goto (Table.States (762), 293, 97);
+            Add_Goto (Table.States (762), 301, 277);
+            Add_Goto (Table.States (762), 320, 144);
+            Add_Goto (Table.States (762), 321, 145);
+            Add_Goto (Table.States (762), 330, 146);
+            Table.States (762).Kernel := To_Vector ((0 => (137, 72, 1, 
False)));
+            Table.States (762).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 166, 0)));
+            Table.States (763).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (763), (77, 83), (138, 1), 1, null, null);
+            Table.States (763).Kernel := To_Vector ((0 => (138, 137, 0, 
False)));
+            Table.States (763).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 138, 1)));
+            Table.States (764).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (764), 77, Reduce, (136, 0), 4, 
case_expression_0'Access, null);
+            Add_Action (Table.States (764), 83, 946);
+            Table.States (764).Kernel := To_Vector (((136, 138, 0, False), 
(138, 138, 3, True)));
+            Table.States (764).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 136, 4)));
+            Table.States (765).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (765), 3, 121);
+            Add_Action (Table.States (765), 39, 122);
+            Add_Action (Table.States (765), 40, 123);
+            Add_Action (Table.States (765), 41, 124);
+            Add_Action (Table.States (765), 52, 125);
+            Add_Action (Table.States (765), 76, 126);
+            Add_Action (Table.States (765), 77, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (765), 94, 127);
+            Add_Action (Table.States (765), 95, 128);
+            Add_Action (Table.States (765), 103, 129);
+            Add_Action (Table.States (765), 104, 119);
+            Add_Action (Table.States (765), 105, 33);
+            Add_Action (Table.States (765), 106, 34);
+            Table.States (765).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (765), 117, 130);
+            Add_Goto (Table.States (765), 128, 41);
+            Add_Goto (Table.States (765), 191, 131);
+            Add_Goto (Table.States (765), 192, 947);
+            Add_Goto (Table.States (765), 197, 133);
+            Add_Goto (Table.States (765), 239, 134);
+            Add_Goto (Table.States (765), 258, 135);
+            Add_Goto (Table.States (765), 272, 92);
+            Add_Goto (Table.States (765), 275, 136);
+            Add_Goto (Table.States (765), 282, 137);
+            Add_Goto (Table.States (765), 283, 138);
+            Add_Goto (Table.States (765), 284, 139);
+            Add_Goto (Table.States (765), 285, 140);
+            Add_Goto (Table.States (765), 286, 141);
+            Add_Goto (Table.States (765), 287, 142);
+            Add_Goto (Table.States (765), 293, 97);
+            Add_Goto (Table.States (765), 301, 143);
+            Add_Goto (Table.States (765), 320, 144);
+            Add_Goto (Table.States (765), 321, 145);
+            Add_Goto (Table.States (765), 330, 146);
+            Table.States (765).Kernel := To_Vector ((0 => (273, 87, 0, 
False)));
+            Table.States (765).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (766).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (766), 22, 948);
+            Add_Action (Table.States (766), 23, 949);
+            Add_Action (Table.States (766), 77, Reduce, (221, 3), 4, 
if_expression_3'Access, null);
+            Table.States (766).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (766), 172, 950);
+            Add_Goto (Table.States (766), 173, 951);
+            Table.States (766).Kernel := To_Vector (((221, 192, 3, False), 
(221, 192, 1, False), (221, 192, 2, False),
             (221, 192, 0, False)));
-            Table.States (765).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 4)));
-            Add_Action (Table.States (766), 77, 952);
-            Add_Error (Table.States (766));
-            Table.States (766).Kernel := To_Vector ((0 => (117, 54, 1, 
False)));
-            Table.States (766).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 952)));
-            Add_Action (Table.States (767), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
+            Table.States (766).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 4)));
+            Table.States (767).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (767), 77, 952);
+            Table.States (767).Kernel := To_Vector ((0 => (117, 54, 1, 
False)));
+            Table.States (767).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 952)));
+            Table.States (768).Action_List.Set_Capacity (63);
+            Add_Action (Table.States (768), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (117, 1), 5, aggregate_1'Access,
             null);
-            Table.States (767).Kernel := To_Vector ((0 => (117, 77, 0, 
False)));
-            Table.States (767).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 117, 5)));
-            Add_Action (Table.States (768), 3, 121);
-            Add_Action (Table.States (768), 39, 122);
-            Add_Action (Table.States (768), 40, 123);
-            Add_Action (Table.States (768), 41, 124);
-            Add_Action (Table.States (768), 52, 125);
-            Add_Action (Table.States (768), 76, 126);
-            Add_Action (Table.States (768), 77, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (768), 94, 127);
-            Add_Action (Table.States (768), 95, 128);
-            Add_Action (Table.States (768), 103, 129);
-            Add_Action (Table.States (768), 104, 119);
-            Add_Action (Table.States (768), 105, 33);
-            Add_Action (Table.States (768), 106, 34);
-            Add_Error (Table.States (768));
-            Add_Goto (Table.States (768), 117, 130);
-            Add_Goto (Table.States (768), 128, 41);
-            Add_Goto (Table.States (768), 191, 131);
-            Add_Goto (Table.States (768), 192, 953);
-            Add_Goto (Table.States (768), 197, 133);
-            Add_Goto (Table.States (768), 239, 134);
-            Add_Goto (Table.States (768), 258, 135);
-            Add_Goto (Table.States (768), 272, 92);
-            Add_Goto (Table.States (768), 275, 136);
-            Add_Goto (Table.States (768), 282, 137);
-            Add_Goto (Table.States (768), 283, 138);
-            Add_Goto (Table.States (768), 284, 139);
-            Add_Goto (Table.States (768), 285, 140);
-            Add_Goto (Table.States (768), 286, 141);
-            Add_Goto (Table.States (768), 287, 142);
-            Add_Goto (Table.States (768), 293, 97);
-            Add_Goto (Table.States (768), 301, 143);
-            Add_Goto (Table.States (768), 320, 144);
-            Add_Goto (Table.States (768), 321, 145);
-            Add_Goto (Table.States (768), 330, 146);
-            Table.States (768).Kernel := To_Vector ((0 => (277, 76, 1, 
False)));
-            Table.States (768).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (769), 4, 1);
-            Add_Action (Table.States (769), 5, 2);
-            Add_Action (Table.States (769), 13, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (769), 15, 3);
-            Add_Action (Table.States (769), 17, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (769), 18, 4);
-            Add_Action (Table.States (769), 24, Reduce, (300, 1), 0, null, 
null);
-            Add_Action (Table.States (769), 27, 5);
-            Add_Action (Table.States (769), 28, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (769), 31, 9);
-            Add_Action (Table.States (769), 32, 10);
-            Add_Action (Table.States (769), 37, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (769), 41, 13);
-            Add_Action (Table.States (769), 48, 16);
-            Add_Action (Table.States (769), 52, 20);
-            Add_Action (Table.States (769), 57, 21);
-            Add_Action (Table.States (769), 58, 22);
-            Add_Action (Table.States (769), 61, 24);
-            Add_Action (Table.States (769), 72, Reduce, (300, 1), 0, null, 
null);
-            Add_Action (Table.States (769), 73, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (769), 93, 31);
-            Add_Action (Table.States (769), 104, 360);
+            Table.States (768).Kernel := To_Vector ((0 => (117, 77, 0, 
False)));
+            Table.States (768).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 117, 5)));
+            Table.States (769).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (769), 3, 121);
+            Add_Action (Table.States (769), 39, 122);
+            Add_Action (Table.States (769), 40, 123);
+            Add_Action (Table.States (769), 41, 124);
+            Add_Action (Table.States (769), 52, 125);
+            Add_Action (Table.States (769), 76, 126);
+            Add_Action (Table.States (769), 77, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (769), 94, 127);
+            Add_Action (Table.States (769), 95, 128);
+            Add_Action (Table.States (769), 103, 129);
+            Add_Action (Table.States (769), 104, 119);
             Add_Action (Table.States (769), 105, 33);
             Add_Action (Table.States (769), 106, 34);
-            Add_Error (Table.States (769));
-            Add_Goto (Table.States (769), 113, 36);
-            Add_Goto (Table.States (769), 123, 38);
-            Add_Goto (Table.States (769), 126, 39);
+            Table.States (769).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (769), 117, 130);
             Add_Goto (Table.States (769), 128, 41);
-            Add_Goto (Table.States (769), 131, 42);
-            Add_Goto (Table.States (769), 132, 43);
-            Add_Goto (Table.States (769), 133, 44);
-            Add_Goto (Table.States (769), 139, 47);
-            Add_Goto (Table.States (769), 151, 50);
-            Add_Goto (Table.States (769), 152, 51);
-            Add_Goto (Table.States (769), 161, 53);
-            Add_Goto (Table.States (769), 190, 57);
-            Add_Goto (Table.States (769), 196, 59);
-            Add_Goto (Table.States (769), 217, 68);
-            Add_Goto (Table.States (769), 222, 70);
-            Add_Goto (Table.States (769), 232, 72);
-            Add_Goto (Table.States (769), 239, 73);
-            Add_Goto (Table.States (769), 257, 83);
-            Add_Goto (Table.States (769), 261, 86);
+            Add_Goto (Table.States (769), 191, 131);
+            Add_Goto (Table.States (769), 192, 953);
+            Add_Goto (Table.States (769), 197, 133);
+            Add_Goto (Table.States (769), 239, 134);
+            Add_Goto (Table.States (769), 258, 135);
             Add_Goto (Table.States (769), 272, 92);
-            Add_Goto (Table.States (769), 276, 93);
-            Add_Goto (Table.States (769), 290, 96);
+            Add_Goto (Table.States (769), 275, 136);
+            Add_Goto (Table.States (769), 282, 137);
+            Add_Goto (Table.States (769), 283, 138);
+            Add_Goto (Table.States (769), 284, 139);
+            Add_Goto (Table.States (769), 285, 140);
+            Add_Goto (Table.States (769), 286, 141);
+            Add_Goto (Table.States (769), 287, 142);
             Add_Goto (Table.States (769), 293, 97);
-            Add_Goto (Table.States (769), 294, 98);
-            Add_Goto (Table.States (769), 298, 99);
-            Add_Goto (Table.States (769), 299, 361);
-            Add_Goto (Table.States (769), 300, 954);
-            Add_Goto (Table.States (769), 302, 100);
-            Add_Goto (Table.States (769), 303, 101);
-            Add_Goto (Table.States (769), 306, 363);
-            Add_Goto (Table.States (769), 323, 114);
-            Table.States (769).Kernel := To_Vector ((0 => (140, 87, 0, 
False)));
-            Table.States (769).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
-            Add_Action (Table.States (770), 96, 955);
-            Add_Error (Table.States (770));
-            Table.States (770).Kernel := To_Vector ((0 => (139, 15, 1, 
False)));
-            Table.States (770).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 955)));
-            Add_Action (Table.States (771), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (233,
+            Add_Goto (Table.States (769), 301, 143);
+            Add_Goto (Table.States (769), 320, 144);
+            Add_Goto (Table.States (769), 321, 145);
+            Add_Goto (Table.States (769), 330, 146);
+            Table.States (769).Kernel := To_Vector ((0 => (277, 76, 1, 
False)));
+            Table.States (769).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (770).Action_List.Set_Capacity (24);
+            Add_Action (Table.States (770), 4, 1);
+            Add_Action (Table.States (770), 5, 2);
+            Add_Action (Table.States (770), 13, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (770), 15, 3);
+            Add_Action (Table.States (770), 17, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (770), 18, 4);
+            Add_Action (Table.States (770), 24, Reduce, (300, 1), 0, null, 
null);
+            Add_Action (Table.States (770), 27, 5);
+            Add_Action (Table.States (770), 28, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (770), 31, 9);
+            Add_Action (Table.States (770), 32, 10);
+            Add_Action (Table.States (770), 37, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (770), 41, 13);
+            Add_Action (Table.States (770), 48, 16);
+            Add_Action (Table.States (770), 52, 20);
+            Add_Action (Table.States (770), 57, 21);
+            Add_Action (Table.States (770), 58, 22);
+            Add_Action (Table.States (770), 61, 24);
+            Add_Action (Table.States (770), 72, Reduce, (300, 1), 0, null, 
null);
+            Add_Action (Table.States (770), 73, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (770), 93, 31);
+            Add_Action (Table.States (770), 104, 360);
+            Add_Action (Table.States (770), 105, 33);
+            Add_Action (Table.States (770), 106, 34);
+            Table.States (770).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (770), 113, 36);
+            Add_Goto (Table.States (770), 123, 38);
+            Add_Goto (Table.States (770), 126, 39);
+            Add_Goto (Table.States (770), 128, 41);
+            Add_Goto (Table.States (770), 131, 42);
+            Add_Goto (Table.States (770), 132, 43);
+            Add_Goto (Table.States (770), 133, 44);
+            Add_Goto (Table.States (770), 139, 47);
+            Add_Goto (Table.States (770), 151, 50);
+            Add_Goto (Table.States (770), 152, 51);
+            Add_Goto (Table.States (770), 161, 53);
+            Add_Goto (Table.States (770), 190, 57);
+            Add_Goto (Table.States (770), 196, 59);
+            Add_Goto (Table.States (770), 217, 68);
+            Add_Goto (Table.States (770), 222, 70);
+            Add_Goto (Table.States (770), 232, 72);
+            Add_Goto (Table.States (770), 239, 73);
+            Add_Goto (Table.States (770), 257, 83);
+            Add_Goto (Table.States (770), 261, 86);
+            Add_Goto (Table.States (770), 272, 92);
+            Add_Goto (Table.States (770), 276, 93);
+            Add_Goto (Table.States (770), 290, 96);
+            Add_Goto (Table.States (770), 293, 97);
+            Add_Goto (Table.States (770), 294, 98);
+            Add_Goto (Table.States (770), 298, 99);
+            Add_Goto (Table.States (770), 299, 361);
+            Add_Goto (Table.States (770), 300, 954);
+            Add_Goto (Table.States (770), 302, 100);
+            Add_Goto (Table.States (770), 303, 101);
+            Add_Goto (Table.States (770), 306, 363);
+            Add_Goto (Table.States (770), 323, 114);
+            Table.States (770).Kernel := To_Vector ((0 => (140, 87, 0, 
False)));
+            Table.States (770).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (771).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (771), 96, 955);
+            Table.States (771).Kernel := To_Vector ((0 => (139, 15, 1, 
False)));
+            Table.States (771).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 955)));
+            Table.States (772).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (772), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 79, 83, 87, 96), (233,
             0), 3, null, null);
-            Table.States (771).Kernel := To_Vector ((0 => (233, 234, 0, 
True)));
-            Table.States (771).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 233, 3)));
-            Table.States (771).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (772), 10, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (772), 21, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (772), 37, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (772), 42, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (772), 53, 618);
-            Add_Action (Table.States (772), 74, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (772), 76, 619);
-            Add_Action (Table.States (772), 77, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (772), 82, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (772), 83, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (772), 84, 237);
-            Add_Action (Table.States (772), 87, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (772), 96, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (772), 101, 239);
-            Add_Action (Table.States (772), 102, 240);
-            Add_Error (Table.States (772));
-            Add_Goto (Table.States (772), 115, 241);
-            Add_Goto (Table.States (772), 155, 956);
-            Add_Goto (Table.States (772), 224, 621);
-            Add_Goto (Table.States (772), 322, 242);
-            Table.States (772).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
+            Table.States (772).Kernel := To_Vector ((0 => (233, 234, 0, 
True)));
+            Table.States (772).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 233, 3)));
+            Table.States (772).Minimal_Complete_Actions_Recursive := True;
+            Table.States (773).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (773), 10, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (773), 21, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (773), 37, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (773), 42, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (773), 53, 620);
+            Add_Action (Table.States (773), 74, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (773), 76, 621);
+            Add_Action (Table.States (773), 77, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (773), 82, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (773), 83, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (773), 84, 237);
+            Add_Action (Table.States (773), 87, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (773), 96, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (773), 101, 239);
+            Add_Action (Table.States (773), 102, 240);
+            Table.States (773).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (773), 115, 241);
+            Add_Goto (Table.States (773), 155, 956);
+            Add_Goto (Table.States (773), 224, 623);
+            Add_Goto (Table.States (773), 322, 242);
+            Table.States (773).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (272, 239, 3, True), (293, 239, 2, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (314, 239, 4, False), (314, 239, 0, False)));
-            Table.States (772).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 314, 3)));
-            Add_Action (Table.States (773), (10, 21, 37, 42, 74, 77, 82, 83, 
87, 96), (155, 0), 2, null, null);
-            Table.States (773).Kernel := To_Vector ((0 => (155, 277, 0, 
False)));
-            Table.States (773).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 155, 2)));
-            Add_Action (Table.States (774), 39, 122);
-            Add_Action (Table.States (774), 41, 957);
-            Add_Action (Table.States (774), 76, 126);
-            Add_Action (Table.States (774), 103, 129);
-            Add_Action (Table.States (774), 104, 119);
-            Add_Action (Table.States (774), 105, 33);
-            Add_Action (Table.States (774), 106, 34);
-            Add_Error (Table.States (774));
-            Add_Goto (Table.States (774), 117, 130);
-            Add_Goto (Table.States (774), 128, 41);
-            Add_Goto (Table.States (774), 239, 134);
-            Add_Goto (Table.States (774), 258, 256);
-            Add_Goto (Table.States (774), 272, 92);
-            Add_Goto (Table.States (774), 293, 97);
-            Table.States (774).Kernel := To_Vector (((165, 40, 2, False), 
(197, 40, 1, False), (314, 40, 6, False),
+            Table.States (773).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 314, 3)));
+            Table.States (774).Action_List.Set_Capacity (10);
+            Add_Action (Table.States (774), (10, 21, 37, 42, 74, 77, 82, 83, 
87, 96), (155, 0), 2, null, null);
+            Table.States (774).Kernel := To_Vector ((0 => (155, 277, 0, 
False)));
+            Table.States (774).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 155, 2)));
+            Table.States (775).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (775), 39, 122);
+            Add_Action (Table.States (775), 41, 957);
+            Add_Action (Table.States (775), 76, 126);
+            Add_Action (Table.States (775), 103, 129);
+            Add_Action (Table.States (775), 104, 119);
+            Add_Action (Table.States (775), 105, 33);
+            Add_Action (Table.States (775), 106, 34);
+            Table.States (775).Goto_List.Set_Capacity (6);
+            Add_Goto (Table.States (775), 117, 130);
+            Add_Goto (Table.States (775), 128, 41);
+            Add_Goto (Table.States (775), 239, 134);
+            Add_Goto (Table.States (775), 258, 256);
+            Add_Goto (Table.States (775), 272, 92);
+            Add_Goto (Table.States (775), 293, 97);
+            Table.States (775).Kernel := To_Vector (((165, 40, 2, False), 
(197, 40, 1, False), (314, 40, 6, False),
             (314, 40, 2, False)));
-            Table.States (774).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
-            Add_Action (Table.States (775), (77, 83), (168, 1), 1, null, null);
-            Table.States (775).Kernel := To_Vector ((0 => (168, 167, 0, 
False)));
-            Table.States (775).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 168, 1)));
-            Add_Action (Table.States (776), 77, 958);
-            Add_Action (Table.States (776), 83, 959);
-            Add_Error (Table.States (776));
-            Table.States (776).Kernel := To_Vector (((168, 168, 2, True), 
(224, 168, 1, False)));
-            Table.States (776).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 958)));
-            Add_Action (Table.States (777), 77, Reduce, (167, 1), 1, null, 
null);
-            Add_Conflict (Table.States (777), 77, (278, 1), 1, null, null);
-            Add_Action (Table.States (777), 79, Reduce, (165, 2), 1, null, 
null);
-            Add_Action (Table.States (777), 83, Reduce, (167, 1), 1, null, 
null);
-            Add_Conflict (Table.States (777), 83, (278, 1), 1, null, null);
-            Add_Action (Table.States (777), 87, Reduce, (165, 2), 1, null, 
null);
-            Add_Error (Table.States (777));
-            Table.States (777).Kernel := To_Vector (((165, 277, 0, False), 
(167, 277, 0, False), (278, 277, 0,
+            Table.States (775).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (776).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (776), (77, 83), (168, 1), 1, null, null);
+            Table.States (776).Kernel := To_Vector ((0 => (168, 167, 0, 
False)));
+            Table.States (776).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 168, 1)));
+            Table.States (777).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (777), 77, 958);
+            Add_Action (Table.States (777), 83, 959);
+            Table.States (777).Kernel := To_Vector (((168, 168, 2, True), 
(224, 168, 1, False)));
+            Table.States (777).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 958)));
+            Table.States (778).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (778), 77, Reduce, (167, 1), 1, null, 
null);
+            Add_Conflict (Table.States (778), 77, (278, 1), 1, null, null);
+            Add_Action (Table.States (778), 79, Reduce, (165, 2), 1, null, 
null);
+            Add_Action (Table.States (778), 83, Reduce, (167, 1), 1, null, 
null);
+            Add_Conflict (Table.States (778), 83, (278, 1), 1, null, null);
+            Add_Action (Table.States (778), 87, Reduce, (165, 2), 1, null, 
null);
+            Table.States (778).Kernel := To_Vector (((165, 277, 0, False), 
(167, 277, 0, False), (278, 277, 0,
             False)));
-            Table.States (777).Minimal_Complete_Actions := To_Vector 
(((Reduce, 165, 1), (Reduce, 167, 1), (Reduce,
+            Table.States (778).Minimal_Complete_Actions := To_Vector 
(((Reduce, 165, 1), (Reduce, 167, 1), (Reduce,
             278, 1)));
-            Add_Action (Table.States (778), 104, 119);
-            Add_Action (Table.States (778), 105, 33);
-            Add_Action (Table.States (778), 106, 34);
-            Add_Error (Table.States (778));
-            Add_Goto (Table.States (778), 128, 41);
-            Add_Goto (Table.States (778), 239, 960);
-            Add_Goto (Table.States (778), 272, 92);
-            Add_Goto (Table.States (778), 293, 97);
-            Table.States (778).Kernel := To_Vector ((0 => (230, 59, 1, 
False)));
-            Table.States (778).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (779), 37, Reduce, (230, 1), 5, null, 
null);
-            Add_Action (Table.States (779), 76, 235);
-            Add_Action (Table.States (779), 84, 237);
-            Add_Action (Table.States (779), 87, Reduce, (230, 1), 5, null, 
null);
-            Add_Action (Table.States (779), 101, 239);
-            Add_Action (Table.States (779), 102, 240);
-            Add_Error (Table.States (779));
-            Add_Goto (Table.States (779), 115, 241);
-            Add_Goto (Table.States (779), 322, 242);
-            Table.States (779).Kernel := To_Vector (((128, 239, 2, True), 
(230, 239, 0, False), (239, 239, 5, True),
+            Table.States (779).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (779), 104, 119);
+            Add_Action (Table.States (779), 105, 33);
+            Add_Action (Table.States (779), 106, 34);
+            Table.States (779).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (779), 128, 41);
+            Add_Goto (Table.States (779), 239, 960);
+            Add_Goto (Table.States (779), 272, 92);
+            Add_Goto (Table.States (779), 293, 97);
+            Table.States (779).Kernel := To_Vector ((0 => (230, 59, 1, 
False)));
+            Table.States (779).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (780).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (780), 37, Reduce, (230, 1), 5, null, 
null);
+            Add_Action (Table.States (780), 76, 235);
+            Add_Action (Table.States (780), 84, 237);
+            Add_Action (Table.States (780), 87, Reduce, (230, 1), 5, null, 
null);
+            Add_Action (Table.States (780), 101, 239);
+            Add_Action (Table.States (780), 102, 240);
+            Table.States (780).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (780), 115, 241);
+            Add_Goto (Table.States (780), 322, 242);
+            Table.States (780).Kernel := To_Vector (((128, 239, 2, True), 
(230, 239, 0, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (779).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 230, 5)));
-            Add_Action (Table.States (780), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
+            Table.States (780).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 230, 5)));
+            Table.States (781).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (781), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 72, 73, 
74, 93, 104, 105, 106, 107), (127, 0), 6,
             at_clause_0'Access, null);
-            Table.States (780).Kernel := To_Vector ((0 => (127, 96, 0, 
False)));
-            Table.States (780).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 127, 6)));
-            Add_Action (Table.States (781), 3, 121);
-            Add_Action (Table.States (781), 39, 122);
-            Add_Action (Table.States (781), 40, 123);
-            Add_Action (Table.States (781), 41, 124);
-            Add_Action (Table.States (781), 52, 125);
-            Add_Action (Table.States (781), 76, 126);
-            Add_Action (Table.States (781), 94, 127);
-            Add_Action (Table.States (781), 95, 128);
-            Add_Action (Table.States (781), 96, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (781), 103, 129);
-            Add_Action (Table.States (781), 104, 119);
-            Add_Action (Table.States (781), 105, 33);
-            Add_Action (Table.States (781), 106, 34);
-            Add_Error (Table.States (781));
-            Add_Goto (Table.States (781), 117, 130);
-            Add_Goto (Table.States (781), 128, 41);
-            Add_Goto (Table.States (781), 191, 131);
-            Add_Goto (Table.States (781), 192, 961);
-            Add_Goto (Table.States (781), 197, 133);
-            Add_Goto (Table.States (781), 239, 134);
-            Add_Goto (Table.States (781), 258, 135);
-            Add_Goto (Table.States (781), 272, 92);
-            Add_Goto (Table.States (781), 275, 136);
-            Add_Goto (Table.States (781), 282, 137);
-            Add_Goto (Table.States (781), 283, 138);
-            Add_Goto (Table.States (781), 284, 139);
-            Add_Goto (Table.States (781), 285, 140);
-            Add_Goto (Table.States (781), 286, 141);
-            Add_Goto (Table.States (781), 287, 142);
-            Add_Goto (Table.States (781), 293, 97);
-            Add_Goto (Table.States (781), 301, 143);
-            Add_Goto (Table.States (781), 320, 144);
-            Add_Goto (Table.States (781), 321, 145);
-            Add_Goto (Table.States (781), 330, 146);
-            Table.States (781).Kernel := To_Vector ((0 => (235, 38, 1, 
False)));
-            Table.States (781).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (782), 12, 962);
-            Add_Error (Table.States (782));
-            Table.States (782).Kernel := To_Vector ((0 => (144, 104, 7, 
False)));
-            Table.States (782).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 12, 962)));
-            Add_Action (Table.States (783), (24, 104), (145, 1), 1, null, 
null);
-            Table.States (783).Kernel := To_Vector ((0 => (145, 144, 0, 
False)));
-            Table.States (783).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 145, 1)));
-            Add_Action (Table.States (784), 24, 963);
-            Add_Action (Table.States (784), 104, 782);
-            Add_Error (Table.States (784));
-            Add_Goto (Table.States (784), 144, 964);
-            Table.States (784).Kernel := To_Vector (((145, 145, 8, True), 
(281, 145, 3, False)));
-            Table.States (784).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 963)));
-            Add_Action (Table.States (785), 7, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (785), 33, 504);
-            Add_Action (Table.States (785), 40, 386);
-            Add_Conflict (Table.States (785), 40, (236, 3), 0, null, null);
-            Add_Action (Table.States (785), 45, 505);
-            Add_Action (Table.States (785), 104, Reduce, (236, 3), 0, null, 
null);
-            Add_Action (Table.States (785), 105, Reduce, (236, 3), 0, null, 
null);
-            Add_Action (Table.States (785), 106, Reduce, (236, 3), 0, null, 
null);
-            Add_Error (Table.States (785));
-            Add_Goto (Table.States (785), 114, 965);
-            Add_Goto (Table.States (785), 236, 966);
-            Add_Goto (Table.States (785), 241, 721);
-            Table.States (785).Kernel := To_Vector (((254, 118, 2, False), 
(254, 118, 1, False), (254, 118, 3, False),
+            Table.States (781).Kernel := To_Vector ((0 => (127, 96, 0, 
False)));
+            Table.States (781).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 127, 6)));
+            Table.States (782).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (782), 3, 121);
+            Add_Action (Table.States (782), 39, 122);
+            Add_Action (Table.States (782), 40, 123);
+            Add_Action (Table.States (782), 41, 124);
+            Add_Action (Table.States (782), 52, 125);
+            Add_Action (Table.States (782), 76, 126);
+            Add_Action (Table.States (782), 94, 127);
+            Add_Action (Table.States (782), 95, 128);
+            Add_Action (Table.States (782), 96, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (782), 103, 129);
+            Add_Action (Table.States (782), 104, 119);
+            Add_Action (Table.States (782), 105, 33);
+            Add_Action (Table.States (782), 106, 34);
+            Table.States (782).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (782), 117, 130);
+            Add_Goto (Table.States (782), 128, 41);
+            Add_Goto (Table.States (782), 191, 131);
+            Add_Goto (Table.States (782), 192, 961);
+            Add_Goto (Table.States (782), 197, 133);
+            Add_Goto (Table.States (782), 239, 134);
+            Add_Goto (Table.States (782), 258, 135);
+            Add_Goto (Table.States (782), 272, 92);
+            Add_Goto (Table.States (782), 275, 136);
+            Add_Goto (Table.States (782), 282, 137);
+            Add_Goto (Table.States (782), 283, 138);
+            Add_Goto (Table.States (782), 284, 139);
+            Add_Goto (Table.States (782), 285, 140);
+            Add_Goto (Table.States (782), 286, 141);
+            Add_Goto (Table.States (782), 287, 142);
+            Add_Goto (Table.States (782), 293, 97);
+            Add_Goto (Table.States (782), 301, 143);
+            Add_Goto (Table.States (782), 320, 144);
+            Add_Goto (Table.States (782), 321, 145);
+            Add_Goto (Table.States (782), 330, 146);
+            Table.States (782).Kernel := To_Vector ((0 => (235, 38, 1, 
False)));
+            Table.States (782).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (783).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (783), 12, 962);
+            Table.States (783).Kernel := To_Vector ((0 => (144, 104, 7, 
False)));
+            Table.States (783).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 12, 962)));
+            Table.States (784).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (784), (24, 104), (145, 1), 1, null, 
null);
+            Table.States (784).Kernel := To_Vector ((0 => (145, 144, 0, 
False)));
+            Table.States (784).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 145, 1)));
+            Table.States (785).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (785), 24, 963);
+            Add_Action (Table.States (785), 104, 783);
+            Table.States (785).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (785), 144, 964);
+            Table.States (785).Kernel := To_Vector (((145, 145, 8, True), 
(281, 145, 3, False)));
+            Table.States (785).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 963)));
+            Table.States (786).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (786), 7, Reduce, (241, 1), 0, null, 
null);
+            Add_Action (Table.States (786), 33, 504);
+            Add_Action (Table.States (786), 40, 386);
+            Add_Conflict (Table.States (786), 40, (236, 3), 0, null, null);
+            Add_Action (Table.States (786), 45, 505);
+            Add_Action (Table.States (786), 104, Reduce, (236, 3), 0, null, 
null);
+            Add_Action (Table.States (786), 105, Reduce, (236, 3), 0, null, 
null);
+            Add_Action (Table.States (786), 106, Reduce, (236, 3), 0, null, 
null);
+            Table.States (786).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (786), 114, 965);
+            Add_Goto (Table.States (786), 236, 966);
+            Add_Goto (Table.States (786), 241, 723);
+            Table.States (786).Kernel := To_Vector (((254, 118, 2, False), 
(254, 118, 1, False), (254, 118, 3, False),
             (254, 118, 2, False)));
-            Table.States (785).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 236, 0)));
-            Add_Action (Table.States (786), (77, 96), (255, 0), 3, 
parameter_specification_list_0'Access, null);
-            Table.States (786).Kernel := To_Vector ((0 => (255, 254, 0, 
True)));
-            Table.States (786).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 255, 3)));
-            Table.States (786).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (787), 96, 967);
-            Add_Error (Table.States (787));
-            Table.States (787).Kernel := To_Vector ((0 => (215, 122, 1, 
False)));
-            Table.States (787).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 967)));
-            Add_Action (Table.States (788), 96, 968);
-            Add_Error (Table.States (788));
+            Table.States (786).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 236, 0)));
+            Table.States (787).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (787), (77, 96), (255, 0), 3, null, null);
+            Table.States (787).Kernel := To_Vector ((0 => (255, 254, 0, 
True)));
+            Table.States (787).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 255, 3)));
+            Table.States (787).Minimal_Complete_Actions_Recursive := True;
+            Table.States (788).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (788), 96, 967);
             Table.States (788).Kernel := To_Vector ((0 => (215, 122, 1, 
False)));
-            Table.States (788).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 968)));
-            Add_Action (Table.States (789), 96, 969);
-            Add_Error (Table.States (789));
+            Table.States (788).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 967)));
+            Table.States (789).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (789), 96, 968);
             Table.States (789).Kernel := To_Vector ((0 => (215, 122, 1, 
False)));
-            Table.States (789).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 969)));
-            Add_Action (Table.States (790), 36, 970);
-            Add_Action (Table.States (790), 39, Reduce, (109, 2), 1, null, 
null);
-            Add_Action (Table.States (790), 64, 875);
-            Add_Action (Table.States (790), 65, 876);
-            Add_Error (Table.States (790));
-            Table.States (790).Kernel := To_Vector (((109, 6, 1, False), (109, 
6, 1, False), (109, 6, 0, False), (111,
+            Table.States (789).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 968)));
+            Table.States (790).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (790), 96, 969);
+            Table.States (790).Kernel := To_Vector ((0 => (215, 122, 1, 
False)));
+            Table.States (790).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 969)));
+            Table.States (791).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (791), 36, 970);
+            Add_Action (Table.States (791), 39, Reduce, (109, 2), 1, null, 
null);
+            Add_Action (Table.States (791), 64, 876);
+            Add_Action (Table.States (791), 65, 877);
+            Table.States (791).Kernel := To_Vector (((109, 6, 1, False), (109, 
6, 1, False), (109, 6, 0, False), (111,
             6, 2, False), (111, 6, 1, False)));
-            Table.States (790).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 109, 1)));
-            Add_Action (Table.States (791), 80, 971);
-            Add_Error (Table.States (791));
-            Table.States (791).Kernel := To_Vector (((202, 19, 3, False), 
(202, 19, 1, False)));
-            Table.States (791).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 80, 971)));
-            Add_Action (Table.States (792), 80, 972);
-            Add_Error (Table.States (792));
-            Table.States (792).Kernel := To_Vector ((0 => (202, 20, 1, 
False)));
-            Table.States (792).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 80, 972)));
-            Add_Action (Table.States (793), 34, 880);
-            Add_Action (Table.States (793), 39, Reduce, (109, 3), 1, null, 
null);
-            Add_Action (Table.States (793), 49, Reduce, (111, 4), 1, null, 
null);
-            Add_Error (Table.States (793));
-            Table.States (793).Kernel := To_Vector (((109, 36, 0, False), 
(111, 36, 0, False), (228, 36, 3, False),
+            Table.States (791).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 109, 1)));
+            Table.States (792).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (792), 80, 971);
+            Table.States (792).Kernel := To_Vector (((202, 19, 3, False), 
(202, 19, 1, False)));
+            Table.States (792).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 80, 971)));
+            Table.States (793).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (793), 80, 972);
+            Table.States (793).Kernel := To_Vector ((0 => (202, 20, 1, 
False)));
+            Table.States (793).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 80, 972)));
+            Table.States (794).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (794), 34, 881);
+            Add_Action (Table.States (794), 39, Reduce, (109, 3), 1, null, 
null);
+            Add_Action (Table.States (794), 49, Reduce, (111, 4), 1, null, 
null);
+            Table.States (794).Kernel := To_Vector (((109, 36, 0, False), 
(111, 36, 0, False), (228, 36, 3, False),
             (228, 36, 1, False)));
-            Table.States (793).Minimal_Complete_Actions := To_Vector 
(((Reduce, 109, 1), (Reduce, 111, 1)));
-            Add_Action (Table.States (794), 80, 973);
-            Add_Error (Table.States (794));
-            Table.States (794).Kernel := To_Vector ((0 => (202, 38, 1, 
False)));
-            Table.States (794).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 80, 973)));
-            Add_Action (Table.States (795), 80, 974);
-            Add_Error (Table.States (795));
-            Table.States (795).Kernel := To_Vector ((0 => (202, 53, 1, 
False)));
-            Table.States (795).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 80, 974)));
-            Add_Action (Table.States (796), 36, 895);
-            Add_Action (Table.States (796), 49, Reduce, (111, 3), 1, null, 
null);
-            Add_Action (Table.States (796), 74, 337);
-            Add_Action (Table.States (796), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (796));
-            Add_Goto (Table.States (796), 122, 975);
-            Table.States (796).Kernel := To_Vector (((111, 65, 1, False), 
(111, 65, 0, False), (201, 65, 1, False)));
-            Table.States (796).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 111, 1)));
-            Add_Action (Table.States (797), 80, 976);
-            Add_Error (Table.States (797));
-            Table.States (797).Kernel := To_Vector ((0 => (202, 76, 2, 
False)));
-            Table.States (797).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 80, 976)));
-            Add_Action (Table.States (798), 39, 977);
-            Add_Error (Table.States (798));
-            Table.States (798).Kernel := To_Vector (((203, 109, 4, False), 
(203, 109, 2, False)));
-            Table.States (798).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 977)));
-            Add_Action (Table.States (799), 49, 978);
-            Add_Error (Table.States (799));
-            Table.States (799).Kernel := To_Vector ((0 => (202, 111, 1, 
False)));
-            Table.States (799).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 49, 978)));
-            Add_Action (Table.States (800), (74, 96), (202, 9), 1, null, null);
-            Table.States (800).Kernel := To_Vector ((0 => (202, 114, 0, 
False)));
-            Table.States (800).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 1)));
-            Add_Action (Table.States (801), (74, 96), (202, 8), 1, null, null);
-            Table.States (801).Kernel := To_Vector ((0 => (202, 120, 0, 
False)));
+            Table.States (794).Minimal_Complete_Actions := To_Vector 
(((Reduce, 109, 1), (Reduce, 111, 1)));
+            Table.States (795).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (795), 80, 973);
+            Table.States (795).Kernel := To_Vector ((0 => (202, 38, 1, 
False)));
+            Table.States (795).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 80, 973)));
+            Table.States (796).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (796), 80, 974);
+            Table.States (796).Kernel := To_Vector ((0 => (202, 53, 1, 
False)));
+            Table.States (796).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 80, 974)));
+            Table.States (797).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (797), 36, 896);
+            Add_Action (Table.States (797), 49, Reduce, (111, 3), 1, null, 
null);
+            Add_Action (Table.States (797), 74, 337);
+            Add_Action (Table.States (797), 96, Reduce, (122, 1), 0, null, 
null);
+            Table.States (797).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (797), 122, 975);
+            Table.States (797).Kernel := To_Vector (((111, 65, 1, False), 
(111, 65, 0, False), (201, 65, 1, False)));
+            Table.States (797).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 111, 1)));
+            Table.States (798).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (798), 80, 976);
+            Table.States (798).Kernel := To_Vector ((0 => (202, 76, 2, 
False)));
+            Table.States (798).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 80, 976)));
+            Table.States (799).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (799), 39, 977);
+            Table.States (799).Kernel := To_Vector (((203, 109, 4, False), 
(203, 109, 2, False)));
+            Table.States (799).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 977)));
+            Table.States (800).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (800), 49, 978);
+            Table.States (800).Kernel := To_Vector ((0 => (202, 111, 1, 
False)));
+            Table.States (800).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 49, 978)));
+            Table.States (801).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (801), (74, 96), (202, 9), 1, null, null);
+            Table.States (801).Kernel := To_Vector ((0 => (202, 114, 0, 
False)));
             Table.States (801).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 1)));
-            Add_Action (Table.States (802), 74, 337);
-            Add_Action (Table.States (802), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (802));
-            Add_Goto (Table.States (802), 122, 979);
-            Table.States (802).Kernel := To_Vector ((0 => (201, 202, 1, 
False)));
-            Table.States (802).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (803), (74, 96), (202, 1), 1, null, null);
-            Table.States (803).Kernel := To_Vector ((0 => (202, 203, 0, 
False)));
-            Table.States (803).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 1)));
-            Add_Action (Table.States (804), (74, 96), (202, 10), 1, null, 
null);
-            Table.States (804).Kernel := To_Vector ((0 => (202, 228, 0, 
False)));
+            Table.States (802).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (802), (74, 96), (202, 8), 1, null, null);
+            Table.States (802).Kernel := To_Vector ((0 => (202, 120, 0, 
False)));
+            Table.States (802).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 1)));
+            Table.States (803).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (803), 74, 337);
+            Add_Action (Table.States (803), 96, Reduce, (122, 1), 0, null, 
null);
+            Table.States (803).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (803), 122, 979);
+            Table.States (803).Kernel := To_Vector ((0 => (201, 202, 1, 
False)));
+            Table.States (803).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (804).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (804), (74, 96), (202, 1), 1, null, null);
+            Table.States (804).Kernel := To_Vector ((0 => (202, 203, 0, 
False)));
             Table.States (804).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 1)));
-            Add_Action (Table.States (805), (29, 47, 48, 50, 69, 71, 74, 104), 
(201, 2), 5,
+            Table.States (805).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (805), (74, 96), (202, 10), 1, null, 
null);
+            Table.States (805).Kernel := To_Vector ((0 => (202, 228, 0, 
False)));
+            Table.States (805).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 1)));
+            Table.States (806).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (806), (29, 47, 48, 50, 69, 71, 74, 104), 
(201, 2), 5,
             formal_type_declaration_2'Access, null);
-            Table.States (805).Kernel := To_Vector ((0 => (201, 96, 0, 
False)));
-            Table.States (805).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 201, 5)));
-            Add_Action (Table.States (806), 104, 119);
-            Add_Action (Table.States (806), 105, 33);
-            Add_Action (Table.States (806), 106, 34);
-            Add_Error (Table.States (806));
-            Add_Goto (Table.States (806), 128, 41);
-            Add_Goto (Table.States (806), 239, 980);
-            Add_Goto (Table.States (806), 272, 92);
-            Add_Goto (Table.States (806), 293, 97);
-            Table.States (806).Kernel := To_Vector ((0 => (204, 39, 2, 
False)));
-            Table.States (806).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (807), 96, 981);
-            Add_Error (Table.States (807));
-            Table.States (807).Kernel := To_Vector ((0 => (200, 122, 1, 
False)));
-            Table.States (807).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 981)));
-            Add_Action (Table.States (808), 74, 337);
-            Add_Action (Table.States (808), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (808));
-            Add_Goto (Table.States (808), 122, 982);
-            Table.States (808).Kernel := To_Vector ((0 => (200, 310, 1, 
False)));
-            Table.States (808).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (809), 96, 983);
-            Add_Error (Table.States (809));
-            Table.States (809).Kernel := To_Vector ((0 => (200, 122, 1, 
False)));
-            Table.States (809).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 983)));
-            Add_Action (Table.States (810), 3, 121);
-            Add_Action (Table.States (810), 39, 122);
-            Add_Action (Table.States (810), 40, 123);
-            Add_Action (Table.States (810), 41, 124);
-            Add_Action (Table.States (810), 52, 125);
-            Add_Action (Table.States (810), 74, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (810), 76, 126);
-            Add_Action (Table.States (810), 94, 127);
-            Add_Action (Table.States (810), 95, 128);
-            Add_Action (Table.States (810), 96, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (810), 103, 129);
-            Add_Action (Table.States (810), 104, 119);
-            Add_Action (Table.States (810), 105, 33);
-            Add_Action (Table.States (810), 106, 34);
-            Add_Error (Table.States (810));
-            Add_Goto (Table.States (810), 117, 130);
-            Add_Goto (Table.States (810), 128, 41);
-            Add_Goto (Table.States (810), 191, 131);
-            Add_Goto (Table.States (810), 192, 984);
-            Add_Goto (Table.States (810), 197, 133);
-            Add_Goto (Table.States (810), 239, 134);
-            Add_Goto (Table.States (810), 258, 135);
-            Add_Goto (Table.States (810), 272, 92);
-            Add_Goto (Table.States (810), 275, 136);
-            Add_Goto (Table.States (810), 282, 137);
-            Add_Goto (Table.States (810), 283, 138);
-            Add_Goto (Table.States (810), 284, 139);
-            Add_Goto (Table.States (810), 285, 140);
-            Add_Goto (Table.States (810), 286, 141);
-            Add_Goto (Table.States (810), 287, 142);
-            Add_Goto (Table.States (810), 293, 97);
-            Add_Goto (Table.States (810), 301, 143);
-            Add_Goto (Table.States (810), 320, 144);
-            Add_Goto (Table.States (810), 321, 145);
-            Add_Goto (Table.States (810), 330, 146);
-            Table.States (810).Kernel := To_Vector ((0 => (198, 82, 1, 
False)));
-            Table.States (810).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (811), 96, 985);
-            Add_Error (Table.States (811));
-            Table.States (811).Kernel := To_Vector ((0 => (198, 122, 1, 
False)));
-            Table.States (811).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 985)));
-            Add_Action (Table.States (812), 74, 337);
-            Add_Action (Table.States (812), 76, 235);
-            Add_Action (Table.States (812), 82, 986);
-            Add_Action (Table.States (812), 84, 237);
-            Add_Action (Table.States (812), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Action (Table.States (812), 101, 239);
-            Add_Action (Table.States (812), 102, 240);
-            Add_Error (Table.States (812));
-            Add_Goto (Table.States (812), 115, 241);
-            Add_Goto (Table.States (812), 122, 987);
-            Add_Goto (Table.States (812), 322, 242);
-            Table.States (812).Kernel := To_Vector (((128, 239, 2, True), 
(198, 239, 2, False), (198, 239, 1, False),
+            Table.States (806).Kernel := To_Vector ((0 => (201, 96, 0, 
False)));
+            Table.States (806).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 201, 5)));
+            Table.States (807).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (807), 104, 119);
+            Add_Action (Table.States (807), 105, 33);
+            Add_Action (Table.States (807), 106, 34);
+            Table.States (807).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (807), 128, 41);
+            Add_Goto (Table.States (807), 239, 980);
+            Add_Goto (Table.States (807), 272, 92);
+            Add_Goto (Table.States (807), 293, 97);
+            Table.States (807).Kernel := To_Vector ((0 => (204, 39, 2, 
False)));
+            Table.States (807).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (808).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (808), 96, 981);
+            Table.States (808).Kernel := To_Vector ((0 => (200, 122, 1, 
False)));
+            Table.States (808).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 981)));
+            Table.States (809).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (809), 74, 337);
+            Add_Action (Table.States (809), 96, Reduce, (122, 1), 0, null, 
null);
+            Table.States (809).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (809), 122, 982);
+            Table.States (809).Kernel := To_Vector ((0 => (200, 310, 1, 
False)));
+            Table.States (809).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (810).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (810), 96, 983);
+            Table.States (810).Kernel := To_Vector ((0 => (200, 122, 1, 
False)));
+            Table.States (810).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 983)));
+            Table.States (811).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (811), 3, 121);
+            Add_Action (Table.States (811), 39, 122);
+            Add_Action (Table.States (811), 40, 123);
+            Add_Action (Table.States (811), 41, 124);
+            Add_Action (Table.States (811), 52, 125);
+            Add_Action (Table.States (811), 74, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (811), 76, 126);
+            Add_Action (Table.States (811), 94, 127);
+            Add_Action (Table.States (811), 95, 128);
+            Add_Action (Table.States (811), 96, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (811), 103, 129);
+            Add_Action (Table.States (811), 104, 119);
+            Add_Action (Table.States (811), 105, 33);
+            Add_Action (Table.States (811), 106, 34);
+            Table.States (811).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (811), 117, 130);
+            Add_Goto (Table.States (811), 128, 41);
+            Add_Goto (Table.States (811), 191, 131);
+            Add_Goto (Table.States (811), 192, 984);
+            Add_Goto (Table.States (811), 197, 133);
+            Add_Goto (Table.States (811), 239, 134);
+            Add_Goto (Table.States (811), 258, 135);
+            Add_Goto (Table.States (811), 272, 92);
+            Add_Goto (Table.States (811), 275, 136);
+            Add_Goto (Table.States (811), 282, 137);
+            Add_Goto (Table.States (811), 283, 138);
+            Add_Goto (Table.States (811), 284, 139);
+            Add_Goto (Table.States (811), 285, 140);
+            Add_Goto (Table.States (811), 286, 141);
+            Add_Goto (Table.States (811), 287, 142);
+            Add_Goto (Table.States (811), 293, 97);
+            Add_Goto (Table.States (811), 301, 143);
+            Add_Goto (Table.States (811), 320, 144);
+            Add_Goto (Table.States (811), 321, 145);
+            Add_Goto (Table.States (811), 330, 146);
+            Table.States (811).Kernel := To_Vector ((0 => (198, 82, 1, 
False)));
+            Table.States (811).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (812).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (812), 96, 985);
+            Table.States (812).Kernel := To_Vector ((0 => (198, 122, 1, 
False)));
+            Table.States (812).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 985)));
+            Table.States (813).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (813), 74, 337);
+            Add_Action (Table.States (813), 76, 235);
+            Add_Action (Table.States (813), 82, 986);
+            Add_Action (Table.States (813), 84, 237);
+            Add_Action (Table.States (813), 96, Reduce, (122, 1), 0, null, 
null);
+            Add_Action (Table.States (813), 101, 239);
+            Add_Action (Table.States (813), 102, 240);
+            Table.States (813).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (813), 115, 241);
+            Add_Goto (Table.States (813), 122, 987);
+            Add_Goto (Table.States (813), 322, 242);
+            Table.States (813).Kernel := To_Vector (((128, 239, 2, True), 
(198, 239, 2, False), (198, 239, 1, False),
             (239, 239, 5, True), (239, 239, 2, True), (272, 239, 3, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True)));
-            Table.States (812).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (813), 24, 988);
-            Add_Error (Table.States (813));
-            Table.States (813).Kernel := To_Vector ((0 => (222, 300, 3, 
False)));
-            Table.States (813).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 988)));
-            Add_Action (Table.States (814), 68, 989);
-            Add_Error (Table.States (814));
-            Table.States (814).Kernel := To_Vector ((0 => (174, 192, 1, 
False)));
-            Table.States (814).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 989)));
-            Add_Action (Table.States (815), 96, 990);
-            Add_Error (Table.States (815));
-            Table.States (815).Kernel := To_Vector ((0 => (222, 32, 1, 
False)));
-            Table.States (815).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 990)));
-            Add_Action (Table.States (816), 4, 1);
-            Add_Action (Table.States (816), 5, 2);
-            Add_Action (Table.States (816), 13, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (816), 15, 3);
-            Add_Action (Table.States (816), 17, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (816), 18, 4);
-            Add_Action (Table.States (816), 24, Reduce, (300, 1), 0, null, 
null);
-            Add_Action (Table.States (816), 27, 5);
-            Add_Action (Table.States (816), 28, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (816), 31, 9);
-            Add_Action (Table.States (816), 32, 10);
-            Add_Action (Table.States (816), 37, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (816), 41, 13);
-            Add_Action (Table.States (816), 48, 16);
-            Add_Action (Table.States (816), 52, 20);
-            Add_Action (Table.States (816), 57, 21);
-            Add_Action (Table.States (816), 58, 22);
-            Add_Action (Table.States (816), 61, 24);
-            Add_Action (Table.States (816), 73, Reduce, (132, 1), 0, null, 
null);
-            Add_Action (Table.States (816), 93, 31);
-            Add_Action (Table.States (816), 104, 360);
-            Add_Action (Table.States (816), 105, 33);
-            Add_Action (Table.States (816), 106, 34);
-            Add_Error (Table.States (816));
-            Add_Goto (Table.States (816), 113, 36);
-            Add_Goto (Table.States (816), 123, 38);
-            Add_Goto (Table.States (816), 126, 39);
-            Add_Goto (Table.States (816), 128, 41);
-            Add_Goto (Table.States (816), 131, 42);
-            Add_Goto (Table.States (816), 132, 43);
-            Add_Goto (Table.States (816), 133, 44);
-            Add_Goto (Table.States (816), 139, 47);
-            Add_Goto (Table.States (816), 151, 50);
-            Add_Goto (Table.States (816), 152, 51);
-            Add_Goto (Table.States (816), 161, 53);
-            Add_Goto (Table.States (816), 190, 57);
-            Add_Goto (Table.States (816), 196, 59);
-            Add_Goto (Table.States (816), 217, 68);
-            Add_Goto (Table.States (816), 222, 70);
-            Add_Goto (Table.States (816), 232, 72);
-            Add_Goto (Table.States (816), 239, 73);
-            Add_Goto (Table.States (816), 257, 83);
-            Add_Goto (Table.States (816), 261, 86);
-            Add_Goto (Table.States (816), 272, 92);
-            Add_Goto (Table.States (816), 276, 93);
-            Add_Goto (Table.States (816), 290, 96);
-            Add_Goto (Table.States (816), 293, 97);
-            Add_Goto (Table.States (816), 294, 98);
-            Add_Goto (Table.States (816), 298, 99);
-            Add_Goto (Table.States (816), 299, 361);
-            Add_Goto (Table.States (816), 300, 991);
-            Add_Goto (Table.States (816), 302, 100);
-            Add_Goto (Table.States (816), 303, 101);
-            Add_Goto (Table.States (816), 306, 363);
-            Add_Goto (Table.States (816), 323, 114);
-            Table.States (816).Kernel := To_Vector ((0 => (222, 22, 3, 
False)));
-            Table.States (816).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
-            Add_Action (Table.States (817), 32, 992);
-            Add_Error (Table.States (817));
-            Table.States (817).Kernel := To_Vector ((0 => (222, 24, 2, 
False)));
-            Table.States (817).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 32, 992)));
-            Add_Action (Table.States (818), (22, 23, 24), (175, 0), 2, null, 
null);
-            Table.States (818).Kernel := To_Vector ((0 => (175, 174, 0, 
True)));
-            Table.States (818).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 175, 2)));
-            Table.States (818).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (819), 96, 993);
-            Add_Error (Table.States (819));
-            Table.States (819).Kernel := To_Vector ((0 => (248, 122, 1, 
False)));
-            Table.States (819).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 993)));
-            Add_Action (Table.States (820), 13, 994);
-            Add_Action (Table.States (820), 24, 995);
-            Add_Error (Table.States (820));
-            Table.States (820).Kernel := To_Vector (((247, 159, 3, False), 
(247, 159, 2, False)));
-            Table.States (820).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 995)));
+            Table.States (813).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (814).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (814), 24, 988);
+            Table.States (814).Kernel := To_Vector ((0 => (222, 300, 3, 
False)));
+            Table.States (814).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 988)));
+            Table.States (815).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (815), 68, 989);
+            Table.States (815).Kernel := To_Vector ((0 => (174, 192, 1, 
False)));
+            Table.States (815).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 989)));
+            Table.States (816).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (816), 96, 990);
+            Table.States (816).Kernel := To_Vector ((0 => (222, 32, 1, 
False)));
+            Table.States (816).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 990)));
+            Table.States (817).Action_List.Set_Capacity (23);
+            Add_Action (Table.States (817), 4, 1);
+            Add_Action (Table.States (817), 5, 2);
+            Add_Action (Table.States (817), 13, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (817), 15, 3);
+            Add_Action (Table.States (817), 17, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (817), 18, 4);
+            Add_Action (Table.States (817), 24, Reduce, (300, 1), 0, null, 
null);
+            Add_Action (Table.States (817), 27, 5);
+            Add_Action (Table.States (817), 28, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (817), 31, 9);
+            Add_Action (Table.States (817), 32, 10);
+            Add_Action (Table.States (817), 37, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (817), 41, 13);
+            Add_Action (Table.States (817), 48, 16);
+            Add_Action (Table.States (817), 52, 20);
+            Add_Action (Table.States (817), 57, 21);
+            Add_Action (Table.States (817), 58, 22);
+            Add_Action (Table.States (817), 61, 24);
+            Add_Action (Table.States (817), 73, Reduce, (132, 1), 0, null, 
null);
+            Add_Action (Table.States (817), 93, 31);
+            Add_Action (Table.States (817), 104, 360);
+            Add_Action (Table.States (817), 105, 33);
+            Add_Action (Table.States (817), 106, 34);
+            Table.States (817).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (817), 113, 36);
+            Add_Goto (Table.States (817), 123, 38);
+            Add_Goto (Table.States (817), 126, 39);
+            Add_Goto (Table.States (817), 128, 41);
+            Add_Goto (Table.States (817), 131, 42);
+            Add_Goto (Table.States (817), 132, 43);
+            Add_Goto (Table.States (817), 133, 44);
+            Add_Goto (Table.States (817), 139, 47);
+            Add_Goto (Table.States (817), 151, 50);
+            Add_Goto (Table.States (817), 152, 51);
+            Add_Goto (Table.States (817), 161, 53);
+            Add_Goto (Table.States (817), 190, 57);
+            Add_Goto (Table.States (817), 196, 59);
+            Add_Goto (Table.States (817), 217, 68);
+            Add_Goto (Table.States (817), 222, 70);
+            Add_Goto (Table.States (817), 232, 72);
+            Add_Goto (Table.States (817), 239, 73);
+            Add_Goto (Table.States (817), 257, 83);
+            Add_Goto (Table.States (817), 261, 86);
+            Add_Goto (Table.States (817), 272, 92);
+            Add_Goto (Table.States (817), 276, 93);
+            Add_Goto (Table.States (817), 290, 96);
+            Add_Goto (Table.States (817), 293, 97);
+            Add_Goto (Table.States (817), 294, 98);
+            Add_Goto (Table.States (817), 298, 99);
+            Add_Goto (Table.States (817), 299, 361);
+            Add_Goto (Table.States (817), 300, 991);
+            Add_Goto (Table.States (817), 302, 100);
+            Add_Goto (Table.States (817), 303, 101);
+            Add_Goto (Table.States (817), 306, 363);
+            Add_Goto (Table.States (817), 323, 114);
+            Table.States (817).Kernel := To_Vector ((0 => (222, 22, 3, 
False)));
+            Table.States (817).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
          end Subr_14;
          procedure Subr_15
          is begin
-            Add_Action (Table.States (821), 96, 996);
-            Add_Error (Table.States (821));
-            Table.States (821).Kernel := To_Vector ((0 => (213, 122, 1, 
False)));
-            Table.States (821).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 996)));
-            Add_Action (Table.States (822), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
+            Table.States (818).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (818), 32, 992);
+            Table.States (818).Kernel := To_Vector ((0 => (222, 24, 2, 
False)));
+            Table.States (818).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 32, 992)));
+            Table.States (819).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (819), (22, 23, 24), (175, 0), 2, 
elsif_statement_list_0'Access, null);
+            Table.States (819).Kernel := To_Vector ((0 => (175, 174, 0, 
True)));
+            Table.States (819).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 175, 2)));
+            Table.States (819).Minimal_Complete_Actions_Recursive := True;
+            Table.States (820).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (820), 96, 993);
+            Table.States (820).Kernel := To_Vector ((0 => (248, 122, 1, 
False)));
+            Table.States (820).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 993)));
+            Table.States (821).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (821), 13, 994);
+            Add_Action (Table.States (821), 24, 995);
+            Table.States (821).Kernel := To_Vector (((247, 159, 3, False), 
(247, 159, 2, False)));
+            Table.States (821).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 995)));
+            Table.States (822).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (822), 96, 996);
+            Table.States (822).Kernel := To_Vector ((0 => (213, 122, 1, 
False)));
+            Table.States (822).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 996)));
+            Table.States (823).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (823), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (250, 0), 6,
             package_renaming_declaration_0'Access, null);
-            Table.States (822).Kernel := To_Vector ((0 => (250, 96, 0, 
False)));
-            Table.States (822).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 250, 6)));
-            Add_Action (Table.States (823), 96, Reduce, (240, 1), 0, null, 
null);
-            Add_Action (Table.States (823), 104, 119);
-            Add_Action (Table.States (823), 105, 33);
-            Add_Action (Table.States (823), 106, 34);
-            Add_Error (Table.States (823));
-            Add_Goto (Table.States (823), 128, 41);
-            Add_Goto (Table.States (823), 239, 630);
-            Add_Goto (Table.States (823), 240, 997);
-            Add_Goto (Table.States (823), 272, 92);
-            Add_Goto (Table.States (823), 293, 97);
-            Table.States (823).Kernel := To_Vector ((0 => (251, 24, 0, 
False)));
-            Table.States (823).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 0)));
-            Add_Action (Table.States (824), 24, Reduce, (159, 1), 0, null, 
null);
-            Add_Action (Table.States (824), 25, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (824), 28, 183);
-            Add_Action (Table.States (824), 29, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (824), 30, 8);
-            Add_Action (Table.States (824), 40, 12);
-            Add_Action (Table.States (824), 46, 14);
-            Add_Action (Table.States (824), 47, 15);
-            Add_Action (Table.States (824), 48, 16);
-            Add_Action (Table.States (824), 50, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (824), 51, 19);
-            Add_Action (Table.States (824), 63, 25);
-            Add_Action (Table.States (824), 66, 26);
-            Add_Action (Table.States (824), 69, 27);
-            Add_Action (Table.States (824), 71, 28);
-            Add_Action (Table.States (824), 104, 185);
-            Add_Error (Table.States (824));
-            Add_Goto (Table.States (824), 112, 35);
-            Add_Goto (Table.States (824), 121, 37);
-            Add_Goto (Table.States (824), 127, 40);
-            Add_Goto (Table.States (824), 134, 45);
-            Add_Goto (Table.States (824), 135, 46);
-            Add_Goto (Table.States (824), 157, 391);
-            Add_Goto (Table.States (824), 158, 392);
-            Add_Goto (Table.States (824), 159, 998);
-            Add_Goto (Table.States (824), 179, 54);
-            Add_Goto (Table.States (824), 182, 55);
-            Add_Goto (Table.States (824), 186, 56);
-            Add_Goto (Table.States (824), 193, 58);
-            Add_Goto (Table.States (824), 206, 60);
-            Add_Goto (Table.States (824), 207, 61);
-            Add_Goto (Table.States (824), 209, 62);
-            Add_Goto (Table.States (824), 210, 63);
-            Add_Goto (Table.States (824), 213, 64);
-            Add_Goto (Table.States (824), 214, 65);
-            Add_Goto (Table.States (824), 215, 66);
-            Add_Goto (Table.States (824), 216, 67);
-            Add_Goto (Table.States (824), 219, 69);
-            Add_Goto (Table.States (824), 223, 71);
-            Add_Goto (Table.States (824), 243, 74);
-            Add_Goto (Table.States (824), 244, 75);
-            Add_Goto (Table.States (824), 245, 76);
-            Add_Goto (Table.States (824), 246, 77);
-            Add_Goto (Table.States (824), 247, 78);
-            Add_Goto (Table.States (824), 248, 79);
-            Add_Goto (Table.States (824), 249, 80);
-            Add_Goto (Table.States (824), 250, 81);
-            Add_Goto (Table.States (824), 251, 82);
-            Add_Goto (Table.States (824), 257, 394);
-            Add_Goto (Table.States (824), 259, 84);
-            Add_Goto (Table.States (824), 260, 85);
-            Add_Goto (Table.States (824), 262, 87);
-            Add_Goto (Table.States (824), 263, 88);
-            Add_Goto (Table.States (824), 264, 89);
-            Add_Goto (Table.States (824), 265, 90);
-            Add_Goto (Table.States (824), 271, 91);
-            Add_Goto (Table.States (824), 281, 94);
-            Add_Goto (Table.States (824), 289, 95);
-            Add_Goto (Table.States (824), 304, 102);
-            Add_Goto (Table.States (824), 305, 103);
-            Add_Goto (Table.States (824), 307, 105);
-            Add_Goto (Table.States (824), 308, 106);
-            Add_Goto (Table.States (824), 309, 107);
-            Add_Goto (Table.States (824), 311, 108);
-            Add_Goto (Table.States (824), 313, 109);
-            Add_Goto (Table.States (824), 316, 111);
-            Add_Goto (Table.States (824), 317, 112);
-            Add_Goto (Table.States (824), 319, 113);
-            Add_Goto (Table.States (824), 325, 115);
-            Add_Goto (Table.States (824), 331, 116);
-            Table.States (824).Kernel := To_Vector ((0 => (251, 49, 1, 
False)));
-            Table.States (824).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
-            Add_Action (Table.States (825), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
-            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
-            107), (257, 0), 6, pragma_g_0'Access, null);
-            Table.States (825).Kernel := To_Vector ((0 => (257, 96, 0, 
False)));
-            Table.States (825).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 257, 6)));
+            Table.States (823).Kernel := To_Vector ((0 => (250, 96, 0, 
False)));
+            Table.States (823).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 250, 6)));
+            Table.States (824).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (824), 96, Reduce, (240, 1), 0, null, 
null);
+            Add_Action (Table.States (824), 104, 119);
+            Add_Action (Table.States (824), 105, 33);
+            Add_Action (Table.States (824), 106, 34);
+            Table.States (824).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (824), 128, 41);
+            Add_Goto (Table.States (824), 239, 632);
+            Add_Goto (Table.States (824), 240, 997);
+            Add_Goto (Table.States (824), 272, 92);
+            Add_Goto (Table.States (824), 293, 97);
+            Table.States (824).Kernel := To_Vector ((0 => (251, 24, 0, 
False)));
+            Table.States (824).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 0)));
+            Table.States (825).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (825), 24, Reduce, (159, 1), 0, null, 
null);
+            Add_Action (Table.States (825), 25, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (825), 28, 183);
+            Add_Action (Table.States (825), 29, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (825), 30, 8);
+            Add_Action (Table.States (825), 40, 12);
+            Add_Action (Table.States (825), 46, 14);
+            Add_Action (Table.States (825), 47, 15);
+            Add_Action (Table.States (825), 48, 16);
+            Add_Action (Table.States (825), 50, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (825), 51, 19);
+            Add_Action (Table.States (825), 63, 25);
+            Add_Action (Table.States (825), 66, 26);
+            Add_Action (Table.States (825), 69, 27);
+            Add_Action (Table.States (825), 71, 28);
+            Add_Action (Table.States (825), 104, 185);
+            Table.States (825).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (825), 112, 35);
+            Add_Goto (Table.States (825), 121, 37);
+            Add_Goto (Table.States (825), 127, 40);
+            Add_Goto (Table.States (825), 134, 45);
+            Add_Goto (Table.States (825), 135, 46);
+            Add_Goto (Table.States (825), 157, 391);
+            Add_Goto (Table.States (825), 158, 392);
+            Add_Goto (Table.States (825), 159, 998);
+            Add_Goto (Table.States (825), 179, 54);
+            Add_Goto (Table.States (825), 182, 55);
+            Add_Goto (Table.States (825), 186, 56);
+            Add_Goto (Table.States (825), 193, 58);
+            Add_Goto (Table.States (825), 206, 60);
+            Add_Goto (Table.States (825), 207, 61);
+            Add_Goto (Table.States (825), 209, 62);
+            Add_Goto (Table.States (825), 210, 63);
+            Add_Goto (Table.States (825), 213, 64);
+            Add_Goto (Table.States (825), 214, 65);
+            Add_Goto (Table.States (825), 215, 66);
+            Add_Goto (Table.States (825), 216, 67);
+            Add_Goto (Table.States (825), 219, 69);
+            Add_Goto (Table.States (825), 223, 71);
+            Add_Goto (Table.States (825), 243, 74);
+            Add_Goto (Table.States (825), 244, 75);
+            Add_Goto (Table.States (825), 245, 76);
+            Add_Goto (Table.States (825), 246, 77);
+            Add_Goto (Table.States (825), 247, 78);
+            Add_Goto (Table.States (825), 248, 79);
+            Add_Goto (Table.States (825), 249, 80);
+            Add_Goto (Table.States (825), 250, 81);
+            Add_Goto (Table.States (825), 251, 82);
+            Add_Goto (Table.States (825), 257, 394);
+            Add_Goto (Table.States (825), 259, 84);
+            Add_Goto (Table.States (825), 260, 85);
+            Add_Goto (Table.States (825), 262, 87);
+            Add_Goto (Table.States (825), 263, 88);
+            Add_Goto (Table.States (825), 264, 89);
+            Add_Goto (Table.States (825), 265, 90);
+            Add_Goto (Table.States (825), 271, 91);
+            Add_Goto (Table.States (825), 281, 94);
+            Add_Goto (Table.States (825), 289, 95);
+            Add_Goto (Table.States (825), 304, 102);
+            Add_Goto (Table.States (825), 305, 103);
+            Add_Goto (Table.States (825), 307, 105);
+            Add_Goto (Table.States (825), 308, 106);
+            Add_Goto (Table.States (825), 309, 107);
+            Add_Goto (Table.States (825), 311, 108);
+            Add_Goto (Table.States (825), 313, 109);
+            Add_Goto (Table.States (825), 316, 111);
+            Add_Goto (Table.States (825), 317, 112);
+            Add_Goto (Table.States (825), 319, 113);
+            Add_Goto (Table.States (825), 325, 115);
+            Add_Goto (Table.States (825), 331, 116);
+            Table.States (825).Kernel := To_Vector ((0 => (251, 49, 1, 
False)));
+            Table.States (825).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
+            Table.States (826).Action_List.Set_Capacity (46);
             Add_Action (Table.States (826), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
-            107), (257, 1), 6, pragma_g_1'Access, null);
+            107), (257, 0), 6, pragma_g_0'Access, null);
             Table.States (826).Kernel := To_Vector ((0 => (257, 96, 0, 
False)));
             Table.States (826).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 257, 6)));
-            Add_Action (Table.States (827), 96, 999);
-            Add_Error (Table.States (827));
-            Table.States (827).Kernel := To_Vector ((0 => (265, 122, 1, 
False)));
-            Table.States (827).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 999)));
-            Add_Action (Table.States (828), 104, 1000);
-            Add_Error (Table.States (828));
-            Table.States (828).Kernel := To_Vector ((0 => (176, 25, 6, 
False)));
-            Table.States (828).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 1000)));
-            Add_Action (Table.States (829), (24, 25, 28, 29, 40, 46, 50), 
(267, 5), 1, null, null);
-            Table.States (829).Kernel := To_Vector ((0 => (267, 121, 0, 
False)));
-            Table.States (829).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 267, 1)));
-            Add_Action (Table.States (830), (24, 25, 28, 29, 40, 46, 50), 
(267, 2), 1, null, null);
-            Table.States (830).Kernel := To_Vector ((0 => (267, 176, 0, 
False)));
+            Table.States (827).Action_List.Set_Capacity (46);
+            Add_Action (Table.States (827), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
+            107), (257, 1), 6, pragma_g_1'Access, null);
+            Table.States (827).Kernel := To_Vector ((0 => (257, 96, 0, 
False)));
+            Table.States (827).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 257, 6)));
+            Table.States (828).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (828), 96, 999);
+            Table.States (828).Kernel := To_Vector ((0 => (265, 122, 1, 
False)));
+            Table.States (828).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 999)));
+            Table.States (829).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (829), 104, 1000);
+            Table.States (829).Kernel := To_Vector ((0 => (176, 25, 6, 
False)));
+            Table.States (829).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 1000)));
+            Table.States (830).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (830), (24, 25, 28, 29, 40, 46, 50), 
(267, 5), 1, null, null);
+            Table.States (830).Kernel := To_Vector ((0 => (267, 121, 0, 
False)));
             Table.States (830).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 267, 1)));
-            Add_Action (Table.States (831), (24, 25, 28, 29, 40, 46, 50), 
(267, 3), 1, null, null);
-            Table.States (831).Kernel := To_Vector ((0 => (267, 193, 0, 
False)));
+            Table.States (831).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (831), (24, 25, 28, 29, 40, 46, 50), 
(267, 2), 1, null, null);
+            Table.States (831).Kernel := To_Vector ((0 => (267, 176, 0, 
False)));
             Table.States (831).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 267, 1)));
-            Add_Action (Table.States (832), (24, 25, 28, 29, 40, 46, 50), 
(267, 4), 1, null, null);
-            Table.States (832).Kernel := To_Vector ((0 => (267, 243, 0, 
False)));
+            Table.States (832).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (832), (24, 25, 28, 29, 40, 46, 50), 
(267, 3), 1, null, null);
+            Table.States (832).Kernel := To_Vector ((0 => (267, 193, 0, 
False)));
             Table.States (832).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 267, 1)));
-            Add_Action (Table.States (833), 29, 7);
-            Add_Action (Table.States (833), 50, 18);
-            Add_Error (Table.States (833));
-            Add_Goto (Table.States (833), 207, 246);
-            Add_Goto (Table.States (833), 262, 247);
-            Add_Goto (Table.States (833), 312, 1001);
-            Table.States (833).Kernel := To_Vector (((193, 246, 7, False), 
(243, 246, 5, False), (307, 246, 6, False),
+            Table.States (833).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (833), (24, 25, 28, 29, 40, 46, 50), 
(267, 4), 1, null, null);
+            Table.States (833).Kernel := To_Vector ((0 => (267, 243, 0, 
False)));
+            Table.States (833).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 267, 1)));
+            Table.States (834).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (834), 29, 7);
+            Add_Action (Table.States (834), 50, 18);
+            Table.States (834).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (834), 207, 246);
+            Add_Goto (Table.States (834), 262, 247);
+            Add_Goto (Table.States (834), 312, 1001);
+            Table.States (834).Kernel := To_Vector (((193, 246, 7, False), 
(243, 246, 5, False), (307, 246, 6, False),
             (309, 246, 3, False)));
-            Table.States (833).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 50, 18)));
-            Add_Action (Table.States (834), (24, 25, 28, 29, 40, 46, 50), 
(268, 1), 1, null, null);
-            Table.States (834).Kernel := To_Vector ((0 => (268, 267, 0, 
False)));
-            Table.States (834).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 268, 1)));
-            Add_Action (Table.States (835), 24, Reduce, (269, 0), 1, null, 
null);
-            Add_Action (Table.States (835), 25, 828);
-            Add_Action (Table.States (835), 28, 183);
-            Add_Action (Table.States (835), 29, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (835), 40, 12);
-            Add_Action (Table.States (835), 46, 14);
-            Add_Action (Table.States (835), 50, Reduce, (246, 2), 0, null, 
null);
-            Add_Error (Table.States (835));
-            Add_Goto (Table.States (835), 121, 829);
-            Add_Goto (Table.States (835), 127, 40);
-            Add_Goto (Table.States (835), 176, 830);
-            Add_Goto (Table.States (835), 182, 55);
-            Add_Goto (Table.States (835), 193, 831);
-            Add_Goto (Table.States (835), 207, 61);
-            Add_Goto (Table.States (835), 243, 832);
-            Add_Goto (Table.States (835), 246, 833);
-            Add_Goto (Table.States (835), 262, 87);
-            Add_Goto (Table.States (835), 267, 1002);
-            Add_Goto (Table.States (835), 281, 94);
-            Add_Goto (Table.States (835), 307, 837);
-            Add_Goto (Table.States (835), 309, 838);
-            Table.States (835).Kernel := To_Vector (((268, 268, 3, True), 
(269, 268, 0, False)));
-            Table.States (835).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 269, 1)));
-            Add_Action (Table.States (836), 24, 1003);
-            Add_Error (Table.States (836));
-            Table.States (836).Kernel := To_Vector ((0 => (264, 269, 2, 
False)));
-            Table.States (836).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1003)));
-            Add_Action (Table.States (837), (24, 25, 28, 29, 40, 46, 50), 
(267, 1), 1, null, null);
-            Table.States (837).Kernel := To_Vector ((0 => (267, 307, 0, 
False)));
-            Table.States (837).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 267, 1)));
-            Add_Action (Table.States (838), (24, 25, 28, 29, 40, 46, 50), 
(267, 0), 1, null, null);
-            Table.States (838).Kernel := To_Vector ((0 => (267, 309, 0, 
False)));
+            Table.States (834).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 50, 18)));
+            Table.States (835).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (835), (24, 25, 28, 29, 40, 46, 50), 
(268, 1), 1, null, null);
+            Table.States (835).Kernel := To_Vector ((0 => (268, 267, 0, 
False)));
+            Table.States (835).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 268, 1)));
+            Table.States (836).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (836), 24, Reduce, (269, 0), 1, null, 
null);
+            Add_Action (Table.States (836), 25, 829);
+            Add_Action (Table.States (836), 28, 183);
+            Add_Action (Table.States (836), 29, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (836), 40, 12);
+            Add_Action (Table.States (836), 46, 14);
+            Add_Action (Table.States (836), 50, Reduce, (246, 2), 0, null, 
null);
+            Table.States (836).Goto_List.Set_Capacity (13);
+            Add_Goto (Table.States (836), 121, 830);
+            Add_Goto (Table.States (836), 127, 40);
+            Add_Goto (Table.States (836), 176, 831);
+            Add_Goto (Table.States (836), 182, 55);
+            Add_Goto (Table.States (836), 193, 832);
+            Add_Goto (Table.States (836), 207, 61);
+            Add_Goto (Table.States (836), 243, 833);
+            Add_Goto (Table.States (836), 246, 834);
+            Add_Goto (Table.States (836), 262, 87);
+            Add_Goto (Table.States (836), 267, 1002);
+            Add_Goto (Table.States (836), 281, 94);
+            Add_Goto (Table.States (836), 307, 838);
+            Add_Goto (Table.States (836), 309, 839);
+            Table.States (836).Kernel := To_Vector (((268, 268, 3, True), 
(269, 268, 0, False)));
+            Table.States (836).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 269, 1)));
+            Table.States (837).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (837), 24, 1003);
+            Table.States (837).Kernel := To_Vector ((0 => (264, 269, 2, 
False)));
+            Table.States (837).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1003)));
+            Table.States (838).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (838), (24, 25, 28, 29, 40, 46, 50), 
(267, 1), 1, null, null);
+            Table.States (838).Kernel := To_Vector ((0 => (267, 307, 0, 
False)));
             Table.States (838).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 267, 1)));
-            Add_Action (Table.States (839), 24, Reduce, (159, 1), 0, null, 
null);
-            Add_Action (Table.States (839), 25, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (839), 28, 183);
-            Add_Action (Table.States (839), 29, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (839), 30, 8);
-            Add_Action (Table.States (839), 39, 1004);
-            Add_Action (Table.States (839), 40, 12);
-            Add_Action (Table.States (839), 46, 14);
-            Add_Action (Table.States (839), 47, 15);
-            Add_Action (Table.States (839), 48, 16);
-            Add_Action (Table.States (839), 49, Reduce, (159, 1), 0, null, 
null);
-            Add_Action (Table.States (839), 50, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (839), 51, 19);
-            Add_Action (Table.States (839), 63, 25);
-            Add_Action (Table.States (839), 66, 26);
-            Add_Action (Table.States (839), 69, 27);
-            Add_Action (Table.States (839), 71, 28);
-            Add_Action (Table.States (839), 104, 185);
-            Add_Error (Table.States (839));
-            Add_Goto (Table.States (839), 112, 35);
-            Add_Goto (Table.States (839), 121, 37);
-            Add_Goto (Table.States (839), 127, 40);
-            Add_Goto (Table.States (839), 134, 45);
-            Add_Goto (Table.States (839), 135, 46);
-            Add_Goto (Table.States (839), 157, 391);
-            Add_Goto (Table.States (839), 158, 392);
-            Add_Goto (Table.States (839), 159, 667);
-            Add_Goto (Table.States (839), 179, 54);
-            Add_Goto (Table.States (839), 182, 55);
-            Add_Goto (Table.States (839), 186, 56);
-            Add_Goto (Table.States (839), 193, 58);
-            Add_Goto (Table.States (839), 206, 60);
-            Add_Goto (Table.States (839), 207, 61);
-            Add_Goto (Table.States (839), 209, 62);
-            Add_Goto (Table.States (839), 210, 63);
-            Add_Goto (Table.States (839), 213, 64);
-            Add_Goto (Table.States (839), 214, 65);
-            Add_Goto (Table.States (839), 215, 66);
-            Add_Goto (Table.States (839), 216, 67);
-            Add_Goto (Table.States (839), 219, 69);
-            Add_Goto (Table.States (839), 223, 71);
-            Add_Goto (Table.States (839), 243, 74);
-            Add_Goto (Table.States (839), 244, 75);
-            Add_Goto (Table.States (839), 245, 76);
-            Add_Goto (Table.States (839), 246, 77);
-            Add_Goto (Table.States (839), 247, 78);
-            Add_Goto (Table.States (839), 248, 79);
-            Add_Goto (Table.States (839), 249, 80);
-            Add_Goto (Table.States (839), 250, 81);
-            Add_Goto (Table.States (839), 251, 82);
-            Add_Goto (Table.States (839), 257, 394);
-            Add_Goto (Table.States (839), 259, 84);
-            Add_Goto (Table.States (839), 260, 85);
-            Add_Goto (Table.States (839), 262, 87);
-            Add_Goto (Table.States (839), 263, 88);
-            Add_Goto (Table.States (839), 264, 89);
-            Add_Goto (Table.States (839), 265, 90);
-            Add_Goto (Table.States (839), 266, 1005);
-            Add_Goto (Table.States (839), 271, 91);
-            Add_Goto (Table.States (839), 281, 94);
-            Add_Goto (Table.States (839), 289, 95);
-            Add_Goto (Table.States (839), 304, 102);
-            Add_Goto (Table.States (839), 305, 103);
-            Add_Goto (Table.States (839), 307, 105);
-            Add_Goto (Table.States (839), 308, 106);
-            Add_Goto (Table.States (839), 309, 107);
-            Add_Goto (Table.States (839), 311, 108);
-            Add_Goto (Table.States (839), 313, 109);
-            Add_Goto (Table.States (839), 316, 111);
-            Add_Goto (Table.States (839), 317, 112);
-            Add_Goto (Table.States (839), 319, 113);
-            Add_Goto (Table.States (839), 325, 115);
-            Add_Goto (Table.States (839), 331, 116);
-            Table.States (839).Kernel := To_Vector (((271, 35, 5, False), 
(271, 35, 2, False)));
-            Table.States (839).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
-            Add_Action (Table.States (840), 10, 1006);
-            Add_Action (Table.States (840), 74, 1007);
-            Add_Error (Table.States (840));
-            Table.States (840).Kernel := To_Vector (((227, 227, 2, True), 
(304, 227, 3, False)));
-            Table.States (840).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1007)));
-            Add_Action (Table.States (841), 10, Reduce, (227, 1), 1, 
interface_list_1'Access, null);
-            Add_Action (Table.States (841), 74, Reduce, (227, 1), 1, 
interface_list_1'Access, null);
-            Add_Action (Table.States (841), 76, 235);
-            Add_Action (Table.States (841), 84, 237);
-            Add_Action (Table.States (841), 96, Reduce, (227, 1), 1, 
interface_list_1'Access, null);
-            Add_Action (Table.States (841), 101, 239);
-            Add_Action (Table.States (841), 102, 240);
-            Add_Error (Table.States (841));
-            Add_Goto (Table.States (841), 115, 241);
-            Add_Goto (Table.States (841), 322, 242);
-            Table.States (841).Kernel := To_Vector (((128, 239, 2, True), 
(227, 239, 0, False), (239, 239, 5, True),
+            Table.States (839).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (839), (24, 25, 28, 29, 40, 46, 50), 
(267, 0), 1, null, null);
+            Table.States (839).Kernel := To_Vector ((0 => (267, 309, 0, 
False)));
+            Table.States (839).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 267, 1)));
+            Table.States (840).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (840), 24, Reduce, (159, 1), 0, null, 
null);
+            Add_Action (Table.States (840), 25, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (840), 28, 183);
+            Add_Action (Table.States (840), 29, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (840), 30, 8);
+            Add_Action (Table.States (840), 39, 1004);
+            Add_Action (Table.States (840), 40, 12);
+            Add_Action (Table.States (840), 46, 14);
+            Add_Action (Table.States (840), 47, 15);
+            Add_Action (Table.States (840), 48, 16);
+            Add_Action (Table.States (840), 49, Reduce, (159, 1), 0, null, 
null);
+            Add_Action (Table.States (840), 50, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (840), 51, 19);
+            Add_Action (Table.States (840), 63, 25);
+            Add_Action (Table.States (840), 66, 26);
+            Add_Action (Table.States (840), 69, 27);
+            Add_Action (Table.States (840), 71, 28);
+            Add_Action (Table.States (840), 104, 185);
+            Table.States (840).Goto_List.Set_Capacity (54);
+            Add_Goto (Table.States (840), 112, 35);
+            Add_Goto (Table.States (840), 121, 37);
+            Add_Goto (Table.States (840), 127, 40);
+            Add_Goto (Table.States (840), 134, 45);
+            Add_Goto (Table.States (840), 135, 46);
+            Add_Goto (Table.States (840), 157, 391);
+            Add_Goto (Table.States (840), 158, 392);
+            Add_Goto (Table.States (840), 159, 669);
+            Add_Goto (Table.States (840), 179, 54);
+            Add_Goto (Table.States (840), 182, 55);
+            Add_Goto (Table.States (840), 186, 56);
+            Add_Goto (Table.States (840), 193, 58);
+            Add_Goto (Table.States (840), 206, 60);
+            Add_Goto (Table.States (840), 207, 61);
+            Add_Goto (Table.States (840), 209, 62);
+            Add_Goto (Table.States (840), 210, 63);
+            Add_Goto (Table.States (840), 213, 64);
+            Add_Goto (Table.States (840), 214, 65);
+            Add_Goto (Table.States (840), 215, 66);
+            Add_Goto (Table.States (840), 216, 67);
+            Add_Goto (Table.States (840), 219, 69);
+            Add_Goto (Table.States (840), 223, 71);
+            Add_Goto (Table.States (840), 243, 74);
+            Add_Goto (Table.States (840), 244, 75);
+            Add_Goto (Table.States (840), 245, 76);
+            Add_Goto (Table.States (840), 246, 77);
+            Add_Goto (Table.States (840), 247, 78);
+            Add_Goto (Table.States (840), 248, 79);
+            Add_Goto (Table.States (840), 249, 80);
+            Add_Goto (Table.States (840), 250, 81);
+            Add_Goto (Table.States (840), 251, 82);
+            Add_Goto (Table.States (840), 257, 394);
+            Add_Goto (Table.States (840), 259, 84);
+            Add_Goto (Table.States (840), 260, 85);
+            Add_Goto (Table.States (840), 262, 87);
+            Add_Goto (Table.States (840), 263, 88);
+            Add_Goto (Table.States (840), 264, 89);
+            Add_Goto (Table.States (840), 265, 90);
+            Add_Goto (Table.States (840), 266, 1005);
+            Add_Goto (Table.States (840), 271, 91);
+            Add_Goto (Table.States (840), 281, 94);
+            Add_Goto (Table.States (840), 289, 95);
+            Add_Goto (Table.States (840), 304, 102);
+            Add_Goto (Table.States (840), 305, 103);
+            Add_Goto (Table.States (840), 307, 105);
+            Add_Goto (Table.States (840), 308, 106);
+            Add_Goto (Table.States (840), 309, 107);
+            Add_Goto (Table.States (840), 311, 108);
+            Add_Goto (Table.States (840), 313, 109);
+            Add_Goto (Table.States (840), 316, 111);
+            Add_Goto (Table.States (840), 317, 112);
+            Add_Goto (Table.States (840), 319, 113);
+            Add_Goto (Table.States (840), 325, 115);
+            Add_Goto (Table.States (840), 331, 116);
+            Table.States (840).Kernel := To_Vector (((271, 35, 5, False), 
(271, 35, 2, False)));
+            Table.States (840).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
+            Table.States (841).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (841), 10, 1006);
+            Add_Action (Table.States (841), 74, 1007);
+            Table.States (841).Kernel := To_Vector (((227, 227, 2, True), 
(304, 227, 3, False)));
+            Table.States (841).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1007)));
+            Table.States (842).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (842), 10, Reduce, (227, 1), 1, 
interface_list_1'Access, null);
+            Add_Action (Table.States (842), 74, Reduce, (227, 1), 1, 
interface_list_1'Access, null);
+            Add_Action (Table.States (842), 76, 235);
+            Add_Action (Table.States (842), 84, 237);
+            Add_Action (Table.States (842), 96, Reduce, (227, 1), 1, 
interface_list_1'Access, null);
+            Add_Action (Table.States (842), 101, 239);
+            Add_Action (Table.States (842), 102, 240);
+            Table.States (842).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (842), 115, 241);
+            Add_Goto (Table.States (842), 322, 242);
+            Table.States (842).Kernel := To_Vector (((128, 239, 2, True), 
(227, 239, 0, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (841).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 227, 1)));
-            Add_Action (Table.States (842), 96, Reduce, (220, 1), 0, null, 
null);
-            Add_Action (Table.States (842), 104, 149);
-            Add_Error (Table.States (842));
-            Add_Goto (Table.States (842), 220, 1008);
-            Table.States (842).Kernel := To_Vector ((0 => (266, 24, 0, 
False)));
-            Table.States (842).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
-            Add_Action (Table.States (843), 24, Reduce, (159, 1), 0, null, 
null);
-            Add_Action (Table.States (843), 25, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (843), 28, 183);
-            Add_Action (Table.States (843), 29, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (843), 30, 8);
-            Add_Action (Table.States (843), 40, 12);
-            Add_Action (Table.States (843), 46, 14);
-            Add_Action (Table.States (843), 47, 15);
-            Add_Action (Table.States (843), 48, 16);
-            Add_Action (Table.States (843), 50, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (843), 51, 19);
-            Add_Action (Table.States (843), 63, 25);
-            Add_Action (Table.States (843), 66, 26);
-            Add_Action (Table.States (843), 69, 27);
-            Add_Action (Table.States (843), 71, 28);
-            Add_Action (Table.States (843), 104, 185);
-            Add_Error (Table.States (843));
-            Add_Goto (Table.States (843), 112, 35);
-            Add_Goto (Table.States (843), 121, 37);
-            Add_Goto (Table.States (843), 127, 40);
-            Add_Goto (Table.States (843), 134, 45);
-            Add_Goto (Table.States (843), 135, 46);
-            Add_Goto (Table.States (843), 157, 391);
-            Add_Goto (Table.States (843), 158, 392);
-            Add_Goto (Table.States (843), 159, 1009);
-            Add_Goto (Table.States (843), 179, 54);
-            Add_Goto (Table.States (843), 182, 55);
-            Add_Goto (Table.States (843), 186, 56);
-            Add_Goto (Table.States (843), 193, 58);
-            Add_Goto (Table.States (843), 206, 60);
-            Add_Goto (Table.States (843), 207, 61);
-            Add_Goto (Table.States (843), 209, 62);
-            Add_Goto (Table.States (843), 210, 63);
-            Add_Goto (Table.States (843), 213, 64);
-            Add_Goto (Table.States (843), 214, 65);
-            Add_Goto (Table.States (843), 215, 66);
-            Add_Goto (Table.States (843), 216, 67);
-            Add_Goto (Table.States (843), 219, 69);
-            Add_Goto (Table.States (843), 223, 71);
-            Add_Goto (Table.States (843), 243, 74);
-            Add_Goto (Table.States (843), 244, 75);
-            Add_Goto (Table.States (843), 245, 76);
-            Add_Goto (Table.States (843), 246, 77);
-            Add_Goto (Table.States (843), 247, 78);
-            Add_Goto (Table.States (843), 248, 79);
-            Add_Goto (Table.States (843), 249, 80);
-            Add_Goto (Table.States (843), 250, 81);
-            Add_Goto (Table.States (843), 251, 82);
-            Add_Goto (Table.States (843), 257, 394);
-            Add_Goto (Table.States (843), 259, 84);
-            Add_Goto (Table.States (843), 260, 85);
-            Add_Goto (Table.States (843), 262, 87);
-            Add_Goto (Table.States (843), 263, 88);
-            Add_Goto (Table.States (843), 264, 89);
-            Add_Goto (Table.States (843), 265, 90);
-            Add_Goto (Table.States (843), 271, 91);
-            Add_Goto (Table.States (843), 281, 94);
-            Add_Goto (Table.States (843), 289, 95);
-            Add_Goto (Table.States (843), 304, 102);
-            Add_Goto (Table.States (843), 305, 103);
-            Add_Goto (Table.States (843), 307, 105);
-            Add_Goto (Table.States (843), 308, 106);
-            Add_Goto (Table.States (843), 309, 107);
-            Add_Goto (Table.States (843), 311, 108);
-            Add_Goto (Table.States (843), 313, 109);
-            Add_Goto (Table.States (843), 316, 111);
-            Add_Goto (Table.States (843), 317, 112);
-            Add_Goto (Table.States (843), 319, 113);
-            Add_Goto (Table.States (843), 325, 115);
-            Add_Goto (Table.States (843), 331, 116);
-            Table.States (843).Kernel := To_Vector ((0 => (266, 49, 1, 
False)));
-            Table.States (843).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
-            Add_Action (Table.States (844), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
+            Table.States (842).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 227, 1)));
+            Table.States (843).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (843), 96, Reduce, (220, 1), 0, null, 
null);
+            Add_Action (Table.States (843), 104, 149);
+            Table.States (843).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (843), 220, 1008);
+            Table.States (843).Kernel := To_Vector ((0 => (266, 24, 0, 
False)));
+            Table.States (843).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (844).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (844), 24, Reduce, (159, 1), 0, null, 
null);
+            Add_Action (Table.States (844), 25, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (844), 28, 183);
+            Add_Action (Table.States (844), 29, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (844), 30, 8);
+            Add_Action (Table.States (844), 40, 12);
+            Add_Action (Table.States (844), 46, 14);
+            Add_Action (Table.States (844), 47, 15);
+            Add_Action (Table.States (844), 48, 16);
+            Add_Action (Table.States (844), 50, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (844), 51, 19);
+            Add_Action (Table.States (844), 63, 25);
+            Add_Action (Table.States (844), 66, 26);
+            Add_Action (Table.States (844), 69, 27);
+            Add_Action (Table.States (844), 71, 28);
+            Add_Action (Table.States (844), 104, 185);
+            Table.States (844).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (844), 112, 35);
+            Add_Goto (Table.States (844), 121, 37);
+            Add_Goto (Table.States (844), 127, 40);
+            Add_Goto (Table.States (844), 134, 45);
+            Add_Goto (Table.States (844), 135, 46);
+            Add_Goto (Table.States (844), 157, 391);
+            Add_Goto (Table.States (844), 158, 392);
+            Add_Goto (Table.States (844), 159, 1009);
+            Add_Goto (Table.States (844), 179, 54);
+            Add_Goto (Table.States (844), 182, 55);
+            Add_Goto (Table.States (844), 186, 56);
+            Add_Goto (Table.States (844), 193, 58);
+            Add_Goto (Table.States (844), 206, 60);
+            Add_Goto (Table.States (844), 207, 61);
+            Add_Goto (Table.States (844), 209, 62);
+            Add_Goto (Table.States (844), 210, 63);
+            Add_Goto (Table.States (844), 213, 64);
+            Add_Goto (Table.States (844), 214, 65);
+            Add_Goto (Table.States (844), 215, 66);
+            Add_Goto (Table.States (844), 216, 67);
+            Add_Goto (Table.States (844), 219, 69);
+            Add_Goto (Table.States (844), 223, 71);
+            Add_Goto (Table.States (844), 243, 74);
+            Add_Goto (Table.States (844), 244, 75);
+            Add_Goto (Table.States (844), 245, 76);
+            Add_Goto (Table.States (844), 246, 77);
+            Add_Goto (Table.States (844), 247, 78);
+            Add_Goto (Table.States (844), 248, 79);
+            Add_Goto (Table.States (844), 249, 80);
+            Add_Goto (Table.States (844), 250, 81);
+            Add_Goto (Table.States (844), 251, 82);
+            Add_Goto (Table.States (844), 257, 394);
+            Add_Goto (Table.States (844), 259, 84);
+            Add_Goto (Table.States (844), 260, 85);
+            Add_Goto (Table.States (844), 262, 87);
+            Add_Goto (Table.States (844), 263, 88);
+            Add_Goto (Table.States (844), 264, 89);
+            Add_Goto (Table.States (844), 265, 90);
+            Add_Goto (Table.States (844), 271, 91);
+            Add_Goto (Table.States (844), 281, 94);
+            Add_Goto (Table.States (844), 289, 95);
+            Add_Goto (Table.States (844), 304, 102);
+            Add_Goto (Table.States (844), 305, 103);
+            Add_Goto (Table.States (844), 307, 105);
+            Add_Goto (Table.States (844), 308, 106);
+            Add_Goto (Table.States (844), 309, 107);
+            Add_Goto (Table.States (844), 311, 108);
+            Add_Goto (Table.States (844), 313, 109);
+            Add_Goto (Table.States (844), 316, 111);
+            Add_Goto (Table.States (844), 317, 112);
+            Add_Goto (Table.States (844), 319, 113);
+            Add_Goto (Table.States (844), 325, 115);
+            Add_Goto (Table.States (844), 331, 116);
+            Table.States (844).Kernel := To_Vector ((0 => (266, 49, 1, 
False)));
+            Table.States (844).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
+            Table.States (845).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (845), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (304, 1), 6,
             single_protected_declaration_1'Access, 
single_protected_declaration_1_check'Access);
-            Table.States (844).Kernel := To_Vector ((0 => (304, 96, 0, 
False)));
-            Table.States (844).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 6)));
-            Add_Action (Table.States (845), (21, 82, 96), (292, 1), 1, null, 
null);
-            Table.States (845).Kernel := To_Vector ((0 => (292, 114, 0, 
False)));
-            Table.States (845).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 292, 1)));
-            Add_Action (Table.States (846), 21, Reduce, (194, 1), 5, 
extended_return_object_declaration_1'Access,
+            Table.States (845).Kernel := To_Vector ((0 => (304, 96, 0, 
False)));
+            Table.States (845).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 6)));
+            Table.States (846).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (846), (21, 82, 96), (292, 1), 1, null, 
null);
+            Table.States (846).Kernel := To_Vector ((0 => (292, 114, 0, 
False)));
+            Table.States (846).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 292, 1)));
+            Table.States (847).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (847), 21, Reduce, (194, 1), 5, 
extended_return_object_declaration_1'Access,
             null);
-            Add_Action (Table.States (846), 82, 1010);
-            Add_Action (Table.States (846), 96, Reduce, (194, 1), 5, 
extended_return_object_declaration_1'Access,
+            Add_Action (Table.States (847), 82, 1010);
+            Add_Action (Table.States (847), 96, Reduce, (194, 1), 5, 
extended_return_object_declaration_1'Access,
             null);
-            Add_Error (Table.States (846));
-            Table.States (846).Kernel := To_Vector (((194, 292, 1, False), 
(194, 292, 0, False)));
-            Table.States (846).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 194, 5)));
-            Add_Action (Table.States (847), (21, 82, 96), (292, 0), 1, null, 
null);
-            Table.States (847).Kernel := To_Vector ((0 => (292, 314, 0, 
False)));
-            Table.States (847).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 292, 1)));
-            Add_Action (Table.States (848), 96, 1011);
-            Add_Error (Table.States (848));
-            Table.States (848).Kernel := To_Vector ((0 => (196, 58, 1, 
False)));
-            Table.States (848).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1011)));
-            Add_Action (Table.States (849), 104, 119);
-            Add_Action (Table.States (849), 105, 33);
-            Add_Action (Table.States (849), 106, 34);
-            Add_Error (Table.States (849));
-            Add_Goto (Table.States (849), 128, 41);
-            Add_Goto (Table.States (849), 239, 1012);
-            Add_Goto (Table.States (849), 272, 92);
-            Add_Goto (Table.States (849), 293, 97);
-            Table.States (849).Kernel := To_Vector (((247, 14, 5, False), 
(247, 14, 4, False)));
-            Table.States (849).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (850), 104, 1013);
-            Add_Error (Table.States (850));
-            Table.States (850).Kernel := To_Vector ((0 => (264, 14, 4, 
False)));
-            Table.States (850).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 1013)));
-            Add_Action (Table.States (851), 104, 1014);
-            Add_Error (Table.States (851));
-            Table.States (851).Kernel := To_Vector ((0 => (316, 14, 5, 
False)));
-            Table.States (851).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 1014)));
-            Add_Action (Table.States (852), 35, Reduce, (122, 1), 0, null, 
null);
-            Add_Action (Table.States (852), 74, 337);
-            Add_Error (Table.States (852));
-            Add_Goto (Table.States (852), 122, 1015);
-            Table.States (852).Kernel := To_Vector ((0 => (307, 312, 4, 
False)));
-            Table.States (852).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (853), (22, 24, 43), (295, 1), 5, 
select_alternative_1'Access, null);
-            Table.States (853).Kernel := To_Vector ((0 => (295, 96, 0, 
False)));
-            Table.States (853).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 295, 5)));
-            Add_Action (Table.States (854), (22, 24, 43), (295, 0), 5, 
select_alternative_0'Access, null);
-            Table.States (854).Kernel := To_Vector ((0 => (295, 300, 0, 
False)));
+            Table.States (847).Kernel := To_Vector (((194, 292, 1, False), 
(194, 292, 0, False)));
+            Table.States (847).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 194, 5)));
+            Table.States (848).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (848), (21, 82, 96), (292, 0), 1, null, 
null);
+            Table.States (848).Kernel := To_Vector ((0 => (292, 314, 0, 
False)));
+            Table.States (848).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 292, 1)));
+            Table.States (849).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (849), 96, 1011);
+            Table.States (849).Kernel := To_Vector ((0 => (196, 58, 1, 
False)));
+            Table.States (849).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1011)));
+            Table.States (850).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (850), 104, 119);
+            Add_Action (Table.States (850), 105, 33);
+            Add_Action (Table.States (850), 106, 34);
+            Table.States (850).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (850), 128, 41);
+            Add_Goto (Table.States (850), 239, 1012);
+            Add_Goto (Table.States (850), 272, 92);
+            Add_Goto (Table.States (850), 293, 97);
+            Table.States (850).Kernel := To_Vector (((247, 14, 5, False), 
(247, 14, 4, False)));
+            Table.States (850).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (851).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (851), 104, 1013);
+            Table.States (851).Kernel := To_Vector ((0 => (264, 14, 4, 
False)));
+            Table.States (851).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 1013)));
+            Table.States (852).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (852), 104, 1014);
+            Table.States (852).Kernel := To_Vector ((0 => (316, 14, 5, 
False)));
+            Table.States (852).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 1014)));
+            Table.States (853).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (853), 35, Reduce, (122, 1), 0, null, 
null);
+            Add_Action (Table.States (853), 74, 337);
+            Table.States (853).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (853), 122, 1015);
+            Table.States (853).Kernel := To_Vector ((0 => (307, 312, 4, 
False)));
+            Table.States (853).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (854).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (854), (22, 24, 43), (295, 1), 5, 
select_alternative_1'Access, null);
+            Table.States (854).Kernel := To_Vector ((0 => (295, 96, 0, 
False)));
             Table.States (854).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 295, 5)));
-            Add_Action (Table.States (855), 96, 1016);
-            Add_Error (Table.States (855));
-            Table.States (855).Kernel := To_Vector ((0 => (152, 61, 1, 
False)));
-            Table.States (855).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1016)));
-            Add_Action (Table.States (856), 96, 1017);
-            Add_Error (Table.States (856));
-            Table.States (856).Kernel := To_Vector ((0 => (323, 61, 1, 
False)));
-            Table.States (856).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1017)));
-            Add_Action (Table.States (857), 96, 1018);
-            Add_Error (Table.States (857));
-            Table.States (857).Kernel := To_Vector ((0 => (294, 61, 1, 
False)));
-            Table.States (857).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1018)));
-            Add_Action (Table.States (858), 61, 1019);
-            Add_Error (Table.States (858));
-            Table.States (858).Kernel := To_Vector ((0 => (126, 24, 2, 
False)));
-            Table.States (858).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 61, 1019)));
-            Add_Action (Table.States (859), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
+            Table.States (855).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (855), (22, 24, 43), (295, 0), 5, 
select_alternative_0'Access, null);
+            Table.States (855).Kernel := To_Vector ((0 => (295, 300, 0, 
False)));
+            Table.States (855).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 295, 5)));
+            Table.States (856).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (856), 96, 1016);
+            Table.States (856).Kernel := To_Vector ((0 => (152, 61, 1, 
False)));
+            Table.States (856).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1016)));
+            Table.States (857).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (857), 96, 1017);
+            Table.States (857).Kernel := To_Vector ((0 => (323, 61, 1, 
False)));
+            Table.States (857).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1017)));
+            Table.States (858).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (858), 96, 1018);
+            Table.States (858).Kernel := To_Vector ((0 => (294, 61, 1, 
False)));
+            Table.States (858).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1018)));
+            Table.States (859).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (859), 61, 1019);
+            Table.States (859).Kernel := To_Vector ((0 => (126, 24, 2, 
False)));
+            Table.States (859).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 61, 1019)));
+            Table.States (860).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (860), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (313, 0), 6,
             subtype_declaration_0'Access, null);
-            Table.States (859).Kernel := To_Vector ((0 => (313, 96, 0, 
False)));
-            Table.States (859).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 313, 6)));
-            Add_Action (Table.States (860), 96, 1020);
-            Add_Error (Table.States (860));
-            Table.States (860).Kernel := To_Vector ((0 => (317, 122, 1, 
False)));
-            Table.States (860).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1020)));
-            Add_Action (Table.States (861), 13, 1021);
-            Add_Error (Table.States (861));
-            Table.States (861).Kernel := To_Vector ((0 => (316, 159, 3, 
False)));
-            Table.States (861).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 1021)));
-            Add_Action (Table.States (862), 24, Reduce, (159, 1), 0, null, 
null);
-            Add_Action (Table.States (862), 25, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (862), 28, 183);
-            Add_Action (Table.States (862), 29, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (862), 30, 8);
-            Add_Action (Table.States (862), 39, 1022);
-            Add_Action (Table.States (862), 40, 12);
-            Add_Action (Table.States (862), 46, 14);
-            Add_Action (Table.States (862), 47, 15);
-            Add_Action (Table.States (862), 48, 16);
-            Add_Action (Table.States (862), 49, Reduce, (159, 1), 0, null, 
null);
-            Add_Action (Table.States (862), 50, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (862), 51, 19);
-            Add_Action (Table.States (862), 63, 25);
-            Add_Action (Table.States (862), 66, 26);
-            Add_Action (Table.States (862), 69, 27);
-            Add_Action (Table.States (862), 71, 28);
-            Add_Action (Table.States (862), 104, 185);
-            Add_Error (Table.States (862));
-            Add_Goto (Table.States (862), 112, 35);
-            Add_Goto (Table.States (862), 121, 37);
-            Add_Goto (Table.States (862), 127, 40);
-            Add_Goto (Table.States (862), 134, 45);
-            Add_Goto (Table.States (862), 135, 46);
-            Add_Goto (Table.States (862), 157, 391);
-            Add_Goto (Table.States (862), 158, 392);
-            Add_Goto (Table.States (862), 159, 692);
-            Add_Goto (Table.States (862), 179, 54);
-            Add_Goto (Table.States (862), 182, 55);
-            Add_Goto (Table.States (862), 186, 56);
-            Add_Goto (Table.States (862), 193, 58);
-            Add_Goto (Table.States (862), 206, 60);
-            Add_Goto (Table.States (862), 207, 61);
-            Add_Goto (Table.States (862), 209, 62);
-            Add_Goto (Table.States (862), 210, 63);
-            Add_Goto (Table.States (862), 213, 64);
-            Add_Goto (Table.States (862), 214, 65);
-            Add_Goto (Table.States (862), 215, 66);
-            Add_Goto (Table.States (862), 216, 67);
-            Add_Goto (Table.States (862), 219, 69);
-            Add_Goto (Table.States (862), 223, 71);
-            Add_Goto (Table.States (862), 243, 74);
-            Add_Goto (Table.States (862), 244, 75);
-            Add_Goto (Table.States (862), 245, 76);
-            Add_Goto (Table.States (862), 246, 77);
-            Add_Goto (Table.States (862), 247, 78);
-            Add_Goto (Table.States (862), 248, 79);
-            Add_Goto (Table.States (862), 249, 80);
-            Add_Goto (Table.States (862), 250, 81);
-            Add_Goto (Table.States (862), 251, 82);
-            Add_Goto (Table.States (862), 257, 394);
-            Add_Goto (Table.States (862), 259, 84);
-            Add_Goto (Table.States (862), 260, 85);
-            Add_Goto (Table.States (862), 262, 87);
-            Add_Goto (Table.States (862), 263, 88);
-            Add_Goto (Table.States (862), 264, 89);
-            Add_Goto (Table.States (862), 265, 90);
-            Add_Goto (Table.States (862), 271, 91);
-            Add_Goto (Table.States (862), 281, 94);
-            Add_Goto (Table.States (862), 289, 95);
-            Add_Goto (Table.States (862), 304, 102);
-            Add_Goto (Table.States (862), 305, 103);
-            Add_Goto (Table.States (862), 307, 105);
-            Add_Goto (Table.States (862), 308, 106);
-            Add_Goto (Table.States (862), 309, 107);
-            Add_Goto (Table.States (862), 311, 108);
-            Add_Goto (Table.States (862), 313, 109);
-            Add_Goto (Table.States (862), 316, 111);
-            Add_Goto (Table.States (862), 317, 112);
-            Add_Goto (Table.States (862), 318, 1023);
-            Add_Goto (Table.States (862), 319, 113);
-            Add_Goto (Table.States (862), 325, 115);
-            Add_Goto (Table.States (862), 331, 116);
-            Table.States (862).Kernel := To_Vector (((319, 35, 5, False), 
(319, 35, 2, False)));
-            Table.States (862).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 318, 0)));
-            Add_Action (Table.States (863), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
+            Table.States (860).Kernel := To_Vector ((0 => (313, 96, 0, 
False)));
+            Table.States (860).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 313, 6)));
+            Table.States (861).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (861), 96, 1020);
+            Table.States (861).Kernel := To_Vector ((0 => (317, 122, 1, 
False)));
+            Table.States (861).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1020)));
+            Table.States (862).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (862), 13, 1021);
+            Table.States (862).Kernel := To_Vector ((0 => (316, 159, 3, 
False)));
+            Table.States (862).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 1021)));
+            Table.States (863).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (863), 24, Reduce, (159, 1), 0, null, 
null);
+            Add_Action (Table.States (863), 25, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (863), 28, 183);
+            Add_Action (Table.States (863), 29, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (863), 30, 8);
+            Add_Action (Table.States (863), 39, 1022);
+            Add_Action (Table.States (863), 40, 12);
+            Add_Action (Table.States (863), 46, 14);
+            Add_Action (Table.States (863), 47, 15);
+            Add_Action (Table.States (863), 48, 16);
+            Add_Action (Table.States (863), 49, Reduce, (159, 1), 0, null, 
null);
+            Add_Action (Table.States (863), 50, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (863), 51, 19);
+            Add_Action (Table.States (863), 63, 25);
+            Add_Action (Table.States (863), 66, 26);
+            Add_Action (Table.States (863), 69, 27);
+            Add_Action (Table.States (863), 71, 28);
+            Add_Action (Table.States (863), 104, 185);
+            Table.States (863).Goto_List.Set_Capacity (54);
+            Add_Goto (Table.States (863), 112, 35);
+            Add_Goto (Table.States (863), 121, 37);
+            Add_Goto (Table.States (863), 127, 40);
+            Add_Goto (Table.States (863), 134, 45);
+            Add_Goto (Table.States (863), 135, 46);
+            Add_Goto (Table.States (863), 157, 391);
+            Add_Goto (Table.States (863), 158, 392);
+            Add_Goto (Table.States (863), 159, 694);
+            Add_Goto (Table.States (863), 179, 54);
+            Add_Goto (Table.States (863), 182, 55);
+            Add_Goto (Table.States (863), 186, 56);
+            Add_Goto (Table.States (863), 193, 58);
+            Add_Goto (Table.States (863), 206, 60);
+            Add_Goto (Table.States (863), 207, 61);
+            Add_Goto (Table.States (863), 209, 62);
+            Add_Goto (Table.States (863), 210, 63);
+            Add_Goto (Table.States (863), 213, 64);
+            Add_Goto (Table.States (863), 214, 65);
+            Add_Goto (Table.States (863), 215, 66);
+            Add_Goto (Table.States (863), 216, 67);
+            Add_Goto (Table.States (863), 219, 69);
+            Add_Goto (Table.States (863), 223, 71);
+            Add_Goto (Table.States (863), 243, 74);
+            Add_Goto (Table.States (863), 244, 75);
+            Add_Goto (Table.States (863), 245, 76);
+            Add_Goto (Table.States (863), 246, 77);
+            Add_Goto (Table.States (863), 247, 78);
+            Add_Goto (Table.States (863), 248, 79);
+            Add_Goto (Table.States (863), 249, 80);
+            Add_Goto (Table.States (863), 250, 81);
+            Add_Goto (Table.States (863), 251, 82);
+            Add_Goto (Table.States (863), 257, 394);
+            Add_Goto (Table.States (863), 259, 84);
+            Add_Goto (Table.States (863), 260, 85);
+            Add_Goto (Table.States (863), 262, 87);
+            Add_Goto (Table.States (863), 263, 88);
+            Add_Goto (Table.States (863), 264, 89);
+            Add_Goto (Table.States (863), 265, 90);
+            Add_Goto (Table.States (863), 271, 91);
+            Add_Goto (Table.States (863), 281, 94);
+            Add_Goto (Table.States (863), 289, 95);
+            Add_Goto (Table.States (863), 304, 102);
+            Add_Goto (Table.States (863), 305, 103);
+            Add_Goto (Table.States (863), 307, 105);
+            Add_Goto (Table.States (863), 308, 106);
+            Add_Goto (Table.States (863), 309, 107);
+            Add_Goto (Table.States (863), 311, 108);
+            Add_Goto (Table.States (863), 313, 109);
+            Add_Goto (Table.States (863), 316, 111);
+            Add_Goto (Table.States (863), 317, 112);
+            Add_Goto (Table.States (863), 318, 1023);
+            Add_Goto (Table.States (863), 319, 113);
+            Add_Goto (Table.States (863), 325, 115);
+            Add_Goto (Table.States (863), 331, 116);
+            Table.States (863).Kernel := To_Vector (((319, 35, 5, False), 
(319, 35, 2, False)));
+            Table.States (863).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 318, 0)));
+            Table.States (864).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (864), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (319, 2), 6,
             task_type_declaration_2'Access, null);
-            Table.States (863).Kernel := To_Vector ((0 => (319, 96, 0, 
False)));
-            Table.States (863).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 319, 6)));
-            Add_Action (Table.States (864), 10, 1006);
-            Add_Action (Table.States (864), 74, 1024);
-            Add_Error (Table.States (864));
-            Table.States (864).Kernel := To_Vector (((227, 227, 2, True), 
(305, 227, 3, False)));
-            Table.States (864).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1024)));
-            Add_Action (Table.States (865), 24, Reduce, (159, 1), 0, null, 
null);
-            Add_Action (Table.States (865), 25, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (865), 28, 183);
-            Add_Action (Table.States (865), 29, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (865), 30, 8);
-            Add_Action (Table.States (865), 40, 12);
-            Add_Action (Table.States (865), 46, 14);
-            Add_Action (Table.States (865), 47, 15);
-            Add_Action (Table.States (865), 48, 16);
-            Add_Action (Table.States (865), 50, Reduce, (246, 2), 0, null, 
null);
-            Add_Action (Table.States (865), 51, 19);
-            Add_Action (Table.States (865), 63, 25);
-            Add_Action (Table.States (865), 66, 26);
-            Add_Action (Table.States (865), 69, 27);
-            Add_Action (Table.States (865), 71, 28);
-            Add_Action (Table.States (865), 104, 185);
-            Add_Error (Table.States (865));
-            Add_Goto (Table.States (865), 112, 35);
-            Add_Goto (Table.States (865), 121, 37);
-            Add_Goto (Table.States (865), 127, 40);
-            Add_Goto (Table.States (865), 134, 45);
-            Add_Goto (Table.States (865), 135, 46);
-            Add_Goto (Table.States (865), 157, 391);
-            Add_Goto (Table.States (865), 158, 392);
-            Add_Goto (Table.States (865), 159, 1025);
-            Add_Goto (Table.States (865), 179, 54);
-            Add_Goto (Table.States (865), 182, 55);
-            Add_Goto (Table.States (865), 186, 56);
-            Add_Goto (Table.States (865), 193, 58);
-            Add_Goto (Table.States (865), 206, 60);
-            Add_Goto (Table.States (865), 207, 61);
-            Add_Goto (Table.States (865), 209, 62);
-            Add_Goto (Table.States (865), 210, 63);
-            Add_Goto (Table.States (865), 213, 64);
-            Add_Goto (Table.States (865), 214, 65);
-            Add_Goto (Table.States (865), 215, 66);
-            Add_Goto (Table.States (865), 216, 67);
-            Add_Goto (Table.States (865), 219, 69);
-            Add_Goto (Table.States (865), 223, 71);
-            Add_Goto (Table.States (865), 243, 74);
-            Add_Goto (Table.States (865), 244, 75);
-            Add_Goto (Table.States (865), 245, 76);
-            Add_Goto (Table.States (865), 246, 77);
-            Add_Goto (Table.States (865), 247, 78);
-            Add_Goto (Table.States (865), 248, 79);
-            Add_Goto (Table.States (865), 249, 80);
-            Add_Goto (Table.States (865), 250, 81);
-            Add_Goto (Table.States (865), 251, 82);
-            Add_Goto (Table.States (865), 257, 394);
-            Add_Goto (Table.States (865), 259, 84);
-            Add_Goto (Table.States (865), 260, 85);
-            Add_Goto (Table.States (865), 262, 87);
-            Add_Goto (Table.States (865), 263, 88);
-            Add_Goto (Table.States (865), 264, 89);
-            Add_Goto (Table.States (865), 265, 90);
-            Add_Goto (Table.States (865), 271, 91);
-            Add_Goto (Table.States (865), 281, 94);
-            Add_Goto (Table.States (865), 289, 95);
-            Add_Goto (Table.States (865), 304, 102);
-            Add_Goto (Table.States (865), 305, 103);
-            Add_Goto (Table.States (865), 307, 105);
-            Add_Goto (Table.States (865), 308, 106);
-            Add_Goto (Table.States (865), 309, 107);
-            Add_Goto (Table.States (865), 311, 108);
-            Add_Goto (Table.States (865), 313, 109);
-            Add_Goto (Table.States (865), 316, 111);
-            Add_Goto (Table.States (865), 317, 112);
-            Add_Goto (Table.States (865), 319, 113);
-            Add_Goto (Table.States (865), 325, 115);
-            Add_Goto (Table.States (865), 331, 116);
-            Table.States (865).Kernel := To_Vector ((0 => (318, 49, 0, 
False)));
-            Table.States (865).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
-            Add_Action (Table.States (866), 96, Reduce, (220, 1), 0, null, 
null);
-            Add_Action (Table.States (866), 104, 149);
-            Add_Error (Table.States (866));
-            Add_Goto (Table.States (866), 220, 1026);
-            Table.States (866).Kernel := To_Vector ((0 => (305, 24, 1, 
False)));
-            Table.States (866).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
-            Add_Action (Table.States (867), (77, 96), (171, 0), 3, null, null);
-            Table.States (867).Kernel := To_Vector ((0 => (171, 170, 0, 
True)));
-            Table.States (867).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 171, 3)));
-            Table.States (867).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (868), 41, 1027);
-            Add_Error (Table.States (868));
-            Table.States (868).Kernel := To_Vector (((241, 40, 1, False), 
(242, 40, 2, False), (242, 40, 4, False)));
-            Table.States (868).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 1027)));
-            Add_Action (Table.States (869), 76, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (869), 77, Reduce, (242, 0), 1, 
null_exclusion_opt_name_type_0'Access, null);
-            Add_Action (Table.States (869), 82, Reduce, (242, 0), 1, 
null_exclusion_opt_name_type_0'Access, null);
-            Add_Action (Table.States (869), 84, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (869), 96, Reduce, (242, 0), 1, 
null_exclusion_opt_name_type_0'Access, null);
-            Add_Action (Table.States (869), 101, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (869), 102, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Error (Table.States (869));
-            Table.States (869).Kernel := To_Vector (((239, 104, 0, False), 
(242, 104, 0, False)));
-            Table.States (869).Minimal_Complete_Actions := To_Vector 
(((Reduce, 239, 1), (Reduce, 242, 1)));
-            Add_Action (Table.States (870), 77, Reduce, (170, 3), 3, null, 
null);
-            Add_Action (Table.States (870), 82, 1028);
-            Add_Action (Table.States (870), 96, Reduce, (170, 3), 3, null, 
null);
-            Add_Error (Table.States (870));
-            Table.States (870).Kernel := To_Vector (((170, 114, 1, False), 
(170, 114, 0, False)));
-            Table.States (870).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 3)));
-            Add_Action (Table.States (871), 76, 235);
-            Add_Action (Table.States (871), 84, 237);
-            Add_Action (Table.States (871), 101, 239);
-            Add_Action (Table.States (871), 102, 240);
-            Add_Error (Table.States (871));
-            Add_Goto (Table.States (871), 115, 241);
-            Add_Goto (Table.States (871), 322, 242);
-            Table.States (871).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
+            Table.States (864).Kernel := To_Vector ((0 => (319, 96, 0, 
False)));
+            Table.States (864).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 319, 6)));
+            Table.States (865).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (865), 10, 1006);
+            Add_Action (Table.States (865), 74, 1024);
+            Table.States (865).Kernel := To_Vector (((227, 227, 2, True), 
(305, 227, 3, False)));
+            Table.States (865).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1024)));
+            Table.States (866).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (866), 24, Reduce, (159, 1), 0, null, 
null);
+            Add_Action (Table.States (866), 25, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (866), 28, 183);
+            Add_Action (Table.States (866), 29, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (866), 30, 8);
+            Add_Action (Table.States (866), 40, 12);
+            Add_Action (Table.States (866), 46, 14);
+            Add_Action (Table.States (866), 47, 15);
+            Add_Action (Table.States (866), 48, 16);
+            Add_Action (Table.States (866), 50, Reduce, (246, 2), 0, null, 
null);
+            Add_Action (Table.States (866), 51, 19);
+            Add_Action (Table.States (866), 63, 25);
+            Add_Action (Table.States (866), 66, 26);
+            Add_Action (Table.States (866), 69, 27);
+            Add_Action (Table.States (866), 71, 28);
+            Add_Action (Table.States (866), 104, 185);
+            Table.States (866).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (866), 112, 35);
+            Add_Goto (Table.States (866), 121, 37);
+            Add_Goto (Table.States (866), 127, 40);
+            Add_Goto (Table.States (866), 134, 45);
+            Add_Goto (Table.States (866), 135, 46);
+            Add_Goto (Table.States (866), 157, 391);
+            Add_Goto (Table.States (866), 158, 392);
+            Add_Goto (Table.States (866), 159, 1025);
+            Add_Goto (Table.States (866), 179, 54);
+            Add_Goto (Table.States (866), 182, 55);
+            Add_Goto (Table.States (866), 186, 56);
+            Add_Goto (Table.States (866), 193, 58);
+            Add_Goto (Table.States (866), 206, 60);
+            Add_Goto (Table.States (866), 207, 61);
+            Add_Goto (Table.States (866), 209, 62);
+            Add_Goto (Table.States (866), 210, 63);
+            Add_Goto (Table.States (866), 213, 64);
+            Add_Goto (Table.States (866), 214, 65);
+            Add_Goto (Table.States (866), 215, 66);
+            Add_Goto (Table.States (866), 216, 67);
+            Add_Goto (Table.States (866), 219, 69);
+            Add_Goto (Table.States (866), 223, 71);
+            Add_Goto (Table.States (866), 243, 74);
+            Add_Goto (Table.States (866), 244, 75);
+            Add_Goto (Table.States (866), 245, 76);
+            Add_Goto (Table.States (866), 246, 77);
+            Add_Goto (Table.States (866), 247, 78);
+            Add_Goto (Table.States (866), 248, 79);
+            Add_Goto (Table.States (866), 249, 80);
+            Add_Goto (Table.States (866), 250, 81);
+            Add_Goto (Table.States (866), 251, 82);
+            Add_Goto (Table.States (866), 257, 394);
+            Add_Goto (Table.States (866), 259, 84);
+            Add_Goto (Table.States (866), 260, 85);
+            Add_Goto (Table.States (866), 262, 87);
+            Add_Goto (Table.States (866), 263, 88);
+            Add_Goto (Table.States (866), 264, 89);
+            Add_Goto (Table.States (866), 265, 90);
+            Add_Goto (Table.States (866), 271, 91);
+            Add_Goto (Table.States (866), 281, 94);
+            Add_Goto (Table.States (866), 289, 95);
+            Add_Goto (Table.States (866), 304, 102);
+            Add_Goto (Table.States (866), 305, 103);
+            Add_Goto (Table.States (866), 307, 105);
+            Add_Goto (Table.States (866), 308, 106);
+            Add_Goto (Table.States (866), 309, 107);
+            Add_Goto (Table.States (866), 311, 108);
+            Add_Goto (Table.States (866), 313, 109);
+            Add_Goto (Table.States (866), 316, 111);
+            Add_Goto (Table.States (866), 317, 112);
+            Add_Goto (Table.States (866), 319, 113);
+            Add_Goto (Table.States (866), 325, 115);
+            Add_Goto (Table.States (866), 331, 116);
+            Table.States (866).Kernel := To_Vector ((0 => (318, 49, 0, 
False)));
+            Table.States (866).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
+            Table.States (867).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (867), 96, Reduce, (220, 1), 0, null, 
null);
+            Add_Action (Table.States (867), 104, 149);
+            Table.States (867).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (867), 220, 1026);
+            Table.States (867).Kernel := To_Vector ((0 => (305, 24, 1, 
False)));
+            Table.States (867).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (868).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (868), (77, 96), (171, 0), 3, null, null);
+            Table.States (868).Kernel := To_Vector ((0 => (171, 170, 0, 
True)));
+            Table.States (868).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 171, 3)));
+            Table.States (868).Minimal_Complete_Actions_Recursive := True;
+            Table.States (869).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (869), 41, 1027);
+            Table.States (869).Kernel := To_Vector (((241, 40, 1, False), 
(242, 40, 2, False), (242, 40, 4, False)));
+            Table.States (869).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 1027)));
+            Table.States (870).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (870), 76, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (870), 77, Reduce, (242, 0), 1, 
null_exclusion_opt_name_type_0'Access, null);
+            Add_Action (Table.States (870), 82, Reduce, (242, 0), 1, 
null_exclusion_opt_name_type_0'Access, null);
+            Add_Action (Table.States (870), 84, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (870), 96, Reduce, (242, 0), 1, 
null_exclusion_opt_name_type_0'Access, null);
+            Add_Action (Table.States (870), 101, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (870), 102, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
+            Table.States (870).Kernel := To_Vector (((239, 104, 0, False), 
(242, 104, 0, False)));
+            Table.States (870).Minimal_Complete_Actions := To_Vector 
(((Reduce, 239, 1), (Reduce, 242, 1)));
+            Table.States (871).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (871), 77, Reduce, (170, 3), 3, null, 
null);
+            Add_Action (Table.States (871), 82, 1028);
+            Add_Action (Table.States (871), 96, Reduce, (170, 3), 3, null, 
null);
+            Table.States (871).Kernel := To_Vector (((170, 114, 1, False), 
(170, 114, 0, False)));
+            Table.States (871).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 3)));
+            Table.States (872).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (872), 76, 235);
+            Add_Action (Table.States (872), 84, 237);
+            Add_Action (Table.States (872), 101, 239);
+            Add_Action (Table.States (872), 102, 240);
+            Table.States (872).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (872), 115, 241);
+            Add_Goto (Table.States (872), 322, 242);
+            Table.States (872).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (272, 239, 3, True), (293, 239, 2, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True)));
-            Table.States (871).Minimal_Complete_Actions := To_Vector (((Shift, 
101, 239), (Shift, 76, 235), (Shift, 84,
+            Table.States (872).Minimal_Complete_Actions := To_Vector (((Shift, 
101, 239), (Shift, 76, 235), (Shift, 84,
             237)));
-            Table.States (871).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (872), 77, Reduce, (170, 2), 3, null, 
null);
-            Add_Action (Table.States (872), 82, 1029);
-            Add_Action (Table.States (872), 96, Reduce, (170, 2), 3, null, 
null);
-            Add_Error (Table.States (872));
-            Table.States (872).Kernel := To_Vector (((170, 242, 1, False), 
(170, 242, 0, False)));
-            Table.States (872).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 3)));
-            Add_Action (Table.States (873), 76, Reduce, (239, 2), 1, null, 
name_2_check'Access);
-            Add_Action (Table.States (873), 77, Reduce, (242, 1), 1, 
null_exclusion_opt_name_type_1'Access, null);
-            Add_Action (Table.States (873), 82, Reduce, (242, 1), 1, 
null_exclusion_opt_name_type_1'Access, null);
-            Add_Action (Table.States (873), 84, Reduce, (239, 2), 1, null, 
name_2_check'Access);
-            Add_Action (Table.States (873), 96, Reduce, (242, 1), 1, 
null_exclusion_opt_name_type_1'Access, null);
-            Add_Action (Table.States (873), 101, Reduce, (239, 2), 1, null, 
name_2_check'Access);
-            Add_Action (Table.States (873), 102, Reduce, (239, 2), 1, null, 
name_2_check'Access);
-            Add_Error (Table.States (873));
-            Table.States (873).Kernel := To_Vector (((239, 293, 0, True), 
(242, 293, 0, False)));
-            Table.States (873).Minimal_Complete_Actions := To_Vector 
(((Reduce, 239, 1), (Reduce, 242, 1)));
-            Table.States (873).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (874), 39, Reduce, (109, 0), 2, null, 
null);
-            Add_Conflict (Table.States (874), 39, (110, 0), 2, null, null);
-            Add_Error (Table.States (874));
-            Table.States (874).Kernel := To_Vector (((109, 36, 0, False), 
(110, 36, 0, False)));
-            Table.States (874).Minimal_Complete_Actions := To_Vector 
(((Reduce, 109, 2), (Reduce, 110, 2)));
-            Add_Action (Table.States (875), (1 =>  39), (109, 1), 2, null, 
null);
-            Table.States (875).Kernel := To_Vector ((0 => (109, 64, 0, 
False)));
-            Table.States (875).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 109, 2)));
-            Add_Action (Table.States (876), 36, 1030);
-            Add_Action (Table.States (876), 41, Reduce, (111, 1), 2, null, 
null);
-            Add_Action (Table.States (876), 49, Reduce, (111, 1), 2, null, 
null);
-            Add_Action (Table.States (876), 54, Reduce, (111, 1), 2, null, 
null);
-            Add_Error (Table.States (876));
-            Table.States (876).Kernel := To_Vector (((111, 65, 1, False), 
(111, 65, 0, False)));
-            Table.States (876).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 111, 2)));
-            Add_Action (Table.States (877), 3, 121);
-            Add_Action (Table.States (877), 39, 122);
-            Add_Action (Table.States (877), 40, 474);
-            Add_Action (Table.States (877), 41, 124);
-            Add_Action (Table.States (877), 76, 126);
-            Add_Action (Table.States (877), 94, 127);
-            Add_Action (Table.States (877), 95, 128);
-            Add_Action (Table.States (877), 103, 129);
-            Add_Action (Table.States (877), 104, 119);
-            Add_Action (Table.States (877), 105, 33);
-            Add_Action (Table.States (877), 106, 34);
-            Add_Error (Table.States (877));
-            Add_Goto (Table.States (877), 117, 130);
-            Add_Goto (Table.States (877), 128, 41);
-            Add_Goto (Table.States (877), 167, 775);
-            Add_Goto (Table.States (877), 168, 1031);
-            Add_Goto (Table.States (877), 197, 133);
-            Add_Goto (Table.States (877), 225, 1032);
-            Add_Goto (Table.States (877), 226, 1033);
-            Add_Goto (Table.States (877), 239, 1034);
-            Add_Goto (Table.States (877), 258, 135);
-            Add_Goto (Table.States (877), 272, 92);
-            Add_Goto (Table.States (877), 277, 478);
-            Add_Goto (Table.States (877), 293, 97);
-            Add_Goto (Table.States (877), 301, 479);
-            Add_Goto (Table.States (877), 314, 480);
-            Add_Goto (Table.States (877), 320, 144);
-            Add_Goto (Table.States (877), 321, 145);
-            Add_Goto (Table.States (877), 330, 146);
-            Table.States (877).Kernel := To_Vector (((120, 76, 6, False), 
(120, 76, 6, False)));
-            Table.States (877).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (878), 20, 1035);
-            Add_Action (Table.States (878), 53, 1036);
-            Add_Action (Table.States (878), 74, Reduce, (279, 1), 0, null, 
null);
-            Add_Action (Table.States (878), 96, Reduce, (279, 1), 0, null, 
null);
-            Add_Error (Table.States (878));
-            Add_Goto (Table.States (878), 279, 1037);
-            Table.States (878).Kernel := To_Vector (((326, 192, 1, False), 
(326, 192, 0, False)));
-            Table.States (878).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 279, 0)));
+            Table.States (872).Minimal_Complete_Actions_Recursive := True;
+            Table.States (873).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (873), 77, Reduce, (170, 2), 3, null, 
null);
+            Add_Action (Table.States (873), 82, 1029);
+            Add_Action (Table.States (873), 96, Reduce, (170, 2), 3, null, 
null);
+            Table.States (873).Kernel := To_Vector (((170, 242, 1, False), 
(170, 242, 0, False)));
+            Table.States (873).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 3)));
+            Table.States (874).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (874), 76, Reduce, (239, 2), 1, null, 
name_2_check'Access);
+            Add_Action (Table.States (874), 77, Reduce, (242, 1), 1, 
null_exclusion_opt_name_type_1'Access, null);
+            Add_Action (Table.States (874), 82, Reduce, (242, 1), 1, 
null_exclusion_opt_name_type_1'Access, null);
+            Add_Action (Table.States (874), 84, Reduce, (239, 2), 1, null, 
name_2_check'Access);
+            Add_Action (Table.States (874), 96, Reduce, (242, 1), 1, 
null_exclusion_opt_name_type_1'Access, null);
+            Add_Action (Table.States (874), 101, Reduce, (239, 2), 1, null, 
name_2_check'Access);
+            Add_Action (Table.States (874), 102, Reduce, (239, 2), 1, null, 
name_2_check'Access);
+            Table.States (874).Kernel := To_Vector (((239, 293, 0, True), 
(242, 293, 0, False)));
+            Table.States (874).Minimal_Complete_Actions := To_Vector 
(((Reduce, 239, 1), (Reduce, 242, 1)));
+            Table.States (874).Minimal_Complete_Actions_Recursive := True;
+            Table.States (875).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (875), 39, Reduce, (109, 0), 2, null, 
null);
+            Add_Conflict (Table.States (875), 39, (110, 0), 2, null, null);
+            Table.States (875).Kernel := To_Vector (((109, 36, 0, False), 
(110, 36, 0, False)));
+            Table.States (875).Minimal_Complete_Actions := To_Vector 
(((Reduce, 109, 2), (Reduce, 110, 2)));
+            Table.States (876).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (876), (1 =>  39), (109, 1), 2, null, 
null);
+            Table.States (876).Kernel := To_Vector ((0 => (109, 64, 0, 
False)));
+            Table.States (876).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 109, 2)));
+            Table.States (877).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (877), 36, 1030);
+            Add_Action (Table.States (877), 41, Reduce, (111, 1), 2, null, 
null);
+            Add_Action (Table.States (877), 49, Reduce, (111, 1), 2, null, 
null);
+            Add_Action (Table.States (877), 54, Reduce, (111, 1), 2, null, 
null);
+            Table.States (877).Kernel := To_Vector (((111, 65, 1, False), 
(111, 65, 0, False)));
+            Table.States (877).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 111, 2)));
+            Table.States (878).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (878), 3, 121);
+            Add_Action (Table.States (878), 39, 122);
+            Add_Action (Table.States (878), 40, 474);
+            Add_Action (Table.States (878), 41, 124);
+            Add_Action (Table.States (878), 76, 126);
+            Add_Action (Table.States (878), 94, 127);
+            Add_Action (Table.States (878), 95, 128);
+            Add_Action (Table.States (878), 103, 129);
+            Add_Action (Table.States (878), 104, 119);
+            Add_Action (Table.States (878), 105, 33);
+            Add_Action (Table.States (878), 106, 34);
+            Table.States (878).Goto_List.Set_Capacity (17);
+            Add_Goto (Table.States (878), 117, 130);
+            Add_Goto (Table.States (878), 128, 41);
+            Add_Goto (Table.States (878), 167, 776);
+            Add_Goto (Table.States (878), 168, 1031);
+            Add_Goto (Table.States (878), 197, 133);
+            Add_Goto (Table.States (878), 225, 1032);
+            Add_Goto (Table.States (878), 226, 1033);
+            Add_Goto (Table.States (878), 239, 1034);
+            Add_Goto (Table.States (878), 258, 135);
+            Add_Goto (Table.States (878), 272, 92);
+            Add_Goto (Table.States (878), 277, 478);
+            Add_Goto (Table.States (878), 293, 97);
+            Add_Goto (Table.States (878), 301, 479);
+            Add_Goto (Table.States (878), 314, 480);
+            Add_Goto (Table.States (878), 320, 144);
+            Add_Goto (Table.States (878), 321, 145);
+            Add_Goto (Table.States (878), 330, 146);
+            Table.States (878).Kernel := To_Vector (((120, 76, 6, False), 
(120, 76, 6, False)));
+            Table.States (878).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (879).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (879), 20, 1035);
             Add_Action (Table.States (879), 53, 1036);
             Add_Action (Table.States (879), 74, Reduce, (279, 1), 0, null, 
null);
             Add_Action (Table.States (879), 96, Reduce, (279, 1), 0, null, 
null);
-            Add_Error (Table.States (879));
-            Add_Goto (Table.States (879), 279, 1038);
-            Table.States (879).Kernel := To_Vector ((0 => (326, 192, 0, 
False)));
+            Table.States (879).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (879), 279, 1037);
+            Table.States (879).Kernel := To_Vector (((326, 192, 1, False), 
(326, 192, 0, False)));
             Table.States (879).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 279, 0)));
-            Add_Action (Table.States (880), 10, 1039);
-            Add_Action (Table.States (880), 74, Reduce, (228, 4), 2, null, 
null);
-            Add_Action (Table.States (880), 96, Reduce, (228, 4), 2, null, 
null);
-            Add_Error (Table.States (880));
-            Table.States (880).Kernel := To_Vector (((228, 34, 2, False), 
(228, 34, 0, False)));
-            Table.States (880).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 2)));
-            Add_Action (Table.States (881), (74, 96), (326, 2), 2, null, null);
-            Table.States (881).Kernel := To_Vector ((0 => (326, 192, 0, 
False)));
-            Table.States (881).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 2)));
-            Add_Action (Table.States (882), (74, 96), (280, 1), 2, null, null);
-            Table.States (882).Kernel := To_Vector ((0 => (280, 54, 0, 
False)));
-            Table.States (882).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 280, 2)));
-            Add_Action (Table.States (883), 10, 1040);
-            Add_Action (Table.States (883), 74, Reduce, (228, 6), 2, null, 
null);
-            Add_Action (Table.States (883), 96, Reduce, (228, 6), 2, null, 
null);
-            Add_Error (Table.States (883));
-            Table.States (883).Kernel := To_Vector (((228, 34, 2, False), 
(228, 34, 0, False)));
-            Table.States (883).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 2)));
-            Add_Action (Table.States (884), 85, 1041);
-            Add_Error (Table.States (884));
-            Table.States (884).Kernel := To_Vector ((0 => (326, 301, 2, 
False)));
-            Table.States (884).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 85, 1041)));
-            Add_Action (Table.States (885), 35, Reduce, (164, 1), 0, null, 
null);
-            Add_Action (Table.States (885), 104, 1042);
-            Add_Action (Table.States (885), 105, 1043);
-            Add_Error (Table.States (885));
-            Add_Goto (Table.States (885), 163, 1044);
-            Add_Goto (Table.States (885), 164, 1045);
-            Table.States (885).Kernel := To_Vector ((0 => (327, 15, 6, 
False)));
-            Table.States (885).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 164, 0)));
-            Add_Action (Table.States (886), 96, 1046);
-            Add_Error (Table.States (886));
-            Table.States (886).Kernel := To_Vector ((0 => (149, 41, 1, 
False)));
-            Table.States (886).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1046)));
-            Add_Action (Table.States (887), (15, 24, 28, 72, 104), (148, 1), 
1, null, null);
-            Table.States (887).Kernel := To_Vector ((0 => (148, 121, 0, 
False)));
-            Table.States (887).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 148, 1)));
-            Add_Action (Table.States (888), (15, 24, 28, 72, 104), (148, 0), 
1, null, null);
-            Table.States (888).Kernel := To_Vector ((0 => (148, 146, 0, 
False)));
-            Table.States (888).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 148, 1)));
+            Table.States (880).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (880), 53, 1036);
+            Add_Action (Table.States (880), 74, Reduce, (279, 1), 0, null, 
null);
+            Add_Action (Table.States (880), 96, Reduce, (279, 1), 0, null, 
null);
+            Table.States (880).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (880), 279, 1038);
+            Table.States (880).Kernel := To_Vector ((0 => (326, 192, 0, 
False)));
+            Table.States (880).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 279, 0)));
+            Table.States (881).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (881), 10, 1039);
+            Add_Action (Table.States (881), 74, Reduce, (228, 4), 2, null, 
null);
+            Add_Action (Table.States (881), 96, Reduce, (228, 4), 2, null, 
null);
+            Table.States (881).Kernel := To_Vector (((228, 34, 2, False), 
(228, 34, 0, False)));
+            Table.States (881).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 2)));
+            Table.States (882).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (882), (74, 96), (326, 2), 2, null, null);
+            Table.States (882).Kernel := To_Vector ((0 => (326, 192, 0, 
False)));
+            Table.States (882).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 2)));
+            Table.States (883).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (883), (74, 96), (280, 1), 2, null, null);
+            Table.States (883).Kernel := To_Vector ((0 => (280, 54, 0, 
False)));
+            Table.States (883).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 280, 2)));
+            Table.States (884).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (884), 10, 1040);
+            Add_Action (Table.States (884), 74, Reduce, (228, 6), 2, null, 
null);
+            Add_Action (Table.States (884), 96, Reduce, (228, 6), 2, null, 
null);
+            Table.States (884).Kernel := To_Vector (((228, 34, 2, False), 
(228, 34, 0, False)));
+            Table.States (884).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 2)));
+            Table.States (885).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (885), 85, 1041);
+            Table.States (885).Kernel := To_Vector ((0 => (326, 301, 2, 
False)));
+            Table.States (885).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 85, 1041)));
+            Table.States (886).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (886), 35, Reduce, (164, 1), 0, null, 
null);
+            Add_Action (Table.States (886), 104, 1042);
+            Add_Action (Table.States (886), 105, 1043);
+            Table.States (886).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (886), 163, 1044);
+            Add_Goto (Table.States (886), 164, 1045);
+            Table.States (886).Kernel := To_Vector ((0 => (327, 15, 6, 
False)));
+            Table.States (886).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 164, 0)));
          end Subr_15;
          procedure Subr_16
          is begin
-            Add_Action (Table.States (889), (15, 24, 28, 72, 104), (149, 2), 
1, null, null);
-            Table.States (889).Kernel := To_Vector ((0 => (149, 148, 0, 
False)));
-            Table.States (889).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 149, 1)));
-            Add_Action (Table.States (890), 15, 885);
-            Add_Action (Table.States (890), 24, Reduce, (150, 0), 1, null, 
null);
-            Add_Action (Table.States (890), 28, 183);
-            Add_Action (Table.States (890), 72, Reduce, (150, 0), 1, null, 
null);
-            Add_Action (Table.States (890), 104, 164);
-            Add_Error (Table.States (890));
-            Add_Goto (Table.States (890), 121, 887);
-            Add_Goto (Table.States (890), 127, 40);
-            Add_Goto (Table.States (890), 146, 888);
-            Add_Goto (Table.States (890), 148, 1047);
-            Add_Goto (Table.States (890), 182, 55);
-            Add_Goto (Table.States (890), 219, 892);
-            Add_Goto (Table.States (890), 281, 94);
-            Add_Goto (Table.States (890), 327, 1048);
-            Table.States (890).Kernel := To_Vector (((149, 149, 4, True), 
(149, 149, 7, True), (150, 149, 0, False)));
-            Table.States (890).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 150, 1)));
-            Add_Action (Table.States (891), 24, 1049);
-            Add_Error (Table.States (891));
-            Table.States (891).Kernel := To_Vector ((0 => (280, 150, 2, 
False)));
-            Table.States (891).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1049)));
-            Add_Action (Table.States (892), 81, 1050);
-            Add_Action (Table.States (892), 83, 234);
-            Add_Error (Table.States (892));
-            Table.States (892).Kernel := To_Vector (((146, 219, 4, False), 
(146, 219, 3, False), (219, 219, 2, True)));
-            Table.States (892).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 1050)));
-            Add_Action (Table.States (893), (15, 24, 28, 72, 104), (149, 3), 
1, null, null);
-            Table.States (893).Kernel := To_Vector ((0 => (149, 327, 0, 
False)));
-            Table.States (893).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 149, 1)));
-            Add_Action (Table.States (894), 10, 1051);
-            Add_Action (Table.States (894), 74, Reduce, (228, 7), 2, null, 
null);
-            Add_Action (Table.States (894), 96, Reduce, (228, 7), 2, null, 
null);
-            Add_Error (Table.States (894));
-            Table.States (894).Kernel := To_Vector (((228, 34, 2, False), 
(228, 34, 0, False)));
-            Table.States (894).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 2)));
-            Add_Action (Table.States (895), (41, 49, 54), (111, 2), 2, null, 
null);
-            Table.States (895).Kernel := To_Vector ((0 => (111, 36, 0, 
False)));
-            Table.States (895).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 111, 2)));
-            Add_Action (Table.States (896), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
+            Table.States (887).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (887), 96, 1046);
+            Table.States (887).Kernel := To_Vector ((0 => (149, 41, 1, 
False)));
+            Table.States (887).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1046)));
+            Table.States (888).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (888), (15, 24, 28, 72, 104), (148, 1), 
1, null, null);
+            Table.States (888).Kernel := To_Vector ((0 => (148, 121, 0, 
False)));
+            Table.States (888).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 148, 1)));
+            Table.States (889).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (889), (15, 24, 28, 72, 104), (148, 0), 
1, null, null);
+            Table.States (889).Kernel := To_Vector ((0 => (148, 146, 0, 
False)));
+            Table.States (889).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 148, 1)));
+            Table.States (890).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (890), (15, 24, 28, 72, 104), (149, 2), 
1, null, null);
+            Table.States (890).Kernel := To_Vector ((0 => (149, 148, 0, 
False)));
+            Table.States (890).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 149, 1)));
+            Table.States (891).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (891), 15, 886);
+            Add_Action (Table.States (891), 24, Reduce, (150, 0), 1, null, 
null);
+            Add_Action (Table.States (891), 28, 183);
+            Add_Action (Table.States (891), 72, Reduce, (150, 0), 1, null, 
null);
+            Add_Action (Table.States (891), 104, 164);
+            Table.States (891).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (891), 121, 888);
+            Add_Goto (Table.States (891), 127, 40);
+            Add_Goto (Table.States (891), 146, 889);
+            Add_Goto (Table.States (891), 148, 1047);
+            Add_Goto (Table.States (891), 182, 55);
+            Add_Goto (Table.States (891), 219, 893);
+            Add_Goto (Table.States (891), 281, 94);
+            Add_Goto (Table.States (891), 327, 1048);
+            Table.States (891).Kernel := To_Vector (((149, 149, 4, True), 
(149, 149, 7, True), (150, 149, 0, False)));
+            Table.States (891).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 150, 1)));
+            Table.States (892).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (892), 24, 1049);
+            Table.States (892).Kernel := To_Vector ((0 => (280, 150, 2, 
False)));
+            Table.States (892).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1049)));
+            Table.States (893).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (893), 81, 1050);
+            Add_Action (Table.States (893), 83, 234);
+            Table.States (893).Kernel := To_Vector (((146, 219, 4, False), 
(146, 219, 3, False), (219, 219, 2, True)));
+            Table.States (893).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 1050)));
+            Table.States (894).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (894), (15, 24, 28, 72, 104), (149, 3), 
1, null, null);
+            Table.States (894).Kernel := To_Vector ((0 => (149, 327, 0, 
False)));
+            Table.States (894).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 149, 1)));
+            Table.States (895).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (895), 10, 1051);
+            Add_Action (Table.States (895), 74, Reduce, (228, 7), 2, null, 
null);
+            Add_Action (Table.States (895), 96, Reduce, (228, 7), 2, null, 
null);
+            Table.States (895).Kernel := To_Vector (((228, 34, 2, False), 
(228, 34, 0, False)));
+            Table.States (895).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 2)));
+            Table.States (896).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (896), (41, 49, 54), (111, 2), 2, null, 
null);
+            Table.States (896).Kernel := To_Vector ((0 => (111, 36, 0, 
False)));
+            Table.States (896).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 111, 2)));
+            Table.States (897).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (897), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (223, 0), 6,
             incomplete_type_declaration_0'Access, null);
-            Table.States (896).Kernel := To_Vector ((0 => (223, 96, 0, 
False)));
-            Table.States (896).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 223, 6)));
-            Add_Action (Table.States (897), 10, 1052);
-            Add_Action (Table.States (897), 74, Reduce, (228, 5), 2, null, 
null);
-            Add_Action (Table.States (897), 96, Reduce, (228, 5), 2, null, 
null);
-            Add_Error (Table.States (897));
-            Table.States (897).Kernel := To_Vector (((228, 34, 2, False), 
(228, 34, 0, False)));
-            Table.States (897).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 2)));
-            Add_Action (Table.States (898), (77, 83), (180, 0), 1, null, null);
-            Table.States (898).Kernel := To_Vector ((0 => (180, 104, 0, 
False)));
-            Table.States (898).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 180, 1)));
-            Add_Action (Table.States (899), (77, 83), (180, 1), 1, null, null);
-            Table.States (899).Kernel := To_Vector ((0 => (180, 106, 0, 
False)));
+            Table.States (897).Kernel := To_Vector ((0 => (223, 96, 0, 
False)));
+            Table.States (897).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 223, 6)));
+            Table.States (898).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (898), 10, 1052);
+            Add_Action (Table.States (898), 74, Reduce, (228, 5), 2, null, 
null);
+            Add_Action (Table.States (898), 96, Reduce, (228, 5), 2, null, 
null);
+            Table.States (898).Kernel := To_Vector (((228, 34, 2, False), 
(228, 34, 0, False)));
+            Table.States (898).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 2)));
+            Table.States (899).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (899), (77, 83), (180, 0), 1, null, null);
+            Table.States (899).Kernel := To_Vector ((0 => (180, 104, 0, 
False)));
             Table.States (899).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 180, 1)));
-            Add_Action (Table.States (900), (77, 83), (181, 1), 1, null, null);
-            Table.States (900).Kernel := To_Vector ((0 => (181, 180, 0, 
False)));
-            Table.States (900).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 181, 1)));
-            Add_Action (Table.States (901), 77, 1053);
-            Add_Action (Table.States (901), 83, 1054);
-            Add_Error (Table.States (901));
-            Table.States (901).Kernel := To_Vector (((181, 181, 2, True), 
(183, 181, 1, False)));
-            Table.States (901).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1053)));
-            Add_Action (Table.States (902), 40, 483);
-            Add_Action (Table.States (902), 104, 119);
-            Add_Action (Table.States (902), 105, 33);
-            Add_Action (Table.States (902), 106, 34);
-            Add_Error (Table.States (902));
-            Add_Goto (Table.States (902), 128, 41);
-            Add_Goto (Table.States (902), 239, 484);
-            Add_Goto (Table.States (902), 272, 92);
-            Add_Goto (Table.States (902), 293, 97);
-            Add_Goto (Table.States (902), 314, 1055);
-            Table.States (902).Kernel := To_Vector ((0 => (259, 39, 4, 
False)));
-            Table.States (902).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (900).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (900), (77, 83), (180, 1), 1, null, null);
+            Table.States (900).Kernel := To_Vector ((0 => (180, 106, 0, 
False)));
+            Table.States (900).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 180, 1)));
+            Table.States (901).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (901), (77, 83), (181, 1), 1, null, null);
+            Table.States (901).Kernel := To_Vector ((0 => (181, 180, 0, 
False)));
+            Table.States (901).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 181, 1)));
+            Table.States (902).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (902), 77, 1053);
+            Add_Action (Table.States (902), 83, 1054);
+            Table.States (902).Kernel := To_Vector (((181, 181, 2, True), 
(183, 181, 1, False)));
+            Table.States (902).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1053)));
+            Table.States (903).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (903), 40, 483);
             Add_Action (Table.States (903), 104, 119);
             Add_Action (Table.States (903), 105, 33);
             Add_Action (Table.States (903), 106, 34);
-            Add_Error (Table.States (903));
+            Table.States (903).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (903), 128, 41);
-            Add_Goto (Table.States (903), 239, 1056);
+            Add_Goto (Table.States (903), 239, 484);
             Add_Goto (Table.States (903), 272, 92);
             Add_Goto (Table.States (903), 293, 97);
-            Table.States (903).Kernel := To_Vector (((162, 39, 4, False), 
(162, 39, 1, False)));
+            Add_Goto (Table.States (903), 314, 1055);
+            Table.States (903).Kernel := To_Vector ((0 => (259, 39, 4, 
False)));
             Table.States (903).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (904), 74, 337);
-            Add_Action (Table.States (904), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (904));
-            Add_Goto (Table.States (904), 122, 1057);
-            Table.States (904).Kernel := To_Vector ((0 => (260, 49, 1, 
False)));
-            Table.States (904).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (905), (74, 96), (326, 7), 2, null, null);
-            Table.States (905).Kernel := To_Vector ((0 => (326, 280, 0, 
False)));
-            Table.States (905).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 2)));
-            Add_Action (Table.States (906), 96, 1058);
-            Add_Error (Table.States (906));
-            Table.States (906).Kernel := To_Vector ((0 => (206, 122, 1, 
False)));
-            Table.States (906).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1058)));
-            Add_Action (Table.States (907), 96, 1059);
-            Add_Error (Table.States (907));
-            Table.States (907).Kernel := To_Vector ((0 => (245, 122, 1, 
False)));
-            Table.States (907).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1059)));
-            Add_Action (Table.States (908), 96, 1060);
-            Add_Error (Table.States (908));
+            Table.States (904).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (904), 104, 119);
+            Add_Action (Table.States (904), 105, 33);
+            Add_Action (Table.States (904), 106, 34);
+            Table.States (904).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (904), 128, 41);
+            Add_Goto (Table.States (904), 239, 1056);
+            Add_Goto (Table.States (904), 272, 92);
+            Add_Goto (Table.States (904), 293, 97);
+            Table.States (904).Kernel := To_Vector (((162, 39, 4, False), 
(162, 39, 1, False)));
+            Table.States (904).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (905).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (905), 74, 337);
+            Add_Action (Table.States (905), 96, Reduce, (122, 1), 0, null, 
null);
+            Table.States (905).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (905), 122, 1057);
+            Table.States (905).Kernel := To_Vector ((0 => (260, 49, 1, 
False)));
+            Table.States (905).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (906).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (906), (74, 96), (326, 7), 2, null, null);
+            Table.States (906).Kernel := To_Vector ((0 => (326, 280, 0, 
False)));
+            Table.States (906).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 2)));
+            Table.States (907).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (907), 96, 1058);
+            Table.States (907).Kernel := To_Vector ((0 => (206, 122, 1, 
False)));
+            Table.States (907).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1058)));
+            Table.States (908).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (908), 96, 1059);
             Table.States (908).Kernel := To_Vector ((0 => (245, 122, 1, 
False)));
-            Table.States (908).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1060)));
-            Add_Action (Table.States (909), 21, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (909), 35, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (909), 56, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (909), 74, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (909), 76, 235);
-            Add_Action (Table.States (909), 77, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (909), 82, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (909), 84, 237);
-            Add_Action (Table.States (909), 96, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (909), 101, 239);
-            Add_Action (Table.States (909), 102, 240);
-            Add_Error (Table.States (909));
-            Add_Goto (Table.States (909), 115, 241);
-            Add_Goto (Table.States (909), 322, 242);
-            Table.States (909).Kernel := To_Vector (((114, 239, 0, False), 
(128, 239, 2, True), (239, 239, 5, True),
+            Table.States (908).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1059)));
+            Table.States (909).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (909), 96, 1060);
+            Table.States (909).Kernel := To_Vector ((0 => (245, 122, 1, 
False)));
+            Table.States (909).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1060)));
+            Table.States (910).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (910), 21, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (910), 35, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (910), 56, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (910), 74, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (910), 76, 235);
+            Add_Action (Table.States (910), 77, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (910), 82, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (910), 84, 237);
+            Add_Action (Table.States (910), 96, Reduce, (114, 2), 4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (910), 101, 239);
+            Add_Action (Table.States (910), 102, 240);
+            Table.States (910).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (910), 115, 241);
+            Add_Goto (Table.States (910), 322, 242);
+            Table.States (910).Kernel := To_Vector (((114, 239, 0, False), 
(128, 239, 2, True), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (909).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 114, 4)));
-            Add_Action (Table.States (910), 58, 317);
-            Add_Action (Table.States (910), 76, 431);
-            Add_Error (Table.States (910));
-            Add_Goto (Table.States (910), 199, 319);
-            Add_Goto (Table.States (910), 252, 1061);
-            Add_Goto (Table.States (910), 291, 321);
-            Table.States (910).Kernel := To_Vector ((0 => (114, 29, 1, True)));
-            Table.States (910).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 58, 317)));
-            Table.States (910).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (911), 21, Reduce, (253, 1), 0, null, 
null);
-            Add_Action (Table.States (911), 35, Reduce, (253, 1), 0, null, 
null);
-            Add_Action (Table.States (911), 56, Reduce, (253, 1), 0, null, 
null);
-            Add_Action (Table.States (911), 74, Reduce, (253, 1), 0, null, 
null);
+            Table.States (910).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 114, 4)));
+            Table.States (911).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (911), 58, 317);
             Add_Action (Table.States (911), 76, 431);
-            Add_Action (Table.States (911), 77, Reduce, (253, 1), 0, null, 
null);
-            Add_Action (Table.States (911), 82, Reduce, (253, 1), 0, null, 
null);
-            Add_Action (Table.States (911), 96, Reduce, (253, 1), 0, null, 
null);
-            Add_Error (Table.States (911));
-            Add_Goto (Table.States (911), 199, 344);
-            Add_Goto (Table.States (911), 253, 1062);
-            Table.States (911).Kernel := To_Vector ((0 => (114, 50, 0, 
False)));
-            Table.States (911).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 253, 0)));
-            Add_Action (Table.States (912), 74, 337);
-            Add_Action (Table.States (912), 76, 235);
-            Add_Action (Table.States (912), 84, 237);
-            Add_Action (Table.States (912), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Action (Table.States (912), 101, 239);
-            Add_Action (Table.States (912), 102, 240);
-            Add_Error (Table.States (912));
-            Add_Goto (Table.States (912), 115, 241);
-            Add_Goto (Table.States (912), 122, 1063);
-            Add_Goto (Table.States (912), 322, 242);
-            Table.States (912).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
+            Table.States (911).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (911), 199, 319);
+            Add_Goto (Table.States (911), 252, 1061);
+            Add_Goto (Table.States (911), 291, 321);
+            Table.States (911).Kernel := To_Vector ((0 => (114, 29, 1, True)));
+            Table.States (911).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 58, 317)));
+            Table.States (911).Minimal_Complete_Actions_Recursive := True;
+            Table.States (912).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (912), 21, Reduce, (253, 1), 0, null, 
null);
+            Add_Action (Table.States (912), 35, Reduce, (253, 1), 0, null, 
null);
+            Add_Action (Table.States (912), 56, Reduce, (253, 1), 0, null, 
null);
+            Add_Action (Table.States (912), 74, Reduce, (253, 1), 0, null, 
null);
+            Add_Action (Table.States (912), 76, 431);
+            Add_Action (Table.States (912), 77, Reduce, (253, 1), 0, null, 
null);
+            Add_Action (Table.States (912), 82, Reduce, (253, 1), 0, null, 
null);
+            Add_Action (Table.States (912), 96, Reduce, (253, 1), 0, null, 
null);
+            Table.States (912).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (912), 199, 344);
+            Add_Goto (Table.States (912), 253, 1062);
+            Table.States (912).Kernel := To_Vector ((0 => (114, 50, 0, 
False)));
+            Table.States (912).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 253, 0)));
+            Table.States (913).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (913), 74, 337);
+            Add_Action (Table.States (913), 76, 235);
+            Add_Action (Table.States (913), 84, 237);
+            Add_Action (Table.States (913), 96, Reduce, (122, 1), 0, null, 
null);
+            Add_Action (Table.States (913), 101, 239);
+            Add_Action (Table.States (913), 102, 240);
+            Table.States (913).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (913), 115, 241);
+            Add_Goto (Table.States (913), 122, 1063);
+            Add_Goto (Table.States (913), 322, 242);
+            Table.States (913).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (245, 239, 1, False), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (912).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (913), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
+            Table.States (913).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (914).Action_List.Set_Capacity (46);
+            Add_Action (Table.States (914), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (133, 1), 6, block_statement_1'Access, 
block_statement_1_check'Access);
-            Table.States (913).Kernel := To_Vector ((0 => (133, 96, 0, 
False)));
-            Table.States (913).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 133, 6)));
-            Add_Action (Table.States (914), (79, 87), (184, 1), 1, null, null);
-            Table.States (914).Kernel := To_Vector ((0 => (184, 44, 0, 
False)));
-            Table.States (914).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 184, 1)));
-            Add_Action (Table.States (915), 76, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (915), 79, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (915), 81, 1064);
-            Add_Action (Table.States (915), 84, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (915), 87, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (915), 101, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (915), 102, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Error (Table.States (915));
-            Table.States (915).Kernel := To_Vector (((187, 104, 3, False), 
(239, 104, 0, False)));
-            Table.States (915).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 1)));
-            Add_Action (Table.States (916), (79, 87), (185, 1), 1, null, null);
-            Table.States (916).Kernel := To_Vector ((0 => (185, 184, 0, 
False)));
-            Table.States (916).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 185, 1)));
-            Add_Action (Table.States (917), 79, 1065);
-            Add_Action (Table.States (917), 87, 1066);
-            Add_Error (Table.States (917));
-            Table.States (917).Kernel := To_Vector (((185, 185, 2, True), 
(187, 185, 1, False)));
-            Table.States (917).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 87, 1066)));
-            Add_Action (Table.States (918), 76, 235);
-            Add_Action (Table.States (918), 79, Reduce, (184, 0), 1, null, 
null);
-            Add_Action (Table.States (918), 84, 237);
-            Add_Action (Table.States (918), 87, Reduce, (184, 0), 1, null, 
null);
-            Add_Action (Table.States (918), 101, 239);
-            Add_Action (Table.States (918), 102, 240);
-            Add_Error (Table.States (918));
-            Add_Goto (Table.States (918), 115, 241);
-            Add_Goto (Table.States (918), 322, 242);
-            Table.States (918).Kernel := To_Vector (((128, 239, 2, True), 
(184, 239, 0, False), (239, 239, 5, True),
+            Table.States (914).Kernel := To_Vector ((0 => (133, 96, 0, 
False)));
+            Table.States (914).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 133, 6)));
+            Table.States (915).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (915), (79, 87), (184, 1), 1, null, null);
+            Table.States (915).Kernel := To_Vector ((0 => (184, 44, 0, 
False)));
+            Table.States (915).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 184, 1)));
+            Table.States (916).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (916), 76, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (916), 79, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (916), 81, 1064);
+            Add_Action (Table.States (916), 84, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (916), 87, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (916), 101, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (916), 102, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
+            Table.States (916).Kernel := To_Vector (((187, 104, 3, False), 
(239, 104, 0, False)));
+            Table.States (916).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 1)));
+            Table.States (917).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (917), (79, 87), (185, 1), 1, null, null);
+            Table.States (917).Kernel := To_Vector ((0 => (185, 184, 0, 
False)));
+            Table.States (917).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 185, 1)));
+            Table.States (918).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (918), 79, 1065);
+            Add_Action (Table.States (918), 87, 1066);
+            Table.States (918).Kernel := To_Vector (((185, 185, 2, True), 
(187, 185, 1, False)));
+            Table.States (918).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 87, 1066)));
+            Table.States (919).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (919), 76, 235);
+            Add_Action (Table.States (919), 79, Reduce, (184, 0), 1, null, 
null);
+            Add_Action (Table.States (919), 84, 237);
+            Add_Action (Table.States (919), 87, Reduce, (184, 0), 1, null, 
null);
+            Add_Action (Table.States (919), 101, 239);
+            Add_Action (Table.States (919), 102, 240);
+            Table.States (919).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (919), 115, 241);
+            Add_Goto (Table.States (919), 322, 242);
+            Table.States (919).Kernel := To_Vector (((128, 239, 2, True), 
(184, 239, 0, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (918).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 184, 1)));
-            Add_Action (Table.States (919), (24, 72), (188, 0), 2, null, null);
-            Table.States (919).Kernel := To_Vector ((0 => (188, 187, 0, 
True)));
-            Table.States (919).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 188, 2)));
-            Table.States (919).Minimal_Complete_Actions_Recursive := True;
-            Add_Action (Table.States (920), 96, Reduce, (220, 1), 0, null, 
null);
-            Add_Action (Table.States (920), 104, 149);
-            Add_Error (Table.States (920));
-            Add_Goto (Table.States (920), 220, 1067);
-            Table.States (920).Kernel := To_Vector ((0 => (133, 24, 1, 
False)));
-            Table.States (920).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
-            Add_Action (Table.States (921), 96, 1068);
-            Add_Error (Table.States (921));
-            Table.States (921).Kernel := To_Vector ((0 => (232, 220, 1, 
False)));
-            Table.States (921).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1068)));
-            Add_Action (Table.States (922), 96, Reduce, (220, 1), 0, null, 
null);
-            Add_Action (Table.States (922), 104, 149);
-            Add_Error (Table.States (922));
-            Add_Goto (Table.States (922), 220, 1069);
-            Table.States (922).Kernel := To_Vector ((0 => (232, 37, 1, 
False)));
-            Table.States (922).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
-            Add_Action (Table.States (923), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
+            Table.States (919).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 184, 1)));
+            Table.States (920).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (920), (24, 72), (188, 0), 2, 
exception_handler_list_0'Access, null);
+            Table.States (920).Kernel := To_Vector ((0 => (188, 187, 0, 
True)));
+            Table.States (920).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 188, 2)));
+            Table.States (920).Minimal_Complete_Actions_Recursive := True;
+            Table.States (921).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (921), 96, Reduce, (220, 1), 0, null, 
null);
+            Add_Action (Table.States (921), 104, 149);
+            Table.States (921).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (921), 220, 1067);
+            Table.States (921).Kernel := To_Vector ((0 => (133, 24, 1, 
False)));
+            Table.States (921).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (922).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (922), 96, 1068);
+            Table.States (922).Kernel := To_Vector ((0 => (232, 220, 1, 
False)));
+            Table.States (922).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1068)));
+            Table.States (923).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (923), 96, Reduce, (220, 1), 0, null, 
null);
+            Add_Action (Table.States (923), 104, 149);
+            Table.States (923).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (923), 220, 1069);
+            Table.States (923).Kernel := To_Vector ((0 => (232, 37, 1, 
False)));
+            Table.States (923).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (924).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (924), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (157, 9), 6,
             declaration_9'Access, null);
-            Table.States (923).Kernel := To_Vector ((0 => (157, 96, 0, 
False)));
-            Table.States (923).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 6)));
-            Add_Action (Table.States (924), 7, Reduce, (241, 0), 2, null, 
null);
-            Add_Action (Table.States (924), 104, 119);
-            Add_Action (Table.States (924), 105, 33);
-            Add_Action (Table.States (924), 106, 34);
-            Add_Error (Table.States (924));
-            Add_Goto (Table.States (924), 128, 41);
-            Add_Goto (Table.States (924), 239, 772);
-            Add_Goto (Table.States (924), 272, 92);
-            Add_Goto (Table.States (924), 293, 97);
-            Table.States (924).Kernel := To_Vector (((241, 41, 0, False), 
(314, 41, 5, False), (314, 41, 1, False)));
-            Table.States (924).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 2)));
-            Add_Action (Table.States (925), 3, 121);
-            Add_Action (Table.States (925), 39, 122);
-            Add_Action (Table.States (925), 40, 123);
-            Add_Action (Table.States (925), 41, 124);
-            Add_Action (Table.States (925), 52, 125);
-            Add_Action (Table.States (925), 74, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (925), 76, 126);
-            Add_Action (Table.States (925), 94, 127);
-            Add_Action (Table.States (925), 95, 128);
-            Add_Action (Table.States (925), 96, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (925), 103, 129);
+            Table.States (924).Kernel := To_Vector ((0 => (157, 96, 0, 
False)));
+            Table.States (924).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 6)));
+            Table.States (925).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (925), 7, Reduce, (241, 0), 2, null, 
null);
             Add_Action (Table.States (925), 104, 119);
             Add_Action (Table.States (925), 105, 33);
             Add_Action (Table.States (925), 106, 34);
-            Add_Error (Table.States (925));
-            Add_Goto (Table.States (925), 117, 130);
+            Table.States (925).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (925), 128, 41);
-            Add_Goto (Table.States (925), 191, 131);
-            Add_Goto (Table.States (925), 192, 1070);
-            Add_Goto (Table.States (925), 197, 133);
-            Add_Goto (Table.States (925), 239, 134);
-            Add_Goto (Table.States (925), 258, 135);
+            Add_Goto (Table.States (925), 239, 773);
             Add_Goto (Table.States (925), 272, 92);
-            Add_Goto (Table.States (925), 275, 136);
-            Add_Goto (Table.States (925), 282, 137);
-            Add_Goto (Table.States (925), 283, 138);
-            Add_Goto (Table.States (925), 284, 139);
-            Add_Goto (Table.States (925), 285, 140);
-            Add_Goto (Table.States (925), 286, 141);
-            Add_Goto (Table.States (925), 287, 142);
             Add_Goto (Table.States (925), 293, 97);
-            Add_Goto (Table.States (925), 301, 143);
-            Add_Goto (Table.States (925), 320, 144);
-            Add_Goto (Table.States (925), 321, 145);
-            Add_Goto (Table.States (925), 330, 146);
-            Table.States (925).Kernel := To_Vector ((0 => (244, 82, 1, 
False)));
-            Table.States (925).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (926), 96, 1071);
-            Add_Error (Table.States (926));
-            Table.States (926).Kernel := To_Vector ((0 => (244, 122, 1, 
False)));
-            Table.States (926).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1071)));
-            Add_Action (Table.States (927), 3, 121);
-            Add_Action (Table.States (927), 39, 122);
-            Add_Action (Table.States (927), 40, 123);
-            Add_Action (Table.States (927), 41, 124);
-            Add_Action (Table.States (927), 52, 125);
-            Add_Action (Table.States (927), 74, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (927), 76, 126);
-            Add_Action (Table.States (927), 94, 127);
-            Add_Action (Table.States (927), 95, 128);
-            Add_Action (Table.States (927), 96, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (927), 103, 129);
-            Add_Action (Table.States (927), 104, 119);
-            Add_Action (Table.States (927), 105, 33);
-            Add_Action (Table.States (927), 106, 34);
-            Add_Error (Table.States (927));
-            Add_Goto (Table.States (927), 117, 130);
-            Add_Goto (Table.States (927), 128, 41);
-            Add_Goto (Table.States (927), 191, 131);
-            Add_Goto (Table.States (927), 192, 1072);
-            Add_Goto (Table.States (927), 197, 133);
-            Add_Goto (Table.States (927), 239, 134);
-            Add_Goto (Table.States (927), 258, 135);
-            Add_Goto (Table.States (927), 272, 92);
-            Add_Goto (Table.States (927), 275, 136);
-            Add_Goto (Table.States (927), 282, 137);
-            Add_Goto (Table.States (927), 283, 138);
-            Add_Goto (Table.States (927), 284, 139);
-            Add_Goto (Table.States (927), 285, 140);
-            Add_Goto (Table.States (927), 286, 141);
-            Add_Goto (Table.States (927), 287, 142);
-            Add_Goto (Table.States (927), 293, 97);
-            Add_Goto (Table.States (927), 301, 143);
-            Add_Goto (Table.States (927), 320, 144);
-            Add_Goto (Table.States (927), 321, 145);
-            Add_Goto (Table.States (927), 330, 146);
-            Table.States (927).Kernel := To_Vector ((0 => (244, 82, 1, 
False)));
-            Table.States (927).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (928), 96, 1073);
-            Add_Error (Table.States (928));
-            Table.States (928).Kernel := To_Vector ((0 => (244, 122, 1, 
False)));
-            Table.States (928).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1073)));
-            Add_Action (Table.States (929), 3, 121);
-            Add_Action (Table.States (929), 39, 122);
-            Add_Action (Table.States (929), 40, 123);
-            Add_Action (Table.States (929), 41, 124);
-            Add_Action (Table.States (929), 52, 125);
-            Add_Action (Table.States (929), 74, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (929), 76, 126);
-            Add_Action (Table.States (929), 94, 127);
-            Add_Action (Table.States (929), 95, 128);
-            Add_Action (Table.States (929), 96, Reduce, (192, 1), 0, null, 
null);
-            Add_Action (Table.States (929), 103, 129);
-            Add_Action (Table.States (929), 104, 119);
-            Add_Action (Table.States (929), 105, 33);
-            Add_Action (Table.States (929), 106, 34);
-            Add_Error (Table.States (929));
-            Add_Goto (Table.States (929), 117, 130);
-            Add_Goto (Table.States (929), 128, 41);
-            Add_Goto (Table.States (929), 191, 131);
-            Add_Goto (Table.States (929), 192, 1074);
-            Add_Goto (Table.States (929), 197, 133);
-            Add_Goto (Table.States (929), 239, 134);
-            Add_Goto (Table.States (929), 258, 135);
-            Add_Goto (Table.States (929), 272, 92);
-            Add_Goto (Table.States (929), 275, 136);
-            Add_Goto (Table.States (929), 282, 137);
-            Add_Goto (Table.States (929), 283, 138);
-            Add_Goto (Table.States (929), 284, 139);
-            Add_Goto (Table.States (929), 285, 140);
-            Add_Goto (Table.States (929), 286, 141);
-            Add_Goto (Table.States (929), 287, 142);
-            Add_Goto (Table.States (929), 293, 97);
-            Add_Goto (Table.States (929), 301, 143);
-            Add_Goto (Table.States (929), 320, 144);
-            Add_Goto (Table.States (929), 321, 145);
-            Add_Goto (Table.States (929), 330, 146);
-            Table.States (929).Kernel := To_Vector ((0 => (244, 82, 1, 
False)));
-            Table.States (929).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (930), 96, 1075);
-            Add_Error (Table.States (930));
-            Table.States (930).Kernel := To_Vector ((0 => (244, 122, 1, 
False)));
-            Table.States (930).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1075)));
-            Add_Action (Table.States (931), 74, Reduce, (253, 1), 0, null, 
null);
-            Add_Action (Table.States (931), 76, 431);
-            Add_Action (Table.States (931), 96, Reduce, (253, 1), 0, null, 
null);
-            Add_Error (Table.States (931));
-            Add_Goto (Table.States (931), 199, 344);
-            Add_Goto (Table.States (931), 253, 1076);
-            Table.States (931).Kernel := To_Vector ((0 => (179, 77, 1, 
False)));
-            Table.States (931).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 253, 0)));
-            Add_Action (Table.States (932), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
+            Table.States (925).Kernel := To_Vector (((241, 41, 0, False), 
(314, 41, 5, False), (314, 41, 1, False)));
+            Table.States (925).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 2)));
+            Table.States (926).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (926), 3, 121);
+            Add_Action (Table.States (926), 39, 122);
+            Add_Action (Table.States (926), 40, 123);
+            Add_Action (Table.States (926), 41, 124);
+            Add_Action (Table.States (926), 52, 125);
+            Add_Action (Table.States (926), 74, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (926), 76, 126);
+            Add_Action (Table.States (926), 94, 127);
+            Add_Action (Table.States (926), 95, 128);
+            Add_Action (Table.States (926), 96, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (926), 103, 129);
+            Add_Action (Table.States (926), 104, 119);
+            Add_Action (Table.States (926), 105, 33);
+            Add_Action (Table.States (926), 106, 34);
+            Table.States (926).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (926), 117, 130);
+            Add_Goto (Table.States (926), 128, 41);
+            Add_Goto (Table.States (926), 191, 131);
+            Add_Goto (Table.States (926), 192, 1070);
+            Add_Goto (Table.States (926), 197, 133);
+            Add_Goto (Table.States (926), 239, 134);
+            Add_Goto (Table.States (926), 258, 135);
+            Add_Goto (Table.States (926), 272, 92);
+            Add_Goto (Table.States (926), 275, 136);
+            Add_Goto (Table.States (926), 282, 137);
+            Add_Goto (Table.States (926), 283, 138);
+            Add_Goto (Table.States (926), 284, 139);
+            Add_Goto (Table.States (926), 285, 140);
+            Add_Goto (Table.States (926), 286, 141);
+            Add_Goto (Table.States (926), 287, 142);
+            Add_Goto (Table.States (926), 293, 97);
+            Add_Goto (Table.States (926), 301, 143);
+            Add_Goto (Table.States (926), 320, 144);
+            Add_Goto (Table.States (926), 321, 145);
+            Add_Goto (Table.States (926), 330, 146);
+            Table.States (926).Kernel := To_Vector ((0 => (244, 82, 1, 
False)));
+            Table.States (926).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (927).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (927), 96, 1071);
+            Table.States (927).Kernel := To_Vector ((0 => (244, 122, 1, 
False)));
+            Table.States (927).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1071)));
+            Table.States (928).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (928), 3, 121);
+            Add_Action (Table.States (928), 39, 122);
+            Add_Action (Table.States (928), 40, 123);
+            Add_Action (Table.States (928), 41, 124);
+            Add_Action (Table.States (928), 52, 125);
+            Add_Action (Table.States (928), 74, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (928), 76, 126);
+            Add_Action (Table.States (928), 94, 127);
+            Add_Action (Table.States (928), 95, 128);
+            Add_Action (Table.States (928), 96, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (928), 103, 129);
+            Add_Action (Table.States (928), 104, 119);
+            Add_Action (Table.States (928), 105, 33);
+            Add_Action (Table.States (928), 106, 34);
+            Table.States (928).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (928), 117, 130);
+            Add_Goto (Table.States (928), 128, 41);
+            Add_Goto (Table.States (928), 191, 131);
+            Add_Goto (Table.States (928), 192, 1072);
+            Add_Goto (Table.States (928), 197, 133);
+            Add_Goto (Table.States (928), 239, 134);
+            Add_Goto (Table.States (928), 258, 135);
+            Add_Goto (Table.States (928), 272, 92);
+            Add_Goto (Table.States (928), 275, 136);
+            Add_Goto (Table.States (928), 282, 137);
+            Add_Goto (Table.States (928), 283, 138);
+            Add_Goto (Table.States (928), 284, 139);
+            Add_Goto (Table.States (928), 285, 140);
+            Add_Goto (Table.States (928), 286, 141);
+            Add_Goto (Table.States (928), 287, 142);
+            Add_Goto (Table.States (928), 293, 97);
+            Add_Goto (Table.States (928), 301, 143);
+            Add_Goto (Table.States (928), 320, 144);
+            Add_Goto (Table.States (928), 321, 145);
+            Add_Goto (Table.States (928), 330, 146);
+            Table.States (928).Kernel := To_Vector ((0 => (244, 82, 1, 
False)));
+            Table.States (928).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (929).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (929), 96, 1073);
+            Table.States (929).Kernel := To_Vector ((0 => (244, 122, 1, 
False)));
+            Table.States (929).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1073)));
+            Table.States (930).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (930), 3, 121);
+            Add_Action (Table.States (930), 39, 122);
+            Add_Action (Table.States (930), 40, 123);
+            Add_Action (Table.States (930), 41, 124);
+            Add_Action (Table.States (930), 52, 125);
+            Add_Action (Table.States (930), 74, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (930), 76, 126);
+            Add_Action (Table.States (930), 94, 127);
+            Add_Action (Table.States (930), 95, 128);
+            Add_Action (Table.States (930), 96, Reduce, (192, 1), 0, null, 
null);
+            Add_Action (Table.States (930), 103, 129);
+            Add_Action (Table.States (930), 104, 119);
+            Add_Action (Table.States (930), 105, 33);
+            Add_Action (Table.States (930), 106, 34);
+            Table.States (930).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (930), 117, 130);
+            Add_Goto (Table.States (930), 128, 41);
+            Add_Goto (Table.States (930), 191, 131);
+            Add_Goto (Table.States (930), 192, 1074);
+            Add_Goto (Table.States (930), 197, 133);
+            Add_Goto (Table.States (930), 239, 134);
+            Add_Goto (Table.States (930), 258, 135);
+            Add_Goto (Table.States (930), 272, 92);
+            Add_Goto (Table.States (930), 275, 136);
+            Add_Goto (Table.States (930), 282, 137);
+            Add_Goto (Table.States (930), 283, 138);
+            Add_Goto (Table.States (930), 284, 139);
+            Add_Goto (Table.States (930), 285, 140);
+            Add_Goto (Table.States (930), 286, 141);
+            Add_Goto (Table.States (930), 287, 142);
+            Add_Goto (Table.States (930), 293, 97);
+            Add_Goto (Table.States (930), 301, 143);
+            Add_Goto (Table.States (930), 320, 144);
+            Add_Goto (Table.States (930), 321, 145);
+            Add_Goto (Table.States (930), 330, 146);
+            Table.States (930).Kernel := To_Vector ((0 => (244, 82, 1, 
False)));
+            Table.States (930).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (931).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (931), 96, 1075);
+            Table.States (931).Kernel := To_Vector ((0 => (244, 122, 1, 
False)));
+            Table.States (931).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1075)));
+            Table.States (932).Action_List.Set_Capacity (63);
+            Add_Action (Table.States (932), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
+            88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (129, 0), 4, null, null);
+            Table.States (932).Kernel := To_Vector ((0 => (129, 77, 0, 
False)));
+            Table.States (932).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 129, 4)));
+            Table.States (933).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (933), 74, Reduce, (253, 1), 0, null, 
null);
+            Add_Action (Table.States (933), 76, 431);
+            Add_Action (Table.States (933), 96, Reduce, (253, 1), 0, null, 
null);
+            Table.States (933).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (933), 199, 344);
+            Add_Goto (Table.States (933), 253, 1076);
+            Table.States (933).Kernel := To_Vector ((0 => (179, 77, 1, 
False)));
+            Table.States (933).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 253, 0)));
+            Table.States (934).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (934), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (179, 1), 6,
             entry_declaration_1'Access, null);
-            Table.States (932).Kernel := To_Vector ((0 => (179, 96, 0, 
False)));
-            Table.States (932).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 179, 6)));
-            Add_Action (Table.States (933), 74, 337);
-            Add_Action (Table.States (933), 76, 235);
-            Add_Action (Table.States (933), 84, 237);
-            Add_Action (Table.States (933), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Action (Table.States (933), 101, 239);
-            Add_Action (Table.States (933), 102, 240);
-            Add_Error (Table.States (933));
-            Add_Goto (Table.States (933), 115, 241);
-            Add_Goto (Table.States (933), 122, 1077);
-            Add_Goto (Table.States (933), 322, 242);
-            Table.States (933).Kernel := To_Vector (((128, 239, 2, True), 
(213, 239, 1, False), (239, 239, 5, True),
+            Table.States (934).Kernel := To_Vector ((0 => (179, 96, 0, 
False)));
+            Table.States (934).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 179, 6)));
+            Table.States (935).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (935), 74, 337);
+            Add_Action (Table.States (935), 76, 235);
+            Add_Action (Table.States (935), 84, 237);
+            Add_Action (Table.States (935), 96, Reduce, (122, 1), 0, null, 
null);
+            Add_Action (Table.States (935), 101, 239);
+            Add_Action (Table.States (935), 102, 240);
+            Table.States (935).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (935), 115, 241);
+            Add_Goto (Table.States (935), 122, 1077);
+            Add_Goto (Table.States (935), 322, 242);
+            Table.States (935).Kernel := To_Vector (((128, 239, 2, True), 
(213, 239, 1, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (933).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (934), 74, 337);
-            Add_Action (Table.States (934), 76, 235);
-            Add_Action (Table.States (934), 84, 237);
-            Add_Action (Table.States (934), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Action (Table.States (934), 101, 239);
-            Add_Action (Table.States (934), 102, 240);
-            Add_Error (Table.States (934));
-            Add_Goto (Table.States (934), 115, 241);
-            Add_Goto (Table.States (934), 122, 1078);
-            Add_Goto (Table.States (934), 322, 242);
-            Table.States (934).Kernel := To_Vector (((128, 239, 2, True), 
(213, 239, 1, False), (239, 239, 5, True),
+            Table.States (935).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (936).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (936), 74, 337);
+            Add_Action (Table.States (936), 76, 235);
+            Add_Action (Table.States (936), 84, 237);
+            Add_Action (Table.States (936), 96, Reduce, (122, 1), 0, null, 
null);
+            Add_Action (Table.States (936), 101, 239);
+            Add_Action (Table.States (936), 102, 240);
+            Table.States (936).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (936), 115, 241);
+            Add_Goto (Table.States (936), 122, 1078);
+            Add_Goto (Table.States (936), 322, 242);
+            Table.States (936).Kernel := To_Vector (((128, 239, 2, True), 
(213, 239, 1, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
-            Table.States (934).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (935), (74, 96), (256, 1), 3, 
paren_expression_1'Access, null);
-            Table.States (935).Kernel := To_Vector ((0 => (256, 77, 0, 
False)));
-            Table.States (935).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 256, 3)));
-            Add_Action (Table.States (936), (74, 96), (256, 2), 3, 
paren_expression_2'Access, null);
-            Table.States (936).Kernel := To_Vector ((0 => (256, 77, 0, 
False)));
-            Table.States (936).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 256, 3)));
+            Table.States (936).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (937).Action_List.Set_Capacity (2);
             Add_Action (Table.States (937), (74, 96), (256, 0), 3, 
paren_expression_0'Access, null);
             Table.States (937).Kernel := To_Vector ((0 => (256, 77, 0, 
False)));
             Table.States (937).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 256, 3)));
+            Table.States (938).Action_List.Set_Capacity (40);
             Add_Action (Table.States (938), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (193, 0), 6,
             expression_function_declaration_0'Access, null);
             Table.States (938).Kernel := To_Vector ((0 => (193, 96, 0, 
False)));
             Table.States (938).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 6)));
+            Table.States (939).Action_List.Set_Capacity (40);
             Add_Action (Table.States (939), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (243, 0), 6,
             null_procedure_declaration_0'Access, null);
             Table.States (939).Kernel := To_Vector ((0 => (243, 96, 0, 
False)));
             Table.States (939).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 243, 6)));
+            Table.States (940).Action_List.Set_Capacity (40);
             Add_Action (Table.States (940), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (112, 0), 6,
             abstract_subprogram_declaration_0'Access, null);
             Table.States (940).Kernel := To_Vector ((0 => (112, 96, 0, 
False)));
             Table.States (940).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 112, 6)));
+            Table.States (941).Action_List.Set_Capacity (40);
             Add_Action (Table.States (941), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (308, 0), 6,
             subprogram_body_stub_0'Access, null);
             Table.States (941).Kernel := To_Vector ((0 => (308, 96, 0, 
False)));
             Table.States (941).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 308, 6)));
+            Table.States (942).Action_List.Set_Capacity (40);
             Add_Action (Table.States (942), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (311, 0), 6,
             subprogram_renaming_declaration_0'Access, null);
             Table.States (942).Kernel := To_Vector ((0 => (311, 96, 0, 
False)));
             Table.States (942).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 311, 6)));
+            Table.States (943).Action_List.Set_Capacity (24);
             Add_Action (Table.States (943), 4, 1);
             Add_Action (Table.States (943), 5, 2);
             Add_Action (Table.States (943), 13, Reduce, (132, 1), 0, null, 
null);
@@ -11154,7 +11833,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (943), 104, 360);
             Add_Action (Table.States (943), 105, 33);
             Add_Action (Table.States (943), 106, 34);
-            Add_Error (Table.States (943));
+            Table.States (943).Goto_List.Set_Capacity (32);
             Add_Goto (Table.States (943), 113, 36);
             Add_Goto (Table.States (943), 123, 38);
             Add_Goto (Table.States (943), 126, 39);
@@ -11189,26 +11868,30 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (943), 323, 114);
             Table.States (943).Kernel := To_Vector ((0 => (307, 13, 2, 
False)));
             Table.States (943).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 218, 0)));
+            Table.States (944).Action_List.Set_Capacity (2);
             Add_Action (Table.States (944), 96, Reduce, (220, 1), 0, null, 
null);
             Add_Action (Table.States (944), 104, 149);
-            Add_Error (Table.States (944));
+            Table.States (944).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (944), 220, 1080);
             Table.States (944).Kernel := To_Vector ((0 => (113, 24, 1, 
False)));
             Table.States (944).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (945).Action_List.Set_Capacity (2);
             Add_Action (Table.States (945), 79, 445);
             Add_Action (Table.States (945), 87, 1081);
-            Add_Error (Table.States (945));
             Table.States (945).Kernel := To_Vector (((137, 166, 1, False), 
(166, 166, 2, True)));
             Table.States (945).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 87, 1081)));
-            Add_Action (Table.States (946), 72, 761);
-            Add_Error (Table.States (946));
+            Table.States (946).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (946), 72, 762);
+            Table.States (946).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (946), 137, 1082);
             Table.States (946).Kernel := To_Vector ((0 => (138, 83, 2, True)));
-            Table.States (946).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 72, 761)));
+            Table.States (946).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 72, 762)));
             Table.States (946).Minimal_Complete_Actions_Recursive := True;
+            Table.States (947).Action_List.Set_Capacity (1);
             Add_Action (Table.States (947), (1 =>  77), (273, 0), 5, 
quantified_expression_0'Access, null);
             Table.States (947).Kernel := To_Vector ((0 => (273, 192, 0, 
False)));
             Table.States (947).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 273, 5)));
+            Table.States (948).Action_List.Set_Capacity (13);
             Add_Action (Table.States (948), 3, 121);
             Add_Action (Table.States (948), 39, 122);
             Add_Action (Table.States (948), 40, 123);
@@ -11222,7 +11905,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (948), 104, 119);
             Add_Action (Table.States (948), 105, 33);
             Add_Action (Table.States (948), 106, 34);
-            Add_Error (Table.States (948));
+            Table.States (948).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (948), 117, 130);
             Add_Goto (Table.States (948), 128, 41);
             Add_Goto (Table.States (948), 191, 131);
@@ -11245,6 +11928,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (948), 330, 146);
             Table.States (948).Kernel := To_Vector ((0 => (221, 22, 0, 
False)));
             Table.States (948).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (949).Action_List.Set_Capacity (13);
             Add_Action (Table.States (949), 3, 121);
             Add_Action (Table.States (949), 39, 122);
             Add_Action (Table.States (949), 40, 123);
@@ -11258,7 +11942,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (949), 104, 119);
             Add_Action (Table.States (949), 105, 33);
             Add_Action (Table.States (949), 106, 34);
-            Add_Error (Table.States (949));
+            Table.States (949).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (949), 117, 130);
             Add_Goto (Table.States (949), 128, 41);
             Add_Goto (Table.States (949), 191, 131);
@@ -11281,38 +11965,45 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (949), 330, 146);
             Table.States (949).Kernel := To_Vector ((0 => (172, 23, 1, 
False)));
             Table.States (949).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (950).Action_List.Set_Capacity (3);
             Add_Action (Table.States (950), (22, 23, 77), (173, 1), 1, null, 
null);
             Table.States (950).Kernel := To_Vector ((0 => (173, 172, 0, 
False)));
             Table.States (950).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 173, 1)));
+            Table.States (951).Action_List.Set_Capacity (3);
             Add_Action (Table.States (951), 22, 1085);
             Add_Action (Table.States (951), 23, 949);
             Add_Action (Table.States (951), 77, Reduce, (221, 2), 5, 
if_expression_2'Access, null);
-            Add_Error (Table.States (951));
+            Table.States (951).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (951), 172, 1086);
             Table.States (951).Kernel := To_Vector (((173, 173, 2, True), 
(221, 173, 1, False), (221, 173, 0, False)));
             Table.States (951).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 5)));
+            Table.States (952).Action_List.Set_Capacity (63);
             Add_Action (Table.States (952), (4, 5, 10, 13, 15, 17, 18, 20, 21, 
22, 23, 27, 28, 31, 32, 33, 35, 37, 38,
             40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87,
             88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 104, 
105, 106), (117, 0), 6, aggregate_0'Access,
             null);
             Table.States (952).Kernel := To_Vector ((0 => (117, 77, 0, 
False)));
             Table.States (952).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 117, 6)));
+            Table.States (953).Action_List.Set_Capacity (1);
             Add_Action (Table.States (953), 77, 1087);
-            Add_Error (Table.States (953));
             Table.States (953).Kernel := To_Vector ((0 => (277, 192, 1, 
False)));
             Table.States (953).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1087)));
+            Table.States (954).Action_List.Set_Capacity (2);
             Add_Action (Table.States (954), (24, 72), (140, 0), 4, 
case_statement_alternative_0'Access, null);
             Table.States (954).Kernel := To_Vector ((0 => (140, 300, 0, 
False)));
             Table.States (954).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 140, 4)));
+            Table.States (955).Action_List.Set_Capacity (46);
             Add_Action (Table.States (955), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (139, 0), 7, case_statement_0'Access, null);
             Table.States (955).Kernel := To_Vector ((0 => (139, 96, 0, 
False)));
             Table.States (955).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 139, 7)));
+            Table.States (956).Action_List.Set_Capacity (10);
             Add_Action (Table.States (956), (10, 21, 37, 42, 74, 77, 82, 83, 
87, 96), (314, 0), 4,
             subtype_indication_0'Access, null);
             Table.States (956).Kernel := To_Vector ((0 => (314, 155, 0, 
False)));
             Table.States (956).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 314, 4)));
+            Table.States (957).Action_List.Set_Capacity (26);
             Add_Action (Table.States (957), 10, Reduce, (258, 1), 1, null, 
null);
             Add_Action (Table.States (957), 33, Reduce, (258, 1), 1, null, 
null);
             Add_Action (Table.States (957), 38, Reduce, (258, 1), 1, null, 
null);
@@ -11339,7 +12030,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (957), 104, 119);
             Add_Action (Table.States (957), 105, 33);
             Add_Action (Table.States (957), 106, 34);
-            Add_Error (Table.States (957));
+            Table.States (957).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (957), 128, 41);
             Add_Goto (Table.States (957), 239, 1088);
             Add_Goto (Table.States (957), 272, 92);
@@ -11347,10 +12038,12 @@ package body Ada_Process_LALR_Main is
             Table.States (957).Kernel := To_Vector (((165, 41, 1, False), 
(258, 41, 0, False), (314, 41, 5, False),
             (314, 41, 1, False)));
             Table.States (957).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 1)));
+            Table.States (958).Action_List.Set_Capacity (10);
             Add_Action (Table.States (958), (10, 21, 37, 42, 74, 77, 82, 83, 
87, 96), (224, 0), 3,
             index_constraint_0'Access, null);
             Table.States (958).Kernel := To_Vector ((0 => (224, 77, 0, 
False)));
             Table.States (958).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 224, 3)));
+            Table.States (959).Action_List.Set_Capacity (11);
             Add_Action (Table.States (959), 3, 121);
             Add_Action (Table.States (959), 39, 122);
             Add_Action (Table.States (959), 40, 474);
@@ -11362,7 +12055,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (959), 104, 119);
             Add_Action (Table.States (959), 105, 33);
             Add_Action (Table.States (959), 106, 34);
-            Add_Error (Table.States (959));
+            Table.States (959).Goto_List.Set_Capacity (14);
             Add_Goto (Table.States (959), 117, 130);
             Add_Goto (Table.States (959), 128, 41);
             Add_Goto (Table.States (959), 167, 1089);
@@ -11380,26 +12073,28 @@ package body Ada_Process_LALR_Main is
             Table.States (959).Kernel := To_Vector ((0 => (168, 83, 1, True)));
             Table.States (959).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
             Table.States (959).Minimal_Complete_Actions_Recursive := True;
+         end Subr_16;
+         procedure Subr_17
+         is begin
+            Table.States (960).Action_List.Set_Capacity (6);
             Add_Action (Table.States (960), 37, Reduce, (230, 0), 6, null, 
null);
             Add_Action (Table.States (960), 76, 235);
             Add_Action (Table.States (960), 84, 237);
             Add_Action (Table.States (960), 87, Reduce, (230, 0), 6, null, 
null);
             Add_Action (Table.States (960), 101, 239);
             Add_Action (Table.States (960), 102, 240);
-            Add_Error (Table.States (960));
+            Table.States (960).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (960), 115, 241);
             Add_Goto (Table.States (960), 322, 242);
             Table.States (960).Kernel := To_Vector (((128, 239, 2, True), 
(230, 239, 0, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (960).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 230, 6)));
-         end Subr_16;
-         procedure Subr_17
-         is begin
+            Table.States (961).Action_List.Set_Capacity (1);
             Add_Action (Table.States (961), 96, 1090);
-            Add_Error (Table.States (961));
             Table.States (961).Kernel := To_Vector ((0 => (235, 192, 1, 
False)));
             Table.States (961).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1090)));
+            Table.States (962).Action_List.Set_Capacity (11);
             Add_Action (Table.States (962), 3, 121);
             Add_Action (Table.States (962), 39, 122);
             Add_Action (Table.States (962), 40, 123);
@@ -11411,7 +12106,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (962), 104, 119);
             Add_Action (Table.States (962), 105, 33);
             Add_Action (Table.States (962), 106, 34);
-            Add_Error (Table.States (962));
+            Table.States (962).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (962), 117, 130);
             Add_Goto (Table.States (962), 128, 41);
             Add_Goto (Table.States (962), 197, 133);
@@ -11425,93 +12120,105 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (962), 330, 146);
             Table.States (962).Kernel := To_Vector ((0 => (144, 12, 6, 
False)));
             Table.States (962).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (963).Action_List.Set_Capacity (1);
             Add_Action (Table.States (963), 54, 1092);
-            Add_Error (Table.States (963));
             Table.States (963).Kernel := To_Vector ((0 => (281, 24, 2, 
False)));
             Table.States (963).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 54, 1092)));
+            Table.States (964).Action_List.Set_Capacity (2);
             Add_Action (Table.States (964), (24, 104), (145, 0), 2, null, 
null);
             Table.States (964).Kernel := To_Vector ((0 => (145, 144, 0, 
True)));
             Table.States (964).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 145, 2)));
             Table.States (964).Minimal_Complete_Actions_Recursive := True;
+            Table.States (965).Action_List.Set_Capacity (3);
             Add_Action (Table.States (965), 77, Reduce, (254, 3), 4, 
parameter_specification_3'Access, null);
             Add_Action (Table.States (965), 82, 1093);
             Add_Action (Table.States (965), 96, Reduce, (254, 3), 4, 
parameter_specification_3'Access, null);
-            Add_Error (Table.States (965));
             Table.States (965).Kernel := To_Vector (((254, 114, 1, False), 
(254, 114, 0, False)));
             Table.States (965).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 4)));
+            Table.States (966).Action_List.Set_Capacity (4);
             Add_Action (Table.States (966), 40, 386);
             Add_Action (Table.States (966), 104, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (966), 105, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (966), 106, Reduce, (241, 1), 0, null, 
null);
-            Add_Error (Table.States (966));
+            Table.States (966).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (966), 241, 1094);
             Table.States (966).Kernel := To_Vector (((254, 236, 2, False), 
(254, 236, 1, False)));
             Table.States (966).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 0)));
+            Table.States (967).Action_List.Set_Capacity (40);
             Add_Action (Table.States (967), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (215, 2), 7,
             generic_renaming_declaration_2'Access, null);
             Table.States (967).Kernel := To_Vector ((0 => (215, 96, 0, 
False)));
             Table.States (967).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 215, 7)));
+            Table.States (968).Action_List.Set_Capacity (40);
             Add_Action (Table.States (968), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (215, 0), 7,
             generic_renaming_declaration_0'Access, null);
             Table.States (968).Kernel := To_Vector ((0 => (215, 96, 0, 
False)));
             Table.States (968).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 215, 7)));
+            Table.States (969).Action_List.Set_Capacity (40);
             Add_Action (Table.States (969), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (215, 1), 7,
             generic_renaming_declaration_1'Access, null);
             Table.States (969).Kernel := To_Vector ((0 => (215, 96, 0, 
False)));
             Table.States (969).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 215, 7)));
+            Table.States (970).Action_List.Set_Capacity (1);
             Add_Action (Table.States (970), (1 =>  39), (109, 0), 2, null, 
null);
             Table.States (970).Kernel := To_Vector ((0 => (109, 36, 0, 
False)));
             Table.States (970).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 109, 2)));
+            Table.States (971).Action_List.Set_Capacity (3);
             Add_Action (Table.States (971), 20, 1095);
             Add_Action (Table.States (971), 74, Reduce, (202, 7), 2, null, 
null);
             Add_Action (Table.States (971), 96, Reduce, (202, 7), 2, null, 
null);
-            Add_Error (Table.States (971));
             Table.States (971).Kernel := To_Vector (((202, 80, 2, False), 
(202, 80, 0, False)));
             Table.States (971).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 2)));
+            Table.States (972).Action_List.Set_Capacity (2);
             Add_Action (Table.States (972), (74, 96), (202, 5), 2, null, null);
             Table.States (972).Kernel := To_Vector ((0 => (202, 80, 0, 
False)));
             Table.States (972).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 2)));
+            Table.States (973).Action_List.Set_Capacity (2);
             Add_Action (Table.States (973), (74, 96), (202, 4), 2, null, null);
             Table.States (973).Kernel := To_Vector ((0 => (202, 80, 0, 
False)));
             Table.States (973).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 2)));
+            Table.States (974).Action_List.Set_Capacity (2);
             Add_Action (Table.States (974), (74, 96), (202, 3), 2, null, null);
             Table.States (974).Kernel := To_Vector ((0 => (202, 80, 0, 
False)));
             Table.States (974).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 2)));
+            Table.States (975).Action_List.Set_Capacity (1);
             Add_Action (Table.States (975), 96, 1096);
-            Add_Error (Table.States (975));
             Table.States (975).Kernel := To_Vector ((0 => (201, 122, 1, 
False)));
             Table.States (975).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1096)));
+            Table.States (976).Action_List.Set_Capacity (1);
             Add_Action (Table.States (976), 77, 1097);
-            Add_Error (Table.States (976));
             Table.States (976).Kernel := To_Vector ((0 => (202, 80, 1, 
False)));
             Table.States (976).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1097)));
+            Table.States (977).Action_List.Set_Capacity (3);
             Add_Action (Table.States (977), 104, 119);
             Add_Action (Table.States (977), 105, 33);
             Add_Action (Table.States (977), 106, 34);
-            Add_Error (Table.States (977));
+            Table.States (977).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (977), 128, 41);
             Add_Goto (Table.States (977), 239, 1098);
             Add_Goto (Table.States (977), 272, 92);
             Add_Goto (Table.States (977), 293, 97);
             Table.States (977).Kernel := To_Vector (((203, 39, 3, False), 
(203, 39, 1, False)));
             Table.States (977).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (978).Action_List.Set_Capacity (2);
             Add_Action (Table.States (978), (74, 96), (202, 0), 2, null, null);
             Table.States (978).Kernel := To_Vector ((0 => (202, 49, 0, 
False)));
             Table.States (978).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 2)));
+            Table.States (979).Action_List.Set_Capacity (1);
             Add_Action (Table.States (979), 96, 1099);
-            Add_Error (Table.States (979));
             Table.States (979).Kernel := To_Vector ((0 => (201, 122, 1, 
False)));
             Table.States (979).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1099)));
+            Table.States (980).Action_List.Set_Capacity (6);
             Add_Action (Table.States (980), 74, Reduce, (205, 1), 0, null, 
null);
             Add_Action (Table.States (980), 76, 1100);
             Add_Action (Table.States (980), 84, 237);
             Add_Action (Table.States (980), 96, Reduce, (205, 1), 0, null, 
null);
             Add_Action (Table.States (980), 101, 239);
             Add_Action (Table.States (980), 102, 240);
-            Add_Error (Table.States (980));
+            Table.States (980).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (980), 115, 241);
             Add_Goto (Table.States (980), 205, 1101);
             Add_Goto (Table.States (980), 322, 242);
@@ -11519,28 +12226,33 @@ package body Ada_Process_LALR_Main is
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (980).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 205, 0)));
+            Table.States (981).Action_List.Set_Capacity (8);
             Add_Action (Table.States (981), (29, 47, 48, 50, 69, 71, 74, 104), 
(200, 2), 6,
             formal_subprogram_declaration_2'Access, null);
             Table.States (981).Kernel := To_Vector ((0 => (200, 96, 0, 
False)));
             Table.States (981).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 200, 6)));
+            Table.States (982).Action_List.Set_Capacity (1);
             Add_Action (Table.States (982), 96, 1102);
-            Add_Error (Table.States (982));
             Table.States (982).Kernel := To_Vector ((0 => (200, 122, 1, 
False)));
             Table.States (982).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1102)));
+            Table.States (983).Action_List.Set_Capacity (8);
             Add_Action (Table.States (983), (29, 47, 48, 50, 69, 71, 74, 104), 
(200, 1), 6,
             formal_subprogram_declaration_1'Access, null);
             Table.States (983).Kernel := To_Vector ((0 => (200, 96, 0, 
False)));
             Table.States (983).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 200, 6)));
+            Table.States (984).Action_List.Set_Capacity (2);
             Add_Action (Table.States (984), 74, 337);
             Add_Action (Table.States (984), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (984));
+            Table.States (984).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (984), 122, 1103);
             Table.States (984).Kernel := To_Vector ((0 => (198, 192, 1, 
False)));
             Table.States (984).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (985).Action_List.Set_Capacity (8);
             Add_Action (Table.States (985), (29, 47, 48, 50, 69, 71, 74, 104), 
(198, 3), 6,
             formal_object_declaration_3'Access, null);
             Table.States (985).Kernel := To_Vector ((0 => (198, 96, 0, 
False)));
             Table.States (985).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 198, 6)));
+            Table.States (986).Action_List.Set_Capacity (14);
             Add_Action (Table.States (986), 3, 121);
             Add_Action (Table.States (986), 39, 122);
             Add_Action (Table.States (986), 40, 123);
@@ -11555,7 +12267,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (986), 104, 119);
             Add_Action (Table.States (986), 105, 33);
             Add_Action (Table.States (986), 106, 34);
-            Add_Error (Table.States (986));
+            Table.States (986).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (986), 117, 130);
             Add_Goto (Table.States (986), 128, 41);
             Add_Goto (Table.States (986), 191, 131);
@@ -11578,14 +12290,15 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (986), 330, 146);
             Table.States (986).Kernel := To_Vector ((0 => (198, 82, 1, 
False)));
             Table.States (986).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (987).Action_List.Set_Capacity (1);
             Add_Action (Table.States (987), 96, 1105);
-            Add_Error (Table.States (987));
             Table.States (987).Kernel := To_Vector ((0 => (198, 122, 1, 
False)));
             Table.States (987).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1105)));
+            Table.States (988).Action_List.Set_Capacity (1);
             Add_Action (Table.States (988), 32, 1106);
-            Add_Error (Table.States (988));
             Table.States (988).Kernel := To_Vector ((0 => (222, 24, 2, 
False)));
             Table.States (988).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 32, 1106)));
+            Table.States (989).Action_List.Set_Capacity (25);
             Add_Action (Table.States (989), 4, 1);
             Add_Action (Table.States (989), 5, 2);
             Add_Action (Table.States (989), 13, Reduce, (132, 1), 0, null, 
null);
@@ -11611,7 +12324,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (989), 104, 360);
             Add_Action (Table.States (989), 105, 33);
             Add_Action (Table.States (989), 106, 34);
-            Add_Error (Table.States (989));
+            Table.States (989).Goto_List.Set_Capacity (31);
             Add_Goto (Table.States (989), 113, 36);
             Add_Goto (Table.States (989), 123, 38);
             Add_Goto (Table.States (989), 126, 39);
@@ -11645,24 +12358,27 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (989), 323, 114);
             Table.States (989).Kernel := To_Vector ((0 => (174, 68, 0, 
False)));
             Table.States (989).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (990).Action_List.Set_Capacity (46);
             Add_Action (Table.States (990), (4, 5, 13, 15, 17, 18, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (222, 3), 7, if_statement_3'Access, null);
             Table.States (990).Kernel := To_Vector ((0 => (222, 96, 0, 
False)));
             Table.States (990).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 222, 7)));
+            Table.States (991).Action_List.Set_Capacity (1);
             Add_Action (Table.States (991), 24, 1108);
-            Add_Error (Table.States (991));
             Table.States (991).Kernel := To_Vector ((0 => (222, 300, 3, 
False)));
             Table.States (991).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1108)));
+            Table.States (992).Action_List.Set_Capacity (1);
             Add_Action (Table.States (992), 96, 1109);
-            Add_Error (Table.States (992));
             Table.States (992).Kernel := To_Vector ((0 => (222, 32, 1, 
False)));
             Table.States (992).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1109)));
+            Table.States (993).Action_List.Set_Capacity (40);
             Add_Action (Table.States (993), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (248, 0), 7,
             package_body_stub_0'Access, null);
             Table.States (993).Kernel := To_Vector ((0 => (248, 96, 0, 
False)));
             Table.States (993).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 248, 7)));
+            Table.States (994).Action_List.Set_Capacity (24);
             Add_Action (Table.States (994), 4, 1);
             Add_Action (Table.States (994), 5, 2);
             Add_Action (Table.States (994), 13, Reduce, (132, 1), 0, null, 
null);
@@ -11687,7 +12403,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (994), 104, 360);
             Add_Action (Table.States (994), 105, 33);
             Add_Action (Table.States (994), 106, 34);
-            Add_Error (Table.States (994));
+            Table.States (994).Goto_List.Set_Capacity (32);
             Add_Goto (Table.States (994), 113, 36);
             Add_Goto (Table.States (994), 123, 38);
             Add_Goto (Table.States (994), 126, 39);
@@ -11722,80 +12438,90 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (994), 323, 114);
             Table.States (994).Kernel := To_Vector ((0 => (247, 13, 2, 
False)));
             Table.States (994).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 218, 0)));
+            Table.States (995).Action_List.Set_Capacity (4);
             Add_Action (Table.States (995), 96, Reduce, (240, 1), 0, null, 
null);
             Add_Action (Table.States (995), 104, 119);
             Add_Action (Table.States (995), 105, 33);
             Add_Action (Table.States (995), 106, 34);
-            Add_Error (Table.States (995));
+            Table.States (995).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (995), 128, 41);
-            Add_Goto (Table.States (995), 239, 630);
+            Add_Goto (Table.States (995), 239, 632);
             Add_Goto (Table.States (995), 240, 1111);
             Add_Goto (Table.States (995), 272, 92);
             Add_Goto (Table.States (995), 293, 97);
             Table.States (995).Kernel := To_Vector ((0 => (247, 24, 1, 
False)));
             Table.States (995).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 0)));
+            Table.States (996).Action_List.Set_Capacity (40);
             Add_Action (Table.States (996), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (213, 0), 7,
             generic_instantiation_0'Access, null);
             Table.States (996).Kernel := To_Vector ((0 => (213, 96, 0, 
False)));
             Table.States (996).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 213, 7)));
+            Table.States (997).Action_List.Set_Capacity (1);
             Add_Action (Table.States (997), (1 =>  96), (251, 1), 7, 
package_specification_1'Access,
             package_specification_1_check'Access);
             Table.States (997).Kernel := To_Vector ((0 => (251, 240, 0, 
False)));
             Table.States (997).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 251, 7)));
+            Table.States (998).Action_List.Set_Capacity (1);
             Add_Action (Table.States (998), 24, 1112);
-            Add_Error (Table.States (998));
             Table.States (998).Kernel := To_Vector ((0 => (251, 159, 1, 
False)));
             Table.States (998).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1112)));
+            Table.States (999).Action_List.Set_Capacity (40);
             Add_Action (Table.States (999), (4, 5, 13, 15, 17, 18, 24, 25, 27, 
28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (265, 0), 7,
             protected_body_stub_0'Access, null);
             Table.States (999).Kernel := To_Vector ((0 => (265, 96, 0, 
False)));
             Table.States (999).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 265, 7)));
+            Table.States (1000).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1000), 72, Reduce, (253, 1), 0, null, 
null);
             Add_Action (Table.States (1000), 76, 1113);
-            Add_Error (Table.States (1000));
+            Table.States (1000).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (1000), 177, 1114);
             Add_Goto (Table.States (1000), 199, 344);
             Add_Goto (Table.States (1000), 253, 1115);
             Table.States (1000).Kernel := To_Vector ((0 => (176, 104, 5, 
False)));
             Table.States (1000).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 177, 0)));
+            Table.States (1001).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1001), 35, Reduce, (122, 1), 0, null, 
null);
             Add_Action (Table.States (1001), 74, 337);
             Add_Action (Table.States (1001), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (1001));
+            Table.States (1001).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1001), 122, 430);
             Table.States (1001).Kernel := To_Vector (((307, 312, 4, False), 
(309, 312, 1, False)));
             Table.States (1001).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (1002).Action_List.Set_Capacity (7);
             Add_Action (Table.States (1002), (24, 25, 28, 29, 40, 46, 50), 
(268, 0), 2, null, null);
             Table.States (1002).Kernel := To_Vector ((0 => (268, 267, 0, 
True)));
             Table.States (1002).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 268, 2)));
             Table.States (1002).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1003).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1003), 96, Reduce, (220, 1), 0, null, 
null);
             Add_Action (Table.States (1003), 104, 149);
-            Add_Error (Table.States (1003));
+            Table.States (1003).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1003), 220, 1116);
             Table.States (1003).Kernel := To_Vector ((0 => (264, 24, 1, 
False)));
             Table.States (1003).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (1004).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1004), 104, 119);
             Add_Action (Table.States (1004), 105, 33);
             Add_Action (Table.States (1004), 106, 34);
-            Add_Error (Table.States (1004));
+            Table.States (1004).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (1004), 128, 41);
             Add_Goto (Table.States (1004), 227, 1117);
-            Add_Goto (Table.States (1004), 239, 841);
+            Add_Goto (Table.States (1004), 239, 842);
             Add_Goto (Table.States (1004), 272, 92);
             Add_Goto (Table.States (1004), 293, 97);
             Table.States (1004).Kernel := To_Vector ((0 => (271, 39, 4, 
False)));
             Table.States (1004).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (1005).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1005), 96, 1118);
-            Add_Error (Table.States (1005));
             Table.States (1005).Kernel := To_Vector ((0 => (271, 266, 1, 
False)));
             Table.States (1005).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1118)));
+            Table.States (1006).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1006), 104, 119);
             Add_Action (Table.States (1006), 105, 33);
             Add_Action (Table.States (1006), 106, 34);
-            Add_Error (Table.States (1006));
+            Table.States (1006).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (1006), 128, 41);
             Add_Goto (Table.States (1006), 239, 1119);
             Add_Goto (Table.States (1006), 272, 92);
@@ -11803,6 +12529,7 @@ package body Ada_Process_LALR_Main is
             Table.States (1006).Kernel := To_Vector ((0 => (227, 10, 1, 
True)));
             Table.States (1006).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
             Table.States (1006).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1007).Action_List.Set_Capacity (17);
             Add_Action (Table.States (1007), 24, Reduce, (159, 1), 0, null, 
null);
             Add_Action (Table.States (1007), 25, Reduce, (246, 2), 0, null, 
null);
             Add_Action (Table.States (1007), 28, 183);
@@ -11820,7 +12547,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1007), 69, 27);
             Add_Action (Table.States (1007), 71, 28);
             Add_Action (Table.States (1007), 104, 185);
-            Add_Error (Table.States (1007));
+            Table.States (1007).Goto_List.Set_Capacity (54);
             Add_Goto (Table.States (1007), 112, 35);
             Add_Goto (Table.States (1007), 121, 37);
             Add_Goto (Table.States (1007), 127, 40);
@@ -11828,7 +12555,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1007), 135, 46);
             Add_Goto (Table.States (1007), 157, 391);
             Add_Goto (Table.States (1007), 158, 392);
-            Add_Goto (Table.States (1007), 159, 667);
+            Add_Goto (Table.States (1007), 159, 669);
             Add_Goto (Table.States (1007), 179, 54);
             Add_Goto (Table.States (1007), 182, 55);
             Add_Goto (Table.States (1007), 186, 56);
@@ -11877,14 +12604,16 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1007), 331, 116);
             Table.States (1007).Kernel := To_Vector ((0 => (304, 74, 2, 
False)));
             Table.States (1007).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
+            Table.States (1008).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1008), (1 =>  96), (266, 1), 3, 
protected_definition_1'Access,
             protected_definition_1_check'Access);
             Table.States (1008).Kernel := To_Vector ((0 => (266, 220, 0, 
False)));
             Table.States (1008).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 266, 3)));
+            Table.States (1009).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1009), 24, 1121);
-            Add_Error (Table.States (1009));
             Table.States (1009).Kernel := To_Vector ((0 => (266, 159, 1, 
False)));
             Table.States (1009).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1121)));
+            Table.States (1010).Action_List.Set_Capacity (14);
             Add_Action (Table.States (1010), 3, 121);
             Add_Action (Table.States (1010), 21, Reduce, (192, 1), 0, null, 
null);
             Add_Action (Table.States (1010), 39, 122);
@@ -11899,7 +12628,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1010), 104, 119);
             Add_Action (Table.States (1010), 105, 33);
             Add_Action (Table.States (1010), 106, 34);
-            Add_Error (Table.States (1010));
+            Table.States (1010).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (1010), 117, 130);
             Add_Goto (Table.States (1010), 128, 41);
             Add_Goto (Table.States (1010), 191, 131);
@@ -11922,18 +12651,20 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1010), 330, 146);
             Table.States (1010).Kernel := To_Vector ((0 => (194, 82, 0, 
False)));
             Table.States (1010).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (1011).Action_List.Set_Capacity (46);
             Add_Action (Table.States (1011), (4, 5, 13, 15, 17, 18, 22, 23, 
24, 25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (196, 0), 7, extended_return_statement_0'Access, null);
             Table.States (1011).Kernel := To_Vector ((0 => (196, 96, 0, 
False)));
             Table.States (1011).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 196, 7)));
+            Table.States (1012).Action_List.Set_Capacity (6);
             Add_Action (Table.States (1012), 35, Reduce, (122, 1), 0, null, 
null);
             Add_Action (Table.States (1012), 74, 337);
             Add_Action (Table.States (1012), 76, 235);
             Add_Action (Table.States (1012), 84, 237);
             Add_Action (Table.States (1012), 101, 239);
             Add_Action (Table.States (1012), 102, 240);
-            Add_Error (Table.States (1012));
+            Table.States (1012).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (1012), 115, 241);
             Add_Goto (Table.States (1012), 122, 511);
             Add_Goto (Table.States (1012), 322, 242);
@@ -11941,46 +12672,53 @@ package body Ada_Process_LALR_Main is
             (247, 239, 4, False), (247, 239, 3, False), (272, 239, 3, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (1012).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (1013).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1013), 35, Reduce, (122, 1), 0, null, 
null);
             Add_Action (Table.States (1013), 74, 337);
-            Add_Error (Table.States (1013));
+            Table.States (1013).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1013), 122, 520);
             Table.States (1013).Kernel := To_Vector ((0 => (264, 104, 3, 
False)));
             Table.States (1013).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (1014).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1014), 35, Reduce, (122, 1), 0, null, 
null);
             Add_Action (Table.States (1014), 74, 337);
-            Add_Error (Table.States (1014));
+            Table.States (1014).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1014), 122, 540);
             Table.States (1014).Kernel := To_Vector ((0 => (316, 104, 4, 
False)));
             Table.States (1014).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
-            Add_Action (Table.States (1015), 35, 585);
-            Add_Error (Table.States (1015));
+            Table.States (1015).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1015), 35, 587);
             Table.States (1015).Kernel := To_Vector ((0 => (307, 122, 4, 
False)));
-            Table.States (1015).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 585)));
+            Table.States (1015).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 587)));
+            Table.States (1016).Action_List.Set_Capacity (46);
             Add_Action (Table.States (1016), (4, 5, 13, 15, 17, 18, 22, 23, 
24, 25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (152, 0), 7, conditional_entry_call_0'Access, null);
             Table.States (1016).Kernel := To_Vector ((0 => (152, 96, 0, 
False)));
             Table.States (1016).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 152, 7)));
+            Table.States (1017).Action_List.Set_Capacity (46);
             Add_Action (Table.States (1017), (4, 5, 13, 15, 17, 18, 22, 23, 
24, 25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (323, 0), 7, timed_entry_call_0'Access, null);
             Table.States (1017).Kernel := To_Vector ((0 => (323, 96, 0, 
False)));
             Table.States (1017).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 323, 7)));
+            Table.States (1018).Action_List.Set_Capacity (46);
             Add_Action (Table.States (1018), (4, 5, 13, 15, 17, 18, 22, 23, 
24, 25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (294, 0), 7, selective_accept_0'Access, null);
             Table.States (1018).Kernel := To_Vector ((0 => (294, 96, 0, 
False)));
             Table.States (1018).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 294, 7)));
+            Table.States (1019).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1019), 96, 1123);
-            Add_Error (Table.States (1019));
             Table.States (1019).Kernel := To_Vector ((0 => (126, 61, 1, 
False)));
             Table.States (1019).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1123)));
+            Table.States (1020).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1020), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (317, 0), 7,
             task_body_stub_0'Access, null);
             Table.States (1020).Kernel := To_Vector ((0 => (317, 96, 0, 
False)));
             Table.States (1020).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 317, 7)));
+            Table.States (1021).Action_List.Set_Capacity (24);
             Add_Action (Table.States (1021), 4, 1);
             Add_Action (Table.States (1021), 5, 2);
             Add_Action (Table.States (1021), 13, Reduce, (132, 1), 0, null, 
null);
@@ -12005,7 +12743,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1021), 104, 360);
             Add_Action (Table.States (1021), 105, 33);
             Add_Action (Table.States (1021), 106, 34);
-            Add_Error (Table.States (1021));
+            Table.States (1021).Goto_List.Set_Capacity (32);
             Add_Goto (Table.States (1021), 113, 36);
             Add_Goto (Table.States (1021), 123, 38);
             Add_Goto (Table.States (1021), 126, 39);
@@ -12040,21 +12778,23 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1021), 323, 114);
             Table.States (1021).Kernel := To_Vector ((0 => (316, 13, 2, 
False)));
             Table.States (1021).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 218, 0)));
+            Table.States (1022).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1022), 104, 119);
             Add_Action (Table.States (1022), 105, 33);
             Add_Action (Table.States (1022), 106, 34);
-            Add_Error (Table.States (1022));
+            Table.States (1022).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (1022), 128, 41);
             Add_Goto (Table.States (1022), 227, 1125);
-            Add_Goto (Table.States (1022), 239, 841);
+            Add_Goto (Table.States (1022), 239, 842);
             Add_Goto (Table.States (1022), 272, 92);
             Add_Goto (Table.States (1022), 293, 97);
             Table.States (1022).Kernel := To_Vector ((0 => (319, 39, 4, 
False)));
             Table.States (1022).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (1023).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1023), 24, 1126);
-            Add_Error (Table.States (1023));
             Table.States (1023).Kernel := To_Vector ((0 => (319, 318, 2, 
False)));
             Table.States (1023).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1126)));
+            Table.States (1024).Action_List.Set_Capacity (17);
             Add_Action (Table.States (1024), 24, Reduce, (159, 1), 0, null, 
null);
             Add_Action (Table.States (1024), 25, Reduce, (246, 2), 0, null, 
null);
             Add_Action (Table.States (1024), 28, 183);
@@ -12072,7 +12812,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1024), 69, 27);
             Add_Action (Table.States (1024), 71, 28);
             Add_Action (Table.States (1024), 104, 185);
-            Add_Error (Table.States (1024));
+            Table.States (1024).Goto_List.Set_Capacity (54);
             Add_Goto (Table.States (1024), 112, 35);
             Add_Goto (Table.States (1024), 121, 37);
             Add_Goto (Table.States (1024), 127, 40);
@@ -12080,7 +12820,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1024), 135, 46);
             Add_Goto (Table.States (1024), 157, 391);
             Add_Goto (Table.States (1024), 158, 392);
-            Add_Goto (Table.States (1024), 159, 692);
+            Add_Goto (Table.States (1024), 159, 694);
             Add_Goto (Table.States (1024), 179, 54);
             Add_Goto (Table.States (1024), 182, 55);
             Add_Goto (Table.States (1024), 186, 56);
@@ -12132,24 +12872,27 @@ package body Ada_Process_LALR_Main is
          end Subr_17;
          procedure Subr_18
          is begin
+            Table.States (1025).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1025), (1 =>  24), (318, 0), 3, 
task_definition_0'Access, null);
             Table.States (1025).Kernel := To_Vector ((0 => (318, 159, 0, 
False)));
             Table.States (1025).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 318, 3)));
+            Table.States (1026).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1026), 96, 1128);
-            Add_Error (Table.States (1026));
             Table.States (1026).Kernel := To_Vector ((0 => (305, 220, 1, 
False)));
             Table.States (1026).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1128)));
+            Table.States (1027).Action_List.Set_Capacity (4);
             Add_Action (Table.States (1027), 7, Reduce, (241, 0), 2, null, 
null);
             Add_Action (Table.States (1027), 104, 1129);
             Add_Action (Table.States (1027), 105, 33);
             Add_Action (Table.States (1027), 106, 34);
-            Add_Error (Table.States (1027));
+            Table.States (1027).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (1027), 128, 41);
-            Add_Goto (Table.States (1027), 239, 871);
+            Add_Goto (Table.States (1027), 239, 872);
             Add_Goto (Table.States (1027), 272, 92);
             Add_Goto (Table.States (1027), 293, 1130);
             Table.States (1027).Kernel := To_Vector (((241, 41, 0, False), 
(242, 41, 1, False), (242, 41, 3, False)));
             Table.States (1027).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 2)));
+            Table.States (1028).Action_List.Set_Capacity (14);
             Add_Action (Table.States (1028), 3, 121);
             Add_Action (Table.States (1028), 39, 122);
             Add_Action (Table.States (1028), 40, 123);
@@ -12164,7 +12907,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1028), 104, 119);
             Add_Action (Table.States (1028), 105, 33);
             Add_Action (Table.States (1028), 106, 34);
-            Add_Error (Table.States (1028));
+            Table.States (1028).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (1028), 117, 130);
             Add_Goto (Table.States (1028), 128, 41);
             Add_Goto (Table.States (1028), 191, 131);
@@ -12187,6 +12930,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1028), 330, 146);
             Table.States (1028).Kernel := To_Vector ((0 => (170, 82, 0, 
False)));
             Table.States (1028).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (1029).Action_List.Set_Capacity (14);
             Add_Action (Table.States (1029), 3, 121);
             Add_Action (Table.States (1029), 39, 122);
             Add_Action (Table.States (1029), 40, 123);
@@ -12201,7 +12945,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1029), 104, 119);
             Add_Action (Table.States (1029), 105, 33);
             Add_Action (Table.States (1029), 106, 34);
-            Add_Error (Table.States (1029));
+            Table.States (1029).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (1029), 117, 130);
             Add_Goto (Table.States (1029), 128, 41);
             Add_Goto (Table.States (1029), 191, 131);
@@ -12224,26 +12968,29 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1029), 330, 146);
             Table.States (1029).Kernel := To_Vector ((0 => (170, 82, 0, 
False)));
             Table.States (1029).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (1030).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1030), (41, 49, 54), (111, 0), 3, null, 
null);
             Table.States (1030).Kernel := To_Vector ((0 => (111, 36, 0, 
False)));
             Table.States (1030).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 111, 3)));
+            Table.States (1031).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1031), 77, 1133);
             Add_Action (Table.States (1031), 83, 959);
-            Add_Error (Table.States (1031));
             Table.States (1031).Kernel := To_Vector (((120, 168, 3, False), 
(168, 168, 2, True)));
             Table.States (1031).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1133)));
+            Table.States (1032).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1032), (77, 83), (226, 1), 1, null, 
null);
             Table.States (1032).Kernel := To_Vector ((0 => (226, 225, 0, 
False)));
             Table.States (1032).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 226, 1)));
+            Table.States (1033).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1033), 77, 1134);
             Add_Action (Table.States (1033), 83, 1135);
-            Add_Error (Table.States (1033));
             Table.States (1033).Kernel := To_Vector (((120, 226, 3, False), 
(226, 226, 4, True)));
             Table.States (1033).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1134)));
+            Table.States (1034).Action_List.Set_Capacity (16);
             Add_Action (Table.States (1034), 38, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (1034), 53, 1136);
             Add_Action (Table.States (1034), 55, Reduce, (258, 3), 1, null, 
null);
-            Add_Action (Table.States (1034), 76, 619);
+            Add_Action (Table.States (1034), 76, 621);
             Add_Action (Table.States (1034), 77, Reduce, (314, 3), 1, 
subtype_indication_3'Access, null);
             Add_Action (Table.States (1034), 78, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (1034), 83, Reduce, (314, 3), 1, 
subtype_indication_3'Access, null);
@@ -12256,16 +13003,17 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1034), 100, Reduce, (258, 3), 1, null, 
null);
             Add_Action (Table.States (1034), 101, 239);
             Add_Action (Table.States (1034), 102, 240);
-            Add_Error (Table.States (1034));
+            Table.States (1034).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (1034), 115, 241);
-            Add_Goto (Table.States (1034), 155, 620);
-            Add_Goto (Table.States (1034), 224, 621);
+            Add_Goto (Table.States (1034), 155, 622);
+            Add_Goto (Table.States (1034), 224, 623);
             Add_Goto (Table.States (1034), 322, 448);
             Table.States (1034).Kernel := To_Vector (((128, 239, 2, True), 
(225, 239, 2, False), (239, 239, 5, True),
             (239, 239, 2, True), (258, 239, 0, False), (272, 239, 3, True), 
(277, 239, 4, False), (277, 239, 2, False),
             (293, 239, 2, True), (293, 239, 2, True), (293, 239, 2, True), 
(293, 239, 2, True), (314, 239, 4, False),
             (314, 239, 0, False)));
             Table.States (1034).Minimal_Complete_Actions := To_Vector 
(((Reduce, 258, 1), (Reduce, 314, 1)));
+            Table.States (1035).Action_List.Set_Capacity (15);
             Add_Action (Table.States (1035), 3, 121);
             Add_Action (Table.States (1035), 39, 122);
             Add_Action (Table.States (1035), 40, 123);
@@ -12281,7 +13029,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1035), 104, 119);
             Add_Action (Table.States (1035), 105, 33);
             Add_Action (Table.States (1035), 106, 34);
-            Add_Error (Table.States (1035));
+            Table.States (1035).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (1035), 117, 130);
             Add_Goto (Table.States (1035), 128, 41);
             Add_Goto (Table.States (1035), 191, 131);
@@ -12304,6 +13052,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1035), 330, 146);
             Table.States (1035).Kernel := To_Vector ((0 => (326, 20, 0, 
False)));
             Table.States (1035).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (1036).Action_List.Set_Capacity (11);
             Add_Action (Table.States (1036), 3, 121);
             Add_Action (Table.States (1036), 39, 122);
             Add_Action (Table.States (1036), 40, 123);
@@ -12315,7 +13064,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1036), 104, 119);
             Add_Action (Table.States (1036), 105, 33);
             Add_Action (Table.States (1036), 106, 34);
-            Add_Error (Table.States (1036));
+            Table.States (1036).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (1036), 117, 130);
             Add_Goto (Table.States (1036), 128, 41);
             Add_Goto (Table.States (1036), 197, 133);
@@ -12329,34 +13078,39 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1036), 330, 146);
             Table.States (1036).Kernel := To_Vector ((0 => (279, 53, 3, 
False)));
             Table.States (1036).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (1037).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1037), (74, 96), (326, 5), 3, null, 
null);
             Table.States (1037).Kernel := To_Vector ((0 => (326, 279, 0, 
False)));
             Table.States (1037).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 3)));
+            Table.States (1038).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1038), (74, 96), (326, 3), 3, null, 
null);
             Table.States (1038).Kernel := To_Vector ((0 => (326, 279, 0, 
False)));
             Table.States (1038).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 3)));
+            Table.States (1039).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1039), 104, 119);
             Add_Action (Table.States (1039), 105, 33);
             Add_Action (Table.States (1039), 106, 34);
-            Add_Error (Table.States (1039));
+            Table.States (1039).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (1039), 128, 41);
             Add_Goto (Table.States (1039), 227, 1139);
-            Add_Goto (Table.States (1039), 239, 841);
+            Add_Goto (Table.States (1039), 239, 842);
             Add_Goto (Table.States (1039), 272, 92);
             Add_Goto (Table.States (1039), 293, 97);
             Table.States (1039).Kernel := To_Vector ((0 => (228, 10, 1, 
False)));
             Table.States (1039).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (1040).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1040), 104, 119);
             Add_Action (Table.States (1040), 105, 33);
             Add_Action (Table.States (1040), 106, 34);
-            Add_Error (Table.States (1040));
+            Table.States (1040).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (1040), 128, 41);
             Add_Goto (Table.States (1040), 227, 1140);
-            Add_Goto (Table.States (1040), 239, 841);
+            Add_Goto (Table.States (1040), 239, 842);
             Add_Goto (Table.States (1040), 272, 92);
             Add_Goto (Table.States (1040), 293, 97);
             Table.States (1040).Kernel := To_Vector ((0 => (228, 10, 1, 
False)));
             Table.States (1040).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (1041).Action_List.Set_Capacity (11);
             Add_Action (Table.States (1041), 3, 121);
             Add_Action (Table.States (1041), 39, 122);
             Add_Action (Table.States (1041), 40, 123);
@@ -12368,7 +13122,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1041), 104, 119);
             Add_Action (Table.States (1041), 105, 33);
             Add_Action (Table.States (1041), 106, 34);
-            Add_Error (Table.States (1041));
+            Table.States (1041).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (1041), 117, 130);
             Add_Goto (Table.States (1041), 128, 41);
             Add_Goto (Table.States (1041), 197, 133);
@@ -12382,167 +13136,188 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1041), 330, 146);
             Table.States (1041).Kernel := To_Vector ((0 => (326, 85, 1, 
False)));
             Table.States (1041).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (1042).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1042), (1 =>  35), (163, 0), 1, null, 
null);
             Table.States (1042).Kernel := To_Vector ((0 => (163, 104, 0, 
False)));
             Table.States (1042).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 163, 1)));
+            Table.States (1043).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1043), (1 =>  35), (163, 1), 1, null, 
null);
             Table.States (1043).Kernel := To_Vector ((0 => (163, 105, 0, 
False)));
             Table.States (1043).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 163, 1)));
+            Table.States (1044).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1044), (1 =>  35), (164, 0), 1, null, 
null);
             Table.States (1044).Kernel := To_Vector ((0 => (164, 163, 0, 
False)));
             Table.States (1044).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 164, 1)));
+            Table.States (1045).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1045), 35, 1142);
-            Add_Error (Table.States (1045));
             Table.States (1045).Kernel := To_Vector ((0 => (327, 164, 6, 
False)));
             Table.States (1045).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 1142)));
+            Table.States (1046).Action_List.Set_Capacity (5);
             Add_Action (Table.States (1046), (15, 24, 28, 72, 104), (149, 4), 
2, component_list_4'Access, null);
             Table.States (1046).Kernel := To_Vector ((0 => (149, 96, 0, 
False)));
             Table.States (1046).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 149, 2)));
+            Table.States (1047).Action_List.Set_Capacity (5);
             Add_Action (Table.States (1047), (15, 24, 28, 72, 104), (149, 0), 
2, null, null);
             Table.States (1047).Kernel := To_Vector ((0 => (149, 148, 0, 
True)));
             Table.States (1047).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 149, 2)));
             Table.States (1047).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1048).Action_List.Set_Capacity (5);
             Add_Action (Table.States (1048), (15, 24, 28, 72, 104), (149, 1), 
2, null, null);
             Table.States (1048).Kernel := To_Vector ((0 => (149, 327, 0, 
True)));
             Table.States (1048).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 149, 2)));
             Table.States (1048).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1049).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1049), 54, 1143);
-            Add_Error (Table.States (1049));
             Table.States (1049).Kernel := To_Vector ((0 => (280, 24, 1, 
False)));
             Table.States (1049).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 54, 1143)));
+            Table.States (1050).Action_List.Set_Capacity (6);
             Add_Action (Table.States (1050), 7, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (1050), 8, 1144);
-            Add_Action (Table.States (1050), 40, 742);
+            Add_Action (Table.States (1050), 40, 744);
             Add_Action (Table.States (1050), 104, 119);
             Add_Action (Table.States (1050), 105, 33);
             Add_Action (Table.States (1050), 106, 34);
-            Add_Error (Table.States (1050));
+            Table.States (1050).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (1050), 114, 1145);
             Add_Goto (Table.States (1050), 128, 41);
             Add_Goto (Table.States (1050), 147, 1146);
             Add_Goto (Table.States (1050), 239, 484);
-            Add_Goto (Table.States (1050), 241, 721);
+            Add_Goto (Table.States (1050), 241, 723);
             Add_Goto (Table.States (1050), 272, 92);
             Add_Goto (Table.States (1050), 293, 97);
             Add_Goto (Table.States (1050), 314, 1147);
             Table.States (1050).Kernel := To_Vector (((146, 81, 3, False), 
(146, 81, 2, False)));
             Table.States (1050).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (1051).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1051), 104, 119);
             Add_Action (Table.States (1051), 105, 33);
             Add_Action (Table.States (1051), 106, 34);
-            Add_Error (Table.States (1051));
+            Table.States (1051).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (1051), 128, 41);
             Add_Goto (Table.States (1051), 227, 1148);
-            Add_Goto (Table.States (1051), 239, 841);
+            Add_Goto (Table.States (1051), 239, 842);
             Add_Goto (Table.States (1051), 272, 92);
             Add_Goto (Table.States (1051), 293, 97);
             Table.States (1051).Kernel := To_Vector ((0 => (228, 10, 1, 
False)));
             Table.States (1051).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (1052).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1052), 104, 119);
             Add_Action (Table.States (1052), 105, 33);
             Add_Action (Table.States (1052), 106, 34);
-            Add_Error (Table.States (1052));
+            Table.States (1052).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (1052), 128, 41);
             Add_Goto (Table.States (1052), 227, 1149);
-            Add_Goto (Table.States (1052), 239, 841);
+            Add_Goto (Table.States (1052), 239, 842);
             Add_Goto (Table.States (1052), 272, 92);
             Add_Goto (Table.States (1052), 293, 97);
             Table.States (1052).Kernel := To_Vector ((0 => (228, 10, 1, 
False)));
             Table.States (1052).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (1053).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1053), (74, 96), (183, 0), 3, 
enumeration_type_definition_0'Access, null);
             Table.States (1053).Kernel := To_Vector ((0 => (183, 77, 0, 
False)));
             Table.States (1053).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 183, 3)));
-            Add_Action (Table.States (1054), 104, 898);
-            Add_Action (Table.States (1054), 106, 899);
-            Add_Error (Table.States (1054));
+            Table.States (1054).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1054), 104, 899);
+            Add_Action (Table.States (1054), 106, 900);
+            Table.States (1054).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1054), 180, 1150);
             Table.States (1054).Kernel := To_Vector ((0 => (181, 83, 1, 
True)));
-            Table.States (1054).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 898)));
+            Table.States (1054).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 899)));
             Table.States (1054).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1055).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1055), 10, 1151);
             Add_Action (Table.States (1055), 74, Reduce, (119, 1), 0, null, 
null);
-            Add_Error (Table.States (1055));
+            Table.States (1055).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1055), 119, 1152);
             Table.States (1055).Kernel := To_Vector ((0 => (259, 314, 3, 
False)));
             Table.States (1055).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 119, 0)));
+            Table.States (1056).Action_List.Set_Capacity (8);
             Add_Action (Table.States (1056), 10, 1151);
-            Add_Action (Table.States (1056), 53, 618);
+            Add_Action (Table.States (1056), 53, 620);
             Add_Action (Table.States (1056), 74, Reduce, (119, 1), 0, null, 
null);
             Add_Conflict (Table.States (1056), 74, (156, 1), 0, null, null);
-            Add_Action (Table.States (1056), 76, 619);
+            Add_Action (Table.States (1056), 76, 621);
             Add_Action (Table.States (1056), 84, 237);
             Add_Action (Table.States (1056), 96, Reduce, (156, 1), 0, null, 
null);
             Add_Action (Table.States (1056), 101, 239);
             Add_Action (Table.States (1056), 102, 240);
-            Add_Error (Table.States (1056));
+            Table.States (1056).Goto_List.Set_Capacity (6);
             Add_Goto (Table.States (1056), 115, 241);
             Add_Goto (Table.States (1056), 119, 1153);
             Add_Goto (Table.States (1056), 155, 1154);
             Add_Goto (Table.States (1056), 156, 1155);
-            Add_Goto (Table.States (1056), 224, 621);
+            Add_Goto (Table.States (1056), 224, 623);
             Add_Goto (Table.States (1056), 322, 242);
             Table.States (1056).Kernel := To_Vector (((128, 239, 2, True), 
(162, 239, 3, False), (162, 239, 0, False),
             (239, 239, 5, True), (239, 239, 2, True), (272, 239, 3, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (1056).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 156, 0)));
+            Table.States (1057).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1057), 96, 1156);
-            Add_Error (Table.States (1057));
             Table.States (1057).Kernel := To_Vector ((0 => (260, 122, 1, 
False)));
             Table.States (1057).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1156)));
+            Table.States (1058).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1058), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (206, 0), 7,
             full_type_declaration_0'Access, null);
             Table.States (1058).Kernel := To_Vector ((0 => (206, 96, 0, 
False)));
             Table.States (1058).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 206, 7)));
+            Table.States (1059).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1059), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (245, 2), 7,
             object_renaming_declaration_2'Access, null);
             Table.States (1059).Kernel := To_Vector ((0 => (245, 96, 0, 
False)));
             Table.States (1059).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 245, 7)));
+            Table.States (1060).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1060), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (245, 1), 7,
             object_renaming_declaration_1'Access, null);
             Table.States (1060).Kernel := To_Vector ((0 => (245, 96, 0, 
False)));
             Table.States (1060).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 245, 7)));
+            Table.States (1061).Action_List.Set_Capacity (7);
             Add_Action (Table.States (1061), (21, 35, 56, 74, 77, 82, 96), 
(114, 1), 5, access_definition_1'Access,
             null);
             Table.States (1061).Kernel := To_Vector ((0 => (114, 252, 0, 
True)));
             Table.States (1061).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 114, 5)));
             Table.States (1061).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1062).Action_List.Set_Capacity (7);
             Add_Action (Table.States (1062), (21, 35, 56, 74, 77, 82, 96), 
(114, 0), 5, access_definition_0'Access,
             null);
             Table.States (1062).Kernel := To_Vector ((0 => (114, 253, 0, 
False)));
             Table.States (1062).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 114, 5)));
+            Table.States (1063).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1063), 96, 1157);
-            Add_Error (Table.States (1063));
             Table.States (1063).Kernel := To_Vector ((0 => (245, 122, 1, 
False)));
             Table.States (1063).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1157)));
-            Add_Action (Table.States (1064), 44, 914);
+            Table.States (1064).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (1064), 44, 915);
             Add_Action (Table.States (1064), 104, 119);
             Add_Action (Table.States (1064), 105, 33);
             Add_Action (Table.States (1064), 106, 34);
-            Add_Error (Table.States (1064));
+            Table.States (1064).Goto_List.Set_Capacity (6);
             Add_Goto (Table.States (1064), 128, 41);
-            Add_Goto (Table.States (1064), 184, 916);
+            Add_Goto (Table.States (1064), 184, 917);
             Add_Goto (Table.States (1064), 185, 1158);
-            Add_Goto (Table.States (1064), 239, 918);
+            Add_Goto (Table.States (1064), 239, 919);
             Add_Goto (Table.States (1064), 272, 92);
             Add_Goto (Table.States (1064), 293, 97);
             Table.States (1064).Kernel := To_Vector ((0 => (187, 81, 2, 
False)));
             Table.States (1064).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-            Add_Action (Table.States (1065), 44, 914);
+            Table.States (1065).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (1065), 44, 915);
             Add_Action (Table.States (1065), 104, 119);
             Add_Action (Table.States (1065), 105, 33);
             Add_Action (Table.States (1065), 106, 34);
-            Add_Error (Table.States (1065));
+            Table.States (1065).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (1065), 128, 41);
             Add_Goto (Table.States (1065), 184, 1159);
-            Add_Goto (Table.States (1065), 239, 918);
+            Add_Goto (Table.States (1065), 239, 919);
             Add_Goto (Table.States (1065), 272, 92);
             Add_Goto (Table.States (1065), 293, 97);
             Table.States (1065).Kernel := To_Vector ((0 => (185, 79, 1, 
True)));
             Table.States (1065).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
             Table.States (1065).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1066).Action_List.Set_Capacity (24);
             Add_Action (Table.States (1066), 4, 1);
             Add_Action (Table.States (1066), 5, 2);
             Add_Action (Table.States (1066), 13, Reduce, (132, 1), 0, null, 
null);
@@ -12567,7 +13342,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1066), 104, 360);
             Add_Action (Table.States (1066), 105, 33);
             Add_Action (Table.States (1066), 106, 34);
-            Add_Error (Table.States (1066));
+            Table.States (1066).Goto_List.Set_Capacity (31);
             Add_Goto (Table.States (1066), 113, 36);
             Add_Goto (Table.States (1066), 123, 38);
             Add_Goto (Table.States (1066), 126, 39);
@@ -12601,74 +13376,83 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1066), 323, 114);
             Table.States (1066).Kernel := To_Vector ((0 => (187, 87, 0, 
False)));
             Table.States (1066).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (1067).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1067), 96, 1161);
-            Add_Error (Table.States (1067));
             Table.States (1067).Kernel := To_Vector ((0 => (133, 220, 1, 
False)));
             Table.States (1067).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1161)));
+            Table.States (1068).Action_List.Set_Capacity (46);
             Add_Action (Table.States (1068), (4, 5, 13, 15, 17, 18, 22, 23, 
24, 25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (232, 1), 7, loop_statement_1'Access, 
loop_statement_1_check'Access);
             Table.States (1068).Kernel := To_Vector ((0 => (232, 96, 0, 
False)));
             Table.States (1068).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 232, 7)));
+            Table.States (1069).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1069), 96, 1162);
-            Add_Error (Table.States (1069));
             Table.States (1069).Kernel := To_Vector ((0 => (232, 220, 1, 
False)));
             Table.States (1069).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1162)));
+            Table.States (1070).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1070), 74, 337);
             Add_Action (Table.States (1070), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (1070));
+            Table.States (1070).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1070), 122, 1163);
             Table.States (1070).Kernel := To_Vector ((0 => (244, 192, 1, 
False)));
             Table.States (1070).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (1071).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1071), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (244, 4), 7,
             object_declaration_4'Access, null);
             Table.States (1071).Kernel := To_Vector ((0 => (244, 96, 0, 
False)));
             Table.States (1071).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 244, 7)));
+            Table.States (1072).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1072), 74, 337);
             Add_Action (Table.States (1072), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (1072));
+            Table.States (1072).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1072), 122, 1164);
             Table.States (1072).Kernel := To_Vector ((0 => (244, 192, 1, 
False)));
             Table.States (1072).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (1073).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1073), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (244, 5), 7,
             object_declaration_5'Access, null);
             Table.States (1073).Kernel := To_Vector ((0 => (244, 96, 0, 
False)));
             Table.States (1073).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 244, 7)));
+            Table.States (1074).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1074), 74, 337);
             Add_Action (Table.States (1074), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (1074));
+            Table.States (1074).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1074), 122, 1165);
             Table.States (1074).Kernel := To_Vector ((0 => (244, 192, 1, 
False)));
             Table.States (1074).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (1075).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1075), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (244, 3), 7,
             object_declaration_3'Access, null);
             Table.States (1075).Kernel := To_Vector ((0 => (244, 96, 0, 
False)));
             Table.States (1075).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 244, 7)));
+            Table.States (1076).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1076), 74, 337);
             Add_Action (Table.States (1076), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (1076));
+            Table.States (1076).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1076), 122, 1166);
             Table.States (1076).Kernel := To_Vector ((0 => (179, 253, 1, 
False)));
             Table.States (1076).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (1077).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1077), 96, 1167);
-            Add_Error (Table.States (1077));
             Table.States (1077).Kernel := To_Vector ((0 => (213, 122, 1, 
False)));
             Table.States (1077).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1167)));
+            Table.States (1078).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1078), 96, 1168);
-            Add_Error (Table.States (1078));
             Table.States (1078).Kernel := To_Vector ((0 => (213, 122, 1, 
False)));
             Table.States (1078).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1168)));
+            Table.States (1079).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1079), 24, 1169);
-            Add_Error (Table.States (1079));
             Table.States (1079).Kernel := To_Vector ((0 => (307, 218, 2, 
False)));
             Table.States (1079).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1169)));
+            Table.States (1080).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1080), 96, 1170);
-            Add_Error (Table.States (1080));
             Table.States (1080).Kernel := To_Vector ((0 => (113, 220, 1, 
False)));
             Table.States (1080).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1170)));
+            Table.States (1081).Action_List.Set_Capacity (14);
             Add_Action (Table.States (1081), 3, 121);
             Add_Action (Table.States (1081), 39, 122);
             Add_Action (Table.States (1081), 40, 123);
@@ -12683,7 +13467,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1081), 104, 119);
             Add_Action (Table.States (1081), 105, 33);
             Add_Action (Table.States (1081), 106, 34);
-            Add_Error (Table.States (1081));
+            Table.States (1081).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (1081), 117, 130);
             Add_Goto (Table.States (1081), 128, 41);
             Add_Goto (Table.States (1081), 191, 131);
@@ -12706,17 +13490,20 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1081), 330, 146);
             Table.States (1081).Kernel := To_Vector ((0 => (137, 87, 0, 
False)));
             Table.States (1081).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (1082).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1082), (77, 83), (138, 0), 3, 
case_expression_alternative_list_0'Access, null);
             Table.States (1082).Kernel := To_Vector ((0 => (138, 137, 0, 
True)));
             Table.States (1082).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 138, 3)));
             Table.States (1082).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1083).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1083), (1 =>  77), (221, 1), 6, 
if_expression_1'Access, null);
             Table.States (1083).Kernel := To_Vector ((0 => (221, 192, 0, 
False)));
             Table.States (1083).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 6)));
+            Table.States (1084).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1084), 68, 1172);
-            Add_Error (Table.States (1084));
             Table.States (1084).Kernel := To_Vector ((0 => (172, 192, 1, 
False)));
             Table.States (1084).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 1172)));
+            Table.States (1085).Action_List.Set_Capacity (13);
             Add_Action (Table.States (1085), 3, 121);
             Add_Action (Table.States (1085), 39, 122);
             Add_Action (Table.States (1085), 40, 123);
@@ -12730,7 +13517,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1085), 104, 119);
             Add_Action (Table.States (1085), 105, 33);
             Add_Action (Table.States (1085), 106, 34);
-            Add_Error (Table.States (1085));
+            Table.States (1085).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (1085), 117, 130);
             Add_Goto (Table.States (1085), 128, 41);
             Add_Goto (Table.States (1085), 191, 131);
@@ -12753,16 +13540,19 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1085), 330, 146);
             Table.States (1085).Kernel := To_Vector ((0 => (221, 22, 0, 
False)));
             Table.States (1085).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
-            Add_Action (Table.States (1086), (22, 23, 77), (173, 0), 2, null, 
null);
+            Table.States (1086).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1086), (22, 23, 77), (173, 0), 2, 
elsif_expression_list_0'Access, null);
             Table.States (1086).Kernel := To_Vector ((0 => (173, 172, 0, 
True)));
             Table.States (1086).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 173, 2)));
             Table.States (1086).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1087).Action_List.Set_Capacity (19);
             Add_Action (Table.States (1087), (10, 20, 21, 22, 23, 35, 37, 42, 
43, 53, 68, 74, 75, 77, 79, 82, 83, 87,
             96), (277, 0), 6, range_g_0'Access, null);
             Table.States (1087).Kernel := To_Vector ((0 => (277, 77, 0, 
False)));
             Table.States (1087).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 277, 6)));
-            Add_Action (Table.States (1088), 53, 618);
-            Add_Action (Table.States (1088), 76, 619);
+            Table.States (1088).Action_List.Set_Capacity (9);
+            Add_Action (Table.States (1088), 53, 620);
+            Add_Action (Table.States (1088), 76, 621);
             Add_Action (Table.States (1088), 77, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
             Add_Action (Table.States (1088), 79, Reduce, (165, 1), 3, null, 
null);
             Add_Action (Table.States (1088), 83, Reduce, (314, 1), 3, 
subtype_indication_1'Access, null);
@@ -12770,30 +13560,33 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1088), 87, Reduce, (165, 1), 3, null, 
null);
             Add_Action (Table.States (1088), 101, 239);
             Add_Action (Table.States (1088), 102, 240);
-            Add_Error (Table.States (1088));
+            Table.States (1088).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (1088), 115, 241);
             Add_Goto (Table.States (1088), 155, 956);
-            Add_Goto (Table.States (1088), 224, 621);
+            Add_Goto (Table.States (1088), 224, 623);
             Add_Goto (Table.States (1088), 322, 242);
             Table.States (1088).Kernel := To_Vector (((128, 239, 2, True), 
(165, 239, 0, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (314, 239, 4, False), (314, 239, 0, False)));
             Table.States (1088).Minimal_Complete_Actions := To_Vector 
(((Reduce, 165, 3), (Reduce, 314, 3)));
+            Table.States (1089).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1089), (77, 83), (168, 0), 3, null, 
null);
             Table.States (1089).Kernel := To_Vector ((0 => (168, 167, 0, 
True)));
             Table.States (1089).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 168, 3)));
             Table.States (1089).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1090).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1090), (1 =>  104), (235, 0), 4, null, 
null);
             Table.States (1090).Kernel := To_Vector ((0 => (235, 96, 0, 
False)));
             Table.States (1090).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 235, 4)));
+            Table.States (1091).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1091), 53, 1174);
-            Add_Error (Table.States (1091));
             Table.States (1091).Kernel := To_Vector ((0 => (144, 301, 5, 
False)));
             Table.States (1091).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 53, 1174)));
+            Table.States (1092).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1092), 96, 1175);
-            Add_Error (Table.States (1092));
             Table.States (1092).Kernel := To_Vector ((0 => (281, 54, 1, 
False)));
             Table.States (1092).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1175)));
+            Table.States (1093).Action_List.Set_Capacity (14);
             Add_Action (Table.States (1093), 3, 121);
             Add_Action (Table.States (1093), 39, 122);
             Add_Action (Table.States (1093), 40, 123);
@@ -12808,7 +13601,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1093), 104, 119);
             Add_Action (Table.States (1093), 105, 33);
             Add_Action (Table.States (1093), 106, 34);
-            Add_Error (Table.States (1093));
+            Table.States (1093).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (1093), 117, 130);
             Add_Goto (Table.States (1093), 128, 41);
             Add_Goto (Table.States (1093), 191, 131);
@@ -12831,30 +13624,34 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1093), 330, 146);
             Table.States (1093).Kernel := To_Vector ((0 => (254, 82, 0, 
False)));
             Table.States (1093).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+         end Subr_18;
+         procedure Subr_19
+         is begin
+            Table.States (1094).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1094), 104, 119);
             Add_Action (Table.States (1094), 105, 33);
             Add_Action (Table.States (1094), 106, 34);
-            Add_Error (Table.States (1094));
+            Table.States (1094).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (1094), 128, 41);
             Add_Goto (Table.States (1094), 239, 1177);
             Add_Goto (Table.States (1094), 272, 92);
             Add_Goto (Table.States (1094), 293, 97);
             Table.States (1094).Kernel := To_Vector (((254, 241, 2, False), 
(254, 241, 1, False)));
             Table.States (1094).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
-         end Subr_18;
-         procedure Subr_19
-         is begin
+            Table.States (1095).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1095), 80, 1178);
-            Add_Error (Table.States (1095));
             Table.States (1095).Kernel := To_Vector ((0 => (202, 20, 1, 
False)));
             Table.States (1095).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 80, 1178)));
+            Table.States (1096).Action_List.Set_Capacity (8);
             Add_Action (Table.States (1096), (29, 47, 48, 50, 69, 71, 74, 
104), (201, 1), 7,
             formal_type_declaration_1'Access, null);
             Table.States (1096).Kernel := To_Vector ((0 => (201, 96, 0, 
False)));
             Table.States (1096).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 201, 7)));
+            Table.States (1097).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1097), (74, 96), (202, 2), 3, null, 
null);
             Table.States (1097).Kernel := To_Vector ((0 => (202, 77, 0, 
False)));
             Table.States (1097).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 3)));
+            Table.States (1098).Action_List.Set_Capacity (7);
             Add_Action (Table.States (1098), 10, 1151);
             Add_Action (Table.States (1098), 74, Reduce, (119, 1), 0, null, 
null);
             Add_Action (Table.States (1098), 76, 235);
@@ -12862,7 +13659,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1098), 96, Reduce, (119, 1), 0, null, 
null);
             Add_Action (Table.States (1098), 101, 239);
             Add_Action (Table.States (1098), 102, 240);
-            Add_Error (Table.States (1098));
+            Table.States (1098).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (1098), 115, 241);
             Add_Goto (Table.States (1098), 119, 1179);
             Add_Goto (Table.States (1098), 322, 242);
@@ -12870,10 +13667,12 @@ package body Ada_Process_LALR_Main is
             (239, 239, 5, True), (239, 239, 2, True), (272, 239, 3, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (1098).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 119, 0)));
+            Table.States (1099).Action_List.Set_Capacity (8);
             Add_Action (Table.States (1099), (29, 47, 48, 50, 69, 71, 74, 
104), (201, 0), 7,
             formal_type_declaration_0'Access, null);
             Table.States (1099).Kernel := To_Vector ((0 => (201, 96, 0, 
False)));
             Table.States (1099).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 201, 7)));
+            Table.States (1100).Action_List.Set_Capacity (21);
             Add_Action (Table.States (1100), 3, 121);
             Add_Action (Table.States (1100), 15, 258);
             Add_Action (Table.States (1100), 28, 259);
@@ -12895,7 +13694,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1100), 104, 119);
             Add_Action (Table.States (1100), 105, 33);
             Add_Action (Table.States (1100), 106, 264);
-            Add_Error (Table.States (1100));
+            Table.States (1100).Goto_List.Set_Capacity (29);
             Add_Goto (Table.States (1100), 117, 130);
             Add_Goto (Table.States (1100), 124, 265);
             Add_Goto (Table.States (1100), 125, 406);
@@ -12929,97 +13728,108 @@ package body Ada_Process_LALR_Main is
             (239, 76, 4, True)));
             Table.States (1100).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 0)));
             Table.States (1100).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1101).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1101), 74, 337);
             Add_Action (Table.States (1101), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (1101));
+            Table.States (1101).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1101), 122, 1181);
             Table.States (1101).Kernel := To_Vector ((0 => (204, 205, 1, 
False)));
             Table.States (1101).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (1102).Action_List.Set_Capacity (8);
             Add_Action (Table.States (1102), (29, 47, 48, 50, 69, 71, 74, 
104), (200, 0), 7,
             formal_subprogram_declaration_0'Access, null);
             Table.States (1102).Kernel := To_Vector ((0 => (200, 96, 0, 
False)));
             Table.States (1102).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 200, 7)));
+            Table.States (1103).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1103), 96, 1182);
-            Add_Error (Table.States (1103));
             Table.States (1103).Kernel := To_Vector ((0 => (198, 122, 1, 
False)));
             Table.States (1103).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1182)));
+            Table.States (1104).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1104), 74, 337);
             Add_Action (Table.States (1104), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (1104));
+            Table.States (1104).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1104), 122, 1183);
             Table.States (1104).Kernel := To_Vector ((0 => (198, 192, 1, 
False)));
             Table.States (1104).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (1105).Action_List.Set_Capacity (8);
             Add_Action (Table.States (1105), (29, 47, 48, 50, 69, 71, 74, 
104), (198, 2), 7,
             formal_object_declaration_2'Access, null);
             Table.States (1105).Kernel := To_Vector ((0 => (198, 96, 0, 
False)));
             Table.States (1105).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 198, 7)));
+            Table.States (1106).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1106), 96, 1184);
-            Add_Error (Table.States (1106));
             Table.States (1106).Kernel := To_Vector ((0 => (222, 32, 1, 
False)));
             Table.States (1106).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1184)));
+            Table.States (1107).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1107), (22, 23, 24), (174, 0), 4, 
elsif_statement_item_0'Access, null);
             Table.States (1107).Kernel := To_Vector ((0 => (174, 300, 0, 
False)));
             Table.States (1107).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 174, 4)));
+            Table.States (1108).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1108), 32, 1185);
-            Add_Error (Table.States (1108));
             Table.States (1108).Kernel := To_Vector ((0 => (222, 24, 2, 
False)));
             Table.States (1108).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 32, 1185)));
+            Table.States (1109).Action_List.Set_Capacity (46);
             Add_Action (Table.States (1109), (4, 5, 13, 15, 17, 18, 22, 23, 
24, 25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (222, 2), 8, if_statement_2'Access, null);
             Table.States (1109).Kernel := To_Vector ((0 => (222, 96, 0, 
False)));
             Table.States (1109).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 222, 8)));
+            Table.States (1110).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1110), 24, 1186);
-            Add_Error (Table.States (1110));
             Table.States (1110).Kernel := To_Vector ((0 => (247, 218, 2, 
False)));
             Table.States (1110).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1186)));
+            Table.States (1111).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1111), 96, 1187);
-            Add_Error (Table.States (1111));
             Table.States (1111).Kernel := To_Vector ((0 => (247, 240, 1, 
False)));
             Table.States (1111).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1187)));
+            Table.States (1112).Action_List.Set_Capacity (4);
             Add_Action (Table.States (1112), 96, Reduce, (240, 1), 0, null, 
null);
             Add_Action (Table.States (1112), 104, 119);
             Add_Action (Table.States (1112), 105, 33);
             Add_Action (Table.States (1112), 106, 34);
-            Add_Error (Table.States (1112));
+            Table.States (1112).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (1112), 128, 41);
-            Add_Goto (Table.States (1112), 239, 630);
+            Add_Goto (Table.States (1112), 239, 632);
             Add_Goto (Table.States (1112), 240, 1188);
             Add_Goto (Table.States (1112), 272, 92);
             Add_Goto (Table.States (1112), 293, 97);
             Table.States (1112).Kernel := To_Vector ((0 => (251, 24, 0, 
False)));
             Table.States (1112).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 0)));
+            Table.States (1113).Action_List.Set_Capacity (4);
             Add_Action (Table.States (1113), 28, 1189);
             Add_Action (Table.States (1113), 77, Reduce, (254, 4), 0, null, 
null);
             Add_Action (Table.States (1113), 96, Reduce, (254, 4), 0, null, 
null);
             Add_Action (Table.States (1113), 104, 164);
-            Add_Error (Table.States (1113));
+            Table.States (1113).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (1113), 219, 493);
             Add_Goto (Table.States (1113), 254, 494);
             Add_Goto (Table.States (1113), 255, 495);
             Table.States (1113).Kernel := To_Vector (((177, 76, 5, False), 
(199, 76, 1, False)));
             Table.States (1113).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 255, 0)));
+            Table.States (1114).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1114), 72, 1190);
-            Add_Error (Table.States (1114));
             Table.States (1114).Kernel := To_Vector ((0 => (176, 177, 5, 
False)));
             Table.States (1114).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 72, 1190)));
+            Table.States (1115).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1115), (1 =>  72), (177, 1), 1, null, 
null);
             Table.States (1115).Kernel := To_Vector ((0 => (177, 253, 0, 
False)));
             Table.States (1115).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 177, 1)));
+            Table.States (1116).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1116), 96, 1191);
-            Add_Error (Table.States (1116));
             Table.States (1116).Kernel := To_Vector ((0 => (264, 220, 1, 
False)));
             Table.States (1116).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1191)));
+            Table.States (1117).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1117), 10, 1006);
             Add_Action (Table.States (1117), 74, 1192);
-            Add_Error (Table.States (1117));
             Table.States (1117).Kernel := To_Vector (((227, 227, 2, True), 
(271, 227, 3, False)));
             Table.States (1117).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1192)));
+            Table.States (1118).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1118), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (271, 1), 8,
             protected_type_declaration_1'Access, 
protected_type_declaration_1_check'Access);
             Table.States (1118).Kernel := To_Vector ((0 => (271, 96, 0, 
False)));
             Table.States (1118).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 271, 8)));
+            Table.States (1119).Action_List.Set_Capacity (7);
             Add_Action (Table.States (1119), 10, Reduce, (227, 0), 3, 
interface_list_0'Access, null);
             Add_Action (Table.States (1119), 74, Reduce, (227, 0), 3, 
interface_list_0'Access, null);
             Add_Action (Table.States (1119), 76, 235);
@@ -13027,7 +13837,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1119), 96, Reduce, (227, 0), 3, 
interface_list_0'Access, null);
             Add_Action (Table.States (1119), 101, 239);
             Add_Action (Table.States (1119), 102, 240);
-            Add_Error (Table.States (1119));
+            Table.States (1119).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (1119), 115, 241);
             Add_Goto (Table.States (1119), 322, 242);
             Table.States (1119).Kernel := To_Vector (((128, 239, 2, True), 
(227, 239, 0, True), (239, 239, 5, True),
@@ -13035,48 +13845,54 @@ package body Ada_Process_LALR_Main is
             (293, 239, 2, True)));
             Table.States (1119).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 227, 3)));
             Table.States (1119).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1120).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1120), 96, 1193);
-            Add_Error (Table.States (1120));
             Table.States (1120).Kernel := To_Vector ((0 => (304, 266, 1, 
False)));
             Table.States (1120).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1193)));
+            Table.States (1121).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1121), 96, Reduce, (220, 1), 0, null, 
null);
             Add_Action (Table.States (1121), 104, 149);
-            Add_Error (Table.States (1121));
+            Table.States (1121).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1121), 220, 1194);
             Table.States (1121).Kernel := To_Vector ((0 => (266, 24, 0, 
False)));
             Table.States (1121).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (1122).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1122), (21, 96), (194, 0), 7, 
extended_return_object_declaration_0'Access, null);
             Table.States (1122).Kernel := To_Vector ((0 => (194, 192, 0, 
False)));
             Table.States (1122).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 194, 7)));
+            Table.States (1123).Action_List.Set_Capacity (46);
             Add_Action (Table.States (1123), (4, 5, 13, 15, 17, 18, 22, 23, 
24, 25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (126, 0), 8, asynchronous_select_0'Access, null);
             Table.States (1123).Kernel := To_Vector ((0 => (126, 96, 0, 
False)));
             Table.States (1123).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 126, 8)));
+            Table.States (1124).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1124), 24, 1195);
-            Add_Error (Table.States (1124));
             Table.States (1124).Kernel := To_Vector ((0 => (316, 218, 2, 
False)));
             Table.States (1124).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1195)));
+            Table.States (1125).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1125), 10, 1006);
             Add_Action (Table.States (1125), 74, 1196);
-            Add_Error (Table.States (1125));
             Table.States (1125).Kernel := To_Vector (((227, 227, 2, True), 
(319, 227, 3, False)));
             Table.States (1125).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1196)));
+            Table.States (1126).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1126), 96, Reduce, (220, 1), 0, null, 
null);
             Add_Action (Table.States (1126), 104, 149);
-            Add_Error (Table.States (1126));
+            Table.States (1126).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1126), 220, 1197);
             Table.States (1126).Kernel := To_Vector ((0 => (319, 24, 1, 
False)));
             Table.States (1126).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (1127).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1127), 24, 1198);
-            Add_Error (Table.States (1127));
             Table.States (1127).Kernel := To_Vector ((0 => (305, 318, 2, 
False)));
             Table.States (1127).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1198)));
+            Table.States (1128).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1128), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (305, 1), 8,
             single_task_declaration_1'Access, 
single_task_declaration_1_check'Access);
             Table.States (1128).Kernel := To_Vector ((0 => (305, 96, 0, 
False)));
             Table.States (1128).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 305, 8)));
+            Table.States (1129).Action_List.Set_Capacity (7);
             Add_Action (Table.States (1129), 76, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (1129), 77, Reduce, (242, 2), 3, 
null_exclusion_opt_name_type_2'Access, null);
             Add_Action (Table.States (1129), 82, Reduce, (242, 2), 3, 
null_exclusion_opt_name_type_2'Access, null);
@@ -13084,9 +13900,9 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1129), 96, Reduce, (242, 2), 3, 
null_exclusion_opt_name_type_2'Access, null);
             Add_Action (Table.States (1129), 101, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
             Add_Action (Table.States (1129), 102, Reduce, (239, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Error (Table.States (1129));
             Table.States (1129).Kernel := To_Vector (((239, 104, 0, False), 
(242, 104, 0, False)));
             Table.States (1129).Minimal_Complete_Actions := To_Vector 
(((Reduce, 239, 1), (Reduce, 242, 3)));
+            Table.States (1130).Action_List.Set_Capacity (7);
             Add_Action (Table.States (1130), 76, Reduce, (239, 2), 1, null, 
name_2_check'Access);
             Add_Action (Table.States (1130), 77, Reduce, (242, 3), 3, 
null_exclusion_opt_name_type_3'Access, null);
             Add_Action (Table.States (1130), 82, Reduce, (242, 3), 3, 
null_exclusion_opt_name_type_3'Access, null);
@@ -13094,28 +13910,30 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1130), 96, Reduce, (242, 3), 3, 
null_exclusion_opt_name_type_3'Access, null);
             Add_Action (Table.States (1130), 101, Reduce, (239, 2), 1, null, 
name_2_check'Access);
             Add_Action (Table.States (1130), 102, Reduce, (239, 2), 1, null, 
name_2_check'Access);
-            Add_Error (Table.States (1130));
             Table.States (1130).Kernel := To_Vector (((239, 293, 0, True), 
(242, 293, 0, False)));
             Table.States (1130).Minimal_Complete_Actions := To_Vector 
(((Reduce, 239, 1), (Reduce, 242, 3)));
             Table.States (1130).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1131).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1131), (77, 96), (170, 1), 5, null, 
null);
             Table.States (1131).Kernel := To_Vector ((0 => (170, 192, 0, 
False)));
             Table.States (1131).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 5)));
+            Table.States (1132).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1132), (77, 96), (170, 0), 5, null, 
null);
             Table.States (1132).Kernel := To_Vector ((0 => (170, 192, 0, 
False)));
             Table.States (1132).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 5)));
+            Table.States (1133).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1133), 42, 1199);
-            Add_Error (Table.States (1133));
             Table.States (1133).Kernel := To_Vector ((0 => (120, 77, 2, 
False)));
             Table.States (1133).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 42, 1199)));
+            Table.States (1134).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1134), 42, 1200);
-            Add_Error (Table.States (1134));
             Table.States (1134).Kernel := To_Vector ((0 => (120, 77, 2, 
False)));
             Table.States (1134).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 42, 1200)));
+            Table.States (1135).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1135), 104, 119);
             Add_Action (Table.States (1135), 105, 33);
             Add_Action (Table.States (1135), 106, 34);
-            Add_Error (Table.States (1135));
+            Table.States (1135).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (1135), 128, 41);
             Add_Goto (Table.States (1135), 225, 1201);
             Add_Goto (Table.States (1135), 239, 1202);
@@ -13124,6 +13942,7 @@ package body Ada_Process_LALR_Main is
             Table.States (1135).Kernel := To_Vector ((0 => (226, 83, 3, 
True)));
             Table.States (1135).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
             Table.States (1135).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1136).Action_List.Set_Capacity (12);
             Add_Action (Table.States (1136), 3, 121);
             Add_Action (Table.States (1136), 39, 122);
             Add_Action (Table.States (1136), 40, 123);
@@ -13136,14 +13955,14 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1136), 104, 119);
             Add_Action (Table.States (1136), 105, 33);
             Add_Action (Table.States (1136), 106, 34);
-            Add_Error (Table.States (1136));
+            Table.States (1136).Goto_List.Set_Capacity (12);
             Add_Goto (Table.States (1136), 117, 130);
             Add_Goto (Table.States (1136), 128, 41);
             Add_Goto (Table.States (1136), 197, 133);
             Add_Goto (Table.States (1136), 239, 274);
             Add_Goto (Table.States (1136), 258, 135);
             Add_Goto (Table.States (1136), 272, 92);
-            Add_Goto (Table.States (1136), 277, 773);
+            Add_Goto (Table.States (1136), 277, 774);
             Add_Goto (Table.States (1136), 293, 97);
             Add_Goto (Table.States (1136), 301, 479);
             Add_Goto (Table.States (1136), 320, 144);
@@ -13151,188 +13970,212 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1136), 330, 146);
             Table.States (1136).Kernel := To_Vector (((155, 53, 3, False), 
(225, 53, 1, False)));
             Table.States (1136).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 80, 1203)));
+            Table.States (1137).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1137), 53, 1036);
             Add_Action (Table.States (1137), 74, Reduce, (279, 1), 0, null, 
null);
             Add_Action (Table.States (1137), 96, Reduce, (279, 1), 0, null, 
null);
-            Add_Error (Table.States (1137));
+            Table.States (1137).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1137), 279, 1204);
             Table.States (1137).Kernel := To_Vector ((0 => (326, 192, 0, 
False)));
             Table.States (1137).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 279, 0)));
+            Table.States (1138).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1138), 85, 1205);
-            Add_Error (Table.States (1138));
             Table.States (1138).Kernel := To_Vector ((0 => (279, 301, 2, 
False)));
             Table.States (1138).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 85, 1205)));
+            Table.States (1139).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1139), 10, 1006);
             Add_Action (Table.States (1139), 74, Reduce, (228, 0), 4, null, 
null);
             Add_Action (Table.States (1139), 96, Reduce, (228, 0), 4, null, 
null);
-            Add_Error (Table.States (1139));
             Table.States (1139).Kernel := To_Vector (((227, 227, 2, True), 
(228, 227, 0, False)));
             Table.States (1139).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 4)));
+            Table.States (1140).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1140), 10, 1006);
             Add_Action (Table.States (1140), 74, Reduce, (228, 2), 4, null, 
null);
             Add_Action (Table.States (1140), 96, Reduce, (228, 2), 4, null, 
null);
-            Add_Error (Table.States (1140));
             Table.States (1140).Kernel := To_Vector (((227, 227, 2, True), 
(228, 227, 0, False)));
             Table.States (1140).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 4)));
+            Table.States (1141).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1141), (74, 96), (326, 1), 4, null, 
null);
             Table.States (1141).Kernel := To_Vector ((0 => (326, 301, 0, 
False)));
             Table.States (1141).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 4)));
+            Table.States (1142).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1142), 72, 1206);
-            Add_Error (Table.States (1142));
+            Table.States (1142).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (1142), 328, 1207);
             Add_Goto (Table.States (1142), 329, 1208);
             Table.States (1142).Kernel := To_Vector ((0 => (327, 35, 5, 
False)));
             Table.States (1142).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 72, 1206)));
+            Table.States (1143).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1143), (74, 96), (280, 0), 4, 
record_definition_0'Access, null);
             Table.States (1143).Kernel := To_Vector ((0 => (280, 54, 0, 
False)));
             Table.States (1143).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 280, 4)));
+            Table.States (1144).Action_List.Set_Capacity (5);
             Add_Action (Table.States (1144), 7, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (1144), 40, 742);
+            Add_Action (Table.States (1144), 40, 744);
             Add_Action (Table.States (1144), 104, 119);
             Add_Action (Table.States (1144), 105, 33);
             Add_Action (Table.States (1144), 106, 34);
-            Add_Error (Table.States (1144));
+            Table.States (1144).Goto_List.Set_Capacity (7);
             Add_Goto (Table.States (1144), 114, 1209);
             Add_Goto (Table.States (1144), 128, 41);
             Add_Goto (Table.States (1144), 239, 484);
-            Add_Goto (Table.States (1144), 241, 721);
+            Add_Goto (Table.States (1144), 241, 723);
             Add_Goto (Table.States (1144), 272, 92);
             Add_Goto (Table.States (1144), 293, 97);
             Add_Goto (Table.States (1144), 314, 1210);
             Table.States (1144).Kernel := To_Vector (((147, 8, 1, False), 
(147, 8, 2, False)));
             Table.States (1144).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (1145).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1145), (74, 82, 96), (147, 3), 1, null, 
null);
             Table.States (1145).Kernel := To_Vector ((0 => (147, 114, 0, 
False)));
             Table.States (1145).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 147, 1)));
+            Table.States (1146).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1146), 74, 337);
             Add_Action (Table.States (1146), 82, 1211);
             Add_Action (Table.States (1146), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (1146));
+            Table.States (1146).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1146), 122, 1212);
             Table.States (1146).Kernel := To_Vector (((146, 147, 2, False), 
(146, 147, 1, False)));
             Table.States (1146).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (1147).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1147), (74, 82, 96), (147, 1), 1, null, 
null);
             Table.States (1147).Kernel := To_Vector ((0 => (147, 314, 0, 
False)));
             Table.States (1147).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 147, 1)));
+            Table.States (1148).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1148), 10, 1006);
             Add_Action (Table.States (1148), 74, Reduce, (228, 3), 4, null, 
null);
             Add_Action (Table.States (1148), 96, Reduce, (228, 3), 4, null, 
null);
-            Add_Error (Table.States (1148));
             Table.States (1148).Kernel := To_Vector (((227, 227, 2, True), 
(228, 227, 0, False)));
             Table.States (1148).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 4)));
+            Table.States (1149).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1149), 10, 1006);
             Add_Action (Table.States (1149), 74, Reduce, (228, 1), 4, null, 
null);
             Add_Action (Table.States (1149), 96, Reduce, (228, 1), 4, null, 
null);
-            Add_Error (Table.States (1149));
             Table.States (1149).Kernel := To_Vector (((227, 227, 2, True), 
(228, 227, 0, False)));
             Table.States (1149).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 4)));
+            Table.States (1150).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1150), (77, 83), (181, 0), 3, null, 
null);
             Table.States (1150).Kernel := To_Vector ((0 => (181, 180, 0, 
True)));
             Table.States (1150).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 181, 3)));
             Table.States (1150).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1151).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1151), 104, 119);
             Add_Action (Table.States (1151), 105, 33);
             Add_Action (Table.States (1151), 106, 34);
-            Add_Error (Table.States (1151));
+            Table.States (1151).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (1151), 128, 41);
             Add_Goto (Table.States (1151), 227, 1213);
-            Add_Goto (Table.States (1151), 239, 841);
+            Add_Goto (Table.States (1151), 239, 842);
             Add_Goto (Table.States (1151), 272, 92);
             Add_Goto (Table.States (1151), 293, 97);
             Table.States (1151).Kernel := To_Vector ((0 => (119, 10, 1, 
False)));
             Table.States (1151).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (1152).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1152), 74, 1214);
-            Add_Error (Table.States (1152));
             Table.States (1152).Kernel := To_Vector ((0 => (259, 119, 3, 
False)));
             Table.States (1152).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1214)));
+            Table.States (1153).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1153), 74, 1215);
-            Add_Error (Table.States (1153));
             Table.States (1153).Kernel := To_Vector ((0 => (162, 119, 3, 
False)));
             Table.States (1153).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1215)));
+            Table.States (1154).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1154), (74, 96), (156, 0), 1, null, 
null);
             Table.States (1154).Kernel := To_Vector ((0 => (156, 155, 0, 
False)));
             Table.States (1154).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 156, 1)));
+            Table.States (1155).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1155), (74, 96), (162, 1), 4, 
derived_type_definition_1'Access, null);
             Table.States (1155).Kernel := To_Vector ((0 => (162, 156, 0, 
False)));
             Table.States (1155).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 162, 4)));
+            Table.States (1156).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1156), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (260, 0), 8,
             private_type_declaration_0'Access, null);
             Table.States (1156).Kernel := To_Vector ((0 => (260, 96, 0, 
False)));
             Table.States (1156).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 260, 8)));
+            Table.States (1157).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1157), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (245, 0), 8,
             object_renaming_declaration_0'Access, null);
             Table.States (1157).Kernel := To_Vector ((0 => (245, 96, 0, 
False)));
             Table.States (1157).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 245, 8)));
+            Table.States (1158).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1158), 79, 1065);
             Add_Action (Table.States (1158), 87, 1216);
-            Add_Error (Table.States (1158));
             Table.States (1158).Kernel := To_Vector (((185, 185, 2, True), 
(187, 185, 1, False)));
             Table.States (1158).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 87, 1216)));
+            Table.States (1159).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1159), (79, 87), (185, 0), 3, null, 
null);
             Table.States (1159).Kernel := To_Vector ((0 => (185, 184, 0, 
True)));
             Table.States (1159).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 185, 3)));
             Table.States (1159).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1160).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1160), (24, 72), (187, 1), 4, 
exception_handler_1'Access, null);
             Table.States (1160).Kernel := To_Vector ((0 => (187, 300, 0, 
False)));
             Table.States (1160).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 187, 4)));
+            Table.States (1161).Action_List.Set_Capacity (46);
             Add_Action (Table.States (1161), (4, 5, 13, 15, 17, 18, 22, 23, 
24, 25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (133, 0), 8, block_statement_0'Access, 
block_statement_0_check'Access);
             Table.States (1161).Kernel := To_Vector ((0 => (133, 96, 0, 
False)));
             Table.States (1161).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 133, 8)));
+            Table.States (1162).Action_List.Set_Capacity (46);
             Add_Action (Table.States (1162), (4, 5, 13, 15, 17, 18, 22, 23, 
24, 25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (232, 0), 8, loop_statement_0'Access, 
loop_statement_0_check'Access);
             Table.States (1162).Kernel := To_Vector ((0 => (232, 96, 0, 
False)));
             Table.States (1162).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 232, 8)));
+            Table.States (1163).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1163), 96, 1217);
-            Add_Error (Table.States (1163));
             Table.States (1163).Kernel := To_Vector ((0 => (244, 122, 1, 
False)));
             Table.States (1163).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1217)));
+            Table.States (1164).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1164), 96, 1218);
-            Add_Error (Table.States (1164));
             Table.States (1164).Kernel := To_Vector ((0 => (244, 122, 1, 
False)));
             Table.States (1164).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1218)));
+            Table.States (1165).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1165), 96, 1219);
-            Add_Error (Table.States (1165));
             Table.States (1165).Kernel := To_Vector ((0 => (244, 122, 1, 
False)));
             Table.States (1165).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1219)));
+            Table.States (1166).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1166), 96, 1220);
-            Add_Error (Table.States (1166));
             Table.States (1166).Kernel := To_Vector ((0 => (179, 122, 1, 
False)));
             Table.States (1166).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1220)));
+            Table.States (1167).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1167), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (213, 2), 8,
             generic_instantiation_2'Access, null);
             Table.States (1167).Kernel := To_Vector ((0 => (213, 96, 0, 
False)));
             Table.States (1167).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 213, 8)));
+            Table.States (1168).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1168), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (213, 1), 8,
             generic_instantiation_1'Access, null);
             Table.States (1168).Kernel := To_Vector ((0 => (213, 96, 0, 
False)));
             Table.States (1168).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 213, 8)));
+            Table.States (1169).Action_List.Set_Capacity (4);
             Add_Action (Table.States (1169), 96, Reduce, (240, 1), 0, null, 
null);
             Add_Action (Table.States (1169), 104, 119);
             Add_Action (Table.States (1169), 105, 33);
             Add_Action (Table.States (1169), 106, 34);
-            Add_Error (Table.States (1169));
+            Table.States (1169).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (1169), 128, 41);
-            Add_Goto (Table.States (1169), 239, 630);
+            Add_Goto (Table.States (1169), 239, 632);
             Add_Goto (Table.States (1169), 240, 1221);
             Add_Goto (Table.States (1169), 272, 92);
             Add_Goto (Table.States (1169), 293, 97);
             Table.States (1169).Kernel := To_Vector ((0 => (307, 24, 1, 
False)));
             Table.States (1169).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 0)));
+            Table.States (1170).Action_List.Set_Capacity (46);
             Add_Action (Table.States (1170), (4, 5, 13, 15, 17, 18, 22, 23, 
24, 25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (113, 0), 9, accept_statement_0'Access, 
accept_statement_0_check'Access);
             Table.States (1170).Kernel := To_Vector ((0 => (113, 96, 0, 
False)));
             Table.States (1170).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 113, 9)));
+            Table.States (1171).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1171), (77, 83), (137, 0), 4, 
case_expression_alternative_0'Access, null);
             Table.States (1171).Kernel := To_Vector ((0 => (137, 192, 0, 
False)));
             Table.States (1171).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 137, 4)));
+            Table.States (1172).Action_List.Set_Capacity (15);
             Add_Action (Table.States (1172), 3, 121);
             Add_Action (Table.States (1172), 22, Reduce, (192, 1), 0, null, 
null);
             Add_Action (Table.States (1172), 23, Reduce, (192, 1), 0, null, 
null);
@@ -13348,7 +14191,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1172), 104, 119);
             Add_Action (Table.States (1172), 105, 33);
             Add_Action (Table.States (1172), 106, 34);
-            Add_Error (Table.States (1172));
+            Table.States (1172).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (1172), 117, 130);
             Add_Goto (Table.States (1172), 128, 41);
             Add_Goto (Table.States (1172), 191, 131);
@@ -13371,9 +14214,11 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1172), 330, 146);
             Table.States (1172).Kernel := To_Vector ((0 => (172, 68, 0, 
False)));
             Table.States (1172).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (1173).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1173), (1 =>  77), (221, 0), 7, 
if_expression_0'Access, null);
             Table.States (1173).Kernel := To_Vector ((0 => (221, 192, 0, 
False)));
             Table.States (1173).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 7)));
+            Table.States (1174).Action_List.Set_Capacity (11);
             Add_Action (Table.States (1174), 3, 121);
             Add_Action (Table.States (1174), 39, 122);
             Add_Action (Table.States (1174), 40, 123);
@@ -13385,7 +14230,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1174), 104, 119);
             Add_Action (Table.States (1174), 105, 33);
             Add_Action (Table.States (1174), 106, 34);
-            Add_Error (Table.States (1174));
+            Table.States (1174).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (1174), 117, 130);
             Add_Goto (Table.States (1174), 128, 41);
             Add_Goto (Table.States (1174), 197, 133);
@@ -13399,14 +14244,17 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1174), 330, 146);
             Table.States (1174).Kernel := To_Vector ((0 => (144, 53, 4, 
False)));
             Table.States (1174).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (1175).Action_List.Set_Capacity (41);
             Add_Action (Table.States (1175), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 72, 73, 
74, 93, 104, 105, 106, 107), (281, 0), 9,
             record_representation_clause_0'Access, null);
             Table.States (1175).Kernel := To_Vector ((0 => (281, 96, 0, 
False)));
             Table.States (1175).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 281, 9)));
+            Table.States (1176).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1176), (77, 96), (254, 2), 6, 
parameter_specification_2'Access, null);
             Table.States (1176).Kernel := To_Vector ((0 => (254, 192, 0, 
False)));
             Table.States (1176).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 6)));
+            Table.States (1177).Action_List.Set_Capacity (7);
             Add_Action (Table.States (1177), 76, 235);
             Add_Action (Table.States (1177), 77, Reduce, (254, 1), 6, 
parameter_specification_1'Access, null);
             Add_Action (Table.States (1177), 82, 1224);
@@ -13414,72 +14262,79 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1177), 96, Reduce, (254, 1), 6, 
parameter_specification_1'Access, null);
             Add_Action (Table.States (1177), 101, 239);
             Add_Action (Table.States (1177), 102, 240);
-            Add_Error (Table.States (1177));
+            Table.States (1177).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (1177), 115, 241);
             Add_Goto (Table.States (1177), 322, 242);
             Table.States (1177).Kernel := To_Vector (((128, 239, 2, True), 
(239, 239, 5, True), (239, 239, 2, True),
             (254, 239, 1, False), (254, 239, 0, False), (272, 239, 3, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True), (293, 239, 2, True)));
             Table.States (1177).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 6)));
+            Table.States (1178).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1178), (74, 96), (202, 6), 4, null, 
null);
             Table.States (1178).Kernel := To_Vector ((0 => (202, 80, 0, 
False)));
             Table.States (1178).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 4)));
+            Table.States (1179).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1179), 74, 1225);
             Add_Conflict (Table.States (1179), 74, (203, 1), 4, 
formal_derived_type_definition_1'Access, null);
             Add_Action (Table.States (1179), 96, Reduce, (203, 1), 4, 
formal_derived_type_definition_1'Access, null);
-            Add_Error (Table.States (1179));
             Table.States (1179).Kernel := To_Vector (((203, 119, 2, False), 
(203, 119, 0, False)));
             Table.States (1179).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 203, 4)));
+            Table.States (1180).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1180), 77, 1226);
-            Add_Error (Table.States (1180));
             Table.States (1180).Kernel := To_Vector ((0 => (205, 80, 1, 
False)));
             Table.States (1180).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1226)));
+            Table.States (1181).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1181), 96, 1227);
-            Add_Error (Table.States (1181));
             Table.States (1181).Kernel := To_Vector ((0 => (204, 122, 1, 
False)));
             Table.States (1181).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1227)));
+            Table.States (1182).Action_List.Set_Capacity (8);
             Add_Action (Table.States (1182), (29, 47, 48, 50, 69, 71, 74, 
104), (198, 1), 8,
             formal_object_declaration_1'Access, null);
             Table.States (1182).Kernel := To_Vector ((0 => (198, 96, 0, 
False)));
             Table.States (1182).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 198, 8)));
+            Table.States (1183).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1183), 96, 1228);
-            Add_Error (Table.States (1183));
             Table.States (1183).Kernel := To_Vector ((0 => (198, 122, 1, 
False)));
             Table.States (1183).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1228)));
+            Table.States (1184).Action_List.Set_Capacity (46);
             Add_Action (Table.States (1184), (4, 5, 13, 15, 17, 18, 22, 23, 
24, 25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (222, 1), 9, if_statement_1'Access, null);
             Table.States (1184).Kernel := To_Vector ((0 => (222, 96, 0, 
False)));
             Table.States (1184).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 222, 9)));
+            Table.States (1185).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1185), 96, 1229);
-            Add_Error (Table.States (1185));
             Table.States (1185).Kernel := To_Vector ((0 => (222, 32, 1, 
False)));
             Table.States (1185).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1229)));
+            Table.States (1186).Action_List.Set_Capacity (4);
             Add_Action (Table.States (1186), 96, Reduce, (240, 1), 0, null, 
null);
             Add_Action (Table.States (1186), 104, 119);
             Add_Action (Table.States (1186), 105, 33);
             Add_Action (Table.States (1186), 106, 34);
-            Add_Error (Table.States (1186));
+            Table.States (1186).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (1186), 128, 41);
-            Add_Goto (Table.States (1186), 239, 630);
+            Add_Goto (Table.States (1186), 239, 632);
             Add_Goto (Table.States (1186), 240, 1230);
             Add_Goto (Table.States (1186), 272, 92);
             Add_Goto (Table.States (1186), 293, 97);
             Table.States (1186).Kernel := To_Vector ((0 => (247, 24, 1, 
False)));
             Table.States (1186).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 0)));
+            Table.States (1187).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1187), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (247, 1), 9,
             package_body_1'Access, package_body_1_check'Access);
             Table.States (1187).Kernel := To_Vector ((0 => (247, 96, 0, 
False)));
             Table.States (1187).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 247, 9)));
+            Table.States (1188).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1188), (1 =>  96), (251, 0), 9, 
package_specification_0'Access,
             package_specification_0_check'Access);
             Table.States (1188).Kernel := To_Vector ((0 => (251, 240, 0, 
False)));
             Table.States (1188).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 251, 9)));
+            Table.States (1189).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1189), 104, 1231);
-            Add_Error (Table.States (1189));
             Table.States (1189).Kernel := To_Vector ((0 => (177, 28, 4, 
False)));
             Table.States (1189).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 1231)));
+            Table.States (1190).Action_List.Set_Capacity (13);
             Add_Action (Table.States (1190), 3, 121);
             Add_Action (Table.States (1190), 35, Reduce, (192, 1), 0, null, 
null);
             Add_Action (Table.States (1190), 39, 122);
@@ -13493,7 +14348,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1190), 104, 119);
             Add_Action (Table.States (1190), 105, 33);
             Add_Action (Table.States (1190), 106, 34);
-            Add_Error (Table.States (1190));
+            Table.States (1190).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (1190), 117, 130);
             Add_Goto (Table.States (1190), 128, 41);
             Add_Goto (Table.States (1190), 191, 131);
@@ -13516,11 +14371,13 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1190), 330, 146);
             Table.States (1190).Kernel := To_Vector ((0 => (176, 72, 4, 
False)));
             Table.States (1190).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (1191).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1191), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (264, 0), 9,
             protected_body_0'Access, protected_body_0_check'Access);
             Table.States (1191).Kernel := To_Vector ((0 => (264, 96, 0, 
False)));
             Table.States (1191).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 264, 9)));
+            Table.States (1192).Action_List.Set_Capacity (17);
             Add_Action (Table.States (1192), 24, Reduce, (159, 1), 0, null, 
null);
             Add_Action (Table.States (1192), 25, Reduce, (246, 2), 0, null, 
null);
             Add_Action (Table.States (1192), 28, 183);
@@ -13538,7 +14395,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1192), 69, 27);
             Add_Action (Table.States (1192), 71, 28);
             Add_Action (Table.States (1192), 104, 185);
-            Add_Error (Table.States (1192));
+            Table.States (1192).Goto_List.Set_Capacity (54);
             Add_Goto (Table.States (1192), 112, 35);
             Add_Goto (Table.States (1192), 121, 37);
             Add_Goto (Table.States (1192), 127, 40);
@@ -13546,7 +14403,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1192), 135, 46);
             Add_Goto (Table.States (1192), 157, 391);
             Add_Goto (Table.States (1192), 158, 392);
-            Add_Goto (Table.States (1192), 159, 667);
+            Add_Goto (Table.States (1192), 159, 669);
             Add_Goto (Table.States (1192), 179, 54);
             Add_Goto (Table.States (1192), 182, 55);
             Add_Goto (Table.States (1192), 186, 56);
@@ -13598,21 +14455,25 @@ package body Ada_Process_LALR_Main is
          end Subr_19;
          procedure Subr_20
          is begin
+            Table.States (1193).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1193), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (304, 0), 9,
             single_protected_declaration_0'Access, 
single_protected_declaration_0_check'Access);
             Table.States (1193).Kernel := To_Vector ((0 => (304, 96, 0, 
False)));
             Table.States (1193).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 9)));
+            Table.States (1194).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1194), (1 =>  96), (266, 0), 5, 
protected_definition_0'Access,
             protected_definition_0_check'Access);
             Table.States (1194).Kernel := To_Vector ((0 => (266, 220, 0, 
False)));
             Table.States (1194).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 266, 5)));
+            Table.States (1195).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1195), 96, Reduce, (220, 1), 0, null, 
null);
             Add_Action (Table.States (1195), 104, 149);
-            Add_Error (Table.States (1195));
+            Table.States (1195).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1195), 220, 1234);
             Table.States (1195).Kernel := To_Vector ((0 => (316, 24, 1, 
False)));
             Table.States (1195).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (1196).Action_List.Set_Capacity (17);
             Add_Action (Table.States (1196), 24, Reduce, (159, 1), 0, null, 
null);
             Add_Action (Table.States (1196), 25, Reduce, (246, 2), 0, null, 
null);
             Add_Action (Table.States (1196), 28, 183);
@@ -13630,7 +14491,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1196), 69, 27);
             Add_Action (Table.States (1196), 71, 28);
             Add_Action (Table.States (1196), 104, 185);
-            Add_Error (Table.States (1196));
+            Table.States (1196).Goto_List.Set_Capacity (54);
             Add_Goto (Table.States (1196), 112, 35);
             Add_Goto (Table.States (1196), 121, 37);
             Add_Goto (Table.States (1196), 127, 40);
@@ -13638,7 +14499,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1196), 135, 46);
             Add_Goto (Table.States (1196), 157, 391);
             Add_Goto (Table.States (1196), 158, 392);
-            Add_Goto (Table.States (1196), 159, 692);
+            Add_Goto (Table.States (1196), 159, 694);
             Add_Goto (Table.States (1196), 179, 54);
             Add_Goto (Table.States (1196), 182, 55);
             Add_Goto (Table.States (1196), 186, 56);
@@ -13687,72 +14548,80 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1196), 331, 116);
             Table.States (1196).Kernel := To_Vector ((0 => (319, 74, 2, 
False)));
             Table.States (1196).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 318, 0)));
+            Table.States (1197).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1197), 96, 1236);
-            Add_Error (Table.States (1197));
             Table.States (1197).Kernel := To_Vector ((0 => (319, 220, 1, 
False)));
             Table.States (1197).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1236)));
+            Table.States (1198).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1198), 96, Reduce, (220, 1), 0, null, 
null);
             Add_Action (Table.States (1198), 104, 149);
-            Add_Error (Table.States (1198));
+            Table.States (1198).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1198), 220, 1237);
             Table.States (1198).Kernel := To_Vector ((0 => (305, 24, 1, 
False)));
             Table.States (1198).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (1199).Action_List.Set_Capacity (6);
             Add_Action (Table.States (1199), 7, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (1199), 8, 1144);
-            Add_Action (Table.States (1199), 40, 742);
+            Add_Action (Table.States (1199), 40, 744);
             Add_Action (Table.States (1199), 104, 119);
             Add_Action (Table.States (1199), 105, 33);
             Add_Action (Table.States (1199), 106, 34);
-            Add_Error (Table.States (1199));
+            Table.States (1199).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (1199), 114, 1145);
             Add_Goto (Table.States (1199), 128, 41);
             Add_Goto (Table.States (1199), 147, 1238);
             Add_Goto (Table.States (1199), 239, 484);
-            Add_Goto (Table.States (1199), 241, 721);
+            Add_Goto (Table.States (1199), 241, 723);
             Add_Goto (Table.States (1199), 272, 92);
             Add_Goto (Table.States (1199), 293, 97);
             Add_Goto (Table.States (1199), 314, 1147);
             Table.States (1199).Kernel := To_Vector ((0 => (120, 42, 1, 
False)));
             Table.States (1199).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (1200).Action_List.Set_Capacity (6);
             Add_Action (Table.States (1200), 7, Reduce, (241, 1), 0, null, 
null);
             Add_Action (Table.States (1200), 8, 1144);
-            Add_Action (Table.States (1200), 40, 742);
+            Add_Action (Table.States (1200), 40, 744);
             Add_Action (Table.States (1200), 104, 119);
             Add_Action (Table.States (1200), 105, 33);
             Add_Action (Table.States (1200), 106, 34);
-            Add_Error (Table.States (1200));
+            Table.States (1200).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (1200), 114, 1145);
             Add_Goto (Table.States (1200), 128, 41);
             Add_Goto (Table.States (1200), 147, 1239);
             Add_Goto (Table.States (1200), 239, 484);
-            Add_Goto (Table.States (1200), 241, 721);
+            Add_Goto (Table.States (1200), 241, 723);
             Add_Goto (Table.States (1200), 272, 92);
             Add_Goto (Table.States (1200), 293, 97);
             Add_Goto (Table.States (1200), 314, 1147);
             Table.States (1200).Kernel := To_Vector ((0 => (120, 42, 1, 
False)));
             Table.States (1200).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (1201).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1201), (77, 83), (226, 0), 3, null, 
null);
             Table.States (1201).Kernel := To_Vector ((0 => (226, 225, 0, 
True)));
             Table.States (1201).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 226, 3)));
             Table.States (1201).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1202).Action_List.Set_Capacity (5);
             Add_Action (Table.States (1202), 53, 1240);
             Add_Action (Table.States (1202), 76, 235);
             Add_Action (Table.States (1202), 84, 237);
             Add_Action (Table.States (1202), 101, 239);
             Add_Action (Table.States (1202), 102, 240);
-            Add_Error (Table.States (1202));
+            Table.States (1202).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (1202), 115, 241);
             Add_Goto (Table.States (1202), 322, 242);
             Table.States (1202).Kernel := To_Vector (((128, 239, 2, True), 
(225, 239, 2, False), (239, 239, 5, True),
             (239, 239, 2, True), (272, 239, 3, True), (293, 239, 2, True), 
(293, 239, 2, True), (293, 239, 2, True),
             (293, 239, 2, True)));
             Table.States (1202).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 53, 1240)));
+            Table.States (1203).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1203), (77, 83), (225, 0), 3, null, 
null);
             Table.States (1203).Kernel := To_Vector ((0 => (225, 80, 0, 
False)));
             Table.States (1203).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 225, 3)));
+            Table.States (1204).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1204), (74, 96), (326, 4), 5, null, 
null);
             Table.States (1204).Kernel := To_Vector ((0 => (326, 279, 0, 
False)));
             Table.States (1204).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 5)));
+            Table.States (1205).Action_List.Set_Capacity (11);
             Add_Action (Table.States (1205), 3, 121);
             Add_Action (Table.States (1205), 39, 122);
             Add_Action (Table.States (1205), 40, 123);
@@ -13764,7 +14633,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1205), 104, 119);
             Add_Action (Table.States (1205), 105, 33);
             Add_Action (Table.States (1205), 106, 34);
-            Add_Error (Table.States (1205));
+            Table.States (1205).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (1205), 117, 130);
             Add_Goto (Table.States (1205), 128, 41);
             Add_Goto (Table.States (1205), 197, 133);
@@ -13778,6 +14647,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1205), 330, 146);
             Table.States (1205).Kernel := To_Vector ((0 => (279, 85, 1, 
False)));
             Table.States (1205).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (1206).Action_List.Set_Capacity (15);
             Add_Action (Table.States (1206), 3, 121);
             Add_Action (Table.States (1206), 39, 122);
             Add_Action (Table.States (1206), 40, 261);
@@ -13793,12 +14663,12 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1206), 104, 119);
             Add_Action (Table.States (1206), 105, 33);
             Add_Action (Table.States (1206), 106, 34);
-            Add_Error (Table.States (1206));
+            Table.States (1206).Goto_List.Set_Capacity (22);
             Add_Goto (Table.States (1206), 117, 130);
             Add_Goto (Table.States (1206), 128, 41);
             Add_Goto (Table.States (1206), 165, 269);
             Add_Goto (Table.States (1206), 166, 1242);
-            Add_Goto (Table.States (1206), 191, 599);
+            Add_Goto (Table.States (1206), 191, 601);
             Add_Goto (Table.States (1206), 197, 133);
             Add_Goto (Table.States (1206), 239, 274);
             Add_Goto (Table.States (1206), 258, 135);
@@ -13818,21 +14688,26 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1206), 330, 146);
             Table.States (1206).Kernel := To_Vector ((0 => (329, 72, 1, 
False)));
             Table.States (1206).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 166, 0)));
+            Table.States (1207).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1207), 24, 1243);
             Add_Action (Table.States (1207), 72, 1206);
-            Add_Error (Table.States (1207));
+            Table.States (1207).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1207), 329, 1244);
             Table.States (1207).Kernel := To_Vector (((327, 328, 3, False), 
(328, 328, 2, True)));
             Table.States (1207).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1243)));
+            Table.States (1208).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1208), (24, 72), (328, 1), 1, null, 
null);
             Table.States (1208).Kernel := To_Vector ((0 => (328, 329, 0, 
False)));
             Table.States (1208).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 328, 1)));
+            Table.States (1209).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1209), (74, 82, 96), (147, 2), 2, null, 
null);
             Table.States (1209).Kernel := To_Vector ((0 => (147, 114, 0, 
False)));
             Table.States (1209).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 147, 2)));
+            Table.States (1210).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1210), (74, 82, 96), (147, 0), 2, null, 
null);
             Table.States (1210).Kernel := To_Vector ((0 => (147, 314, 0, 
False)));
             Table.States (1210).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 147, 2)));
+            Table.States (1211).Action_List.Set_Capacity (14);
             Add_Action (Table.States (1211), 3, 121);
             Add_Action (Table.States (1211), 39, 122);
             Add_Action (Table.States (1211), 40, 123);
@@ -13847,7 +14722,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1211), 104, 119);
             Add_Action (Table.States (1211), 105, 33);
             Add_Action (Table.States (1211), 106, 34);
-            Add_Error (Table.States (1211));
+            Table.States (1211).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (1211), 117, 130);
             Add_Goto (Table.States (1211), 128, 41);
             Add_Goto (Table.States (1211), 191, 131);
@@ -13870,26 +14745,28 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1211), 330, 146);
             Table.States (1211).Kernel := To_Vector ((0 => (146, 82, 1, 
False)));
             Table.States (1211).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (1212).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1212), 96, 1246);
-            Add_Error (Table.States (1212));
             Table.States (1212).Kernel := To_Vector ((0 => (146, 122, 1, 
False)));
             Table.States (1212).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1246)));
+            Table.States (1213).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1213), 10, 1006);
             Add_Action (Table.States (1213), 74, Reduce, (119, 0), 2, null, 
null);
             Add_Action (Table.States (1213), 96, Reduce, (119, 0), 2, null, 
null);
-            Add_Error (Table.States (1213));
             Table.States (1213).Kernel := To_Vector (((119, 227, 0, False), 
(227, 227, 2, True)));
             Table.States (1213).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 119, 2)));
+            Table.States (1214).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1214), 49, 1247);
-            Add_Error (Table.States (1214));
             Table.States (1214).Kernel := To_Vector ((0 => (259, 74, 2, 
False)));
             Table.States (1214).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 49, 1247)));
-            Add_Action (Table.States (1215), 41, 705);
-            Add_Action (Table.States (1215), 54, 708);
-            Add_Error (Table.States (1215));
+            Table.States (1215).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1215), 41, 707);
+            Add_Action (Table.States (1215), 54, 710);
+            Table.States (1215).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1215), 280, 1248);
             Table.States (1215).Kernel := To_Vector ((0 => (162, 74, 2, 
False)));
-            Table.States (1215).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 705)));
+            Table.States (1215).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 707)));
+            Table.States (1216).Action_List.Set_Capacity (24);
             Add_Action (Table.States (1216), 4, 1);
             Add_Action (Table.States (1216), 5, 2);
             Add_Action (Table.States (1216), 13, Reduce, (132, 1), 0, null, 
null);
@@ -13914,7 +14791,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1216), 104, 360);
             Add_Action (Table.States (1216), 105, 33);
             Add_Action (Table.States (1216), 106, 34);
-            Add_Error (Table.States (1216));
+            Table.States (1216).Goto_List.Set_Capacity (31);
             Add_Goto (Table.States (1216), 113, 36);
             Add_Goto (Table.States (1216), 123, 38);
             Add_Goto (Table.States (1216), 126, 39);
@@ -13948,37 +14825,43 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1216), 323, 114);
             Table.States (1216).Kernel := To_Vector ((0 => (187, 87, 0, 
False)));
             Table.States (1216).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 0)));
+            Table.States (1217).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1217), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (244, 1), 9,
             object_declaration_1'Access, null);
             Table.States (1217).Kernel := To_Vector ((0 => (244, 96, 0, 
False)));
             Table.States (1217).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 244, 9)));
+            Table.States (1218).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1218), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (244, 2), 9,
             object_declaration_2'Access, null);
             Table.States (1218).Kernel := To_Vector ((0 => (244, 96, 0, 
False)));
             Table.States (1218).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 244, 9)));
+            Table.States (1219).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1219), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (244, 0), 9,
             object_declaration_0'Access, null);
             Table.States (1219).Kernel := To_Vector ((0 => (244, 96, 0, 
False)));
             Table.States (1219).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 244, 9)));
+            Table.States (1220).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1220), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (179, 0), 9,
             entry_declaration_0'Access, null);
             Table.States (1220).Kernel := To_Vector ((0 => (179, 96, 0, 
False)));
             Table.States (1220).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 179, 9)));
+            Table.States (1221).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1221), 96, 1250);
-            Add_Error (Table.States (1221));
             Table.States (1221).Kernel := To_Vector ((0 => (307, 240, 1, 
False)));
             Table.States (1221).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1250)));
+            Table.States (1222).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1222), (22, 23, 77), (172, 0), 4, 
elsif_expression_item_0'Access, null);
             Table.States (1222).Kernel := To_Vector ((0 => (172, 192, 0, 
False)));
             Table.States (1222).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 172, 4)));
+            Table.States (1223).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1223), 85, 1251);
-            Add_Error (Table.States (1223));
             Table.States (1223).Kernel := To_Vector ((0 => (144, 301, 3, 
False)));
             Table.States (1223).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 85, 1251)));
+            Table.States (1224).Action_List.Set_Capacity (14);
             Add_Action (Table.States (1224), 3, 121);
             Add_Action (Table.States (1224), 39, 122);
             Add_Action (Table.States (1224), 40, 123);
@@ -13993,7 +14876,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1224), 104, 119);
             Add_Action (Table.States (1224), 105, 33);
             Add_Action (Table.States (1224), 106, 34);
-            Add_Error (Table.States (1224));
+            Table.States (1224).Goto_List.Set_Capacity (20);
             Add_Goto (Table.States (1224), 117, 130);
             Add_Goto (Table.States (1224), 128, 41);
             Add_Goto (Table.States (1224), 191, 131);
@@ -14016,111 +14899,127 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1224), 330, 146);
             Table.States (1224).Kernel := To_Vector ((0 => (254, 82, 0, 
False)));
             Table.States (1224).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 0)));
+            Table.States (1225).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1225), 49, 1253);
-            Add_Error (Table.States (1225));
             Table.States (1225).Kernel := To_Vector ((0 => (203, 74, 1, 
False)));
             Table.States (1225).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 49, 1253)));
+            Table.States (1226).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1226), (74, 96), (205, 0), 3, null, 
null);
             Table.States (1226).Kernel := To_Vector ((0 => (205, 77, 0, 
False)));
             Table.States (1226).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 205, 3)));
+            Table.States (1227).Action_List.Set_Capacity (8);
             Add_Action (Table.States (1227), (29, 47, 48, 50, 69, 71, 74, 
104), (204, 0), 9,
             formal_package_declaration_0'Access, null);
             Table.States (1227).Kernel := To_Vector ((0 => (204, 96, 0, 
False)));
             Table.States (1227).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 204, 9)));
+            Table.States (1228).Action_List.Set_Capacity (8);
             Add_Action (Table.States (1228), (29, 47, 48, 50, 69, 71, 74, 
104), (198, 0), 9,
             formal_object_declaration_0'Access, null);
             Table.States (1228).Kernel := To_Vector ((0 => (198, 96, 0, 
False)));
             Table.States (1228).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 198, 9)));
+            Table.States (1229).Action_List.Set_Capacity (46);
             Add_Action (Table.States (1229), (4, 5, 13, 15, 17, 18, 22, 23, 
24, 25, 26, 27, 28, 29, 30, 31, 32, 36, 37,
             40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 93, 104, 105, 106,
             107), (222, 0), 10, if_statement_0'Access, null);
             Table.States (1229).Kernel := To_Vector ((0 => (222, 96, 0, 
False)));
             Table.States (1229).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 222, 10)));
+            Table.States (1230).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1230), 96, 1254);
-            Add_Error (Table.States (1230));
             Table.States (1230).Kernel := To_Vector ((0 => (247, 240, 1, 
False)));
             Table.States (1230).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1254)));
+            Table.States (1231).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1231), 33, 1255);
-            Add_Error (Table.States (1231));
             Table.States (1231).Kernel := To_Vector ((0 => (177, 104, 3, 
False)));
             Table.States (1231).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 33, 1255)));
+            Table.States (1232).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1232), 35, 1256);
-            Add_Error (Table.States (1232));
             Table.States (1232).Kernel := To_Vector ((0 => (176, 192, 4, 
False)));
             Table.States (1232).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 1256)));
+            Table.States (1233).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1233), 96, 1257);
-            Add_Error (Table.States (1233));
             Table.States (1233).Kernel := To_Vector ((0 => (271, 266, 1, 
False)));
             Table.States (1233).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1257)));
+            Table.States (1234).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1234), 96, 1258);
-            Add_Error (Table.States (1234));
             Table.States (1234).Kernel := To_Vector ((0 => (316, 220, 1, 
False)));
             Table.States (1234).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1258)));
+            Table.States (1235).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1235), 24, 1259);
-            Add_Error (Table.States (1235));
             Table.States (1235).Kernel := To_Vector ((0 => (319, 318, 2, 
False)));
             Table.States (1235).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1259)));
+            Table.States (1236).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1236), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (319, 1), 10,
             task_type_declaration_1'Access, 
task_type_declaration_1_check'Access);
             Table.States (1236).Kernel := To_Vector ((0 => (319, 96, 0, 
False)));
             Table.States (1236).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 319, 10)));
+            Table.States (1237).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1237), 96, 1260);
-            Add_Error (Table.States (1237));
             Table.States (1237).Kernel := To_Vector ((0 => (305, 220, 1, 
False)));
             Table.States (1237).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1260)));
+            Table.States (1238).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1238), (74, 82, 96), (120, 1), 6, 
array_type_definition_1'Access, null);
             Table.States (1238).Kernel := To_Vector ((0 => (120, 147, 0, 
False)));
             Table.States (1238).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 120, 6)));
+            Table.States (1239).Action_List.Set_Capacity (3);
             Add_Action (Table.States (1239), (74, 82, 96), (120, 0), 6, 
array_type_definition_0'Access, null);
             Table.States (1239).Kernel := To_Vector ((0 => (120, 147, 0, 
False)));
             Table.States (1239).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 120, 6)));
+            Table.States (1240).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1240), 80, 1203);
-            Add_Error (Table.States (1240));
             Table.States (1240).Kernel := To_Vector ((0 => (225, 53, 1, 
False)));
             Table.States (1240).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 80, 1203)));
+            Table.States (1241).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1241), (74, 96), (279, 0), 4, null, 
null);
             Table.States (1241).Kernel := To_Vector ((0 => (279, 301, 0, 
False)));
             Table.States (1241).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 279, 4)));
+            Table.States (1242).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1242), 79, 445);
             Add_Action (Table.States (1242), 87, 1261);
-            Add_Error (Table.States (1242));
             Table.States (1242).Kernel := To_Vector (((166, 166, 2, True), 
(329, 166, 1, False)));
             Table.States (1242).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 87, 1261)));
+            Table.States (1243).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1243), 15, 1262);
-            Add_Error (Table.States (1243));
             Table.States (1243).Kernel := To_Vector ((0 => (327, 24, 2, 
False)));
             Table.States (1243).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 15, 1262)));
-            Add_Action (Table.States (1244), (24, 72), (328, 0), 2, null, 
null);
+            Table.States (1244).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1244), (24, 72), (328, 0), 2, 
variant_list_0'Access, null);
             Table.States (1244).Kernel := To_Vector ((0 => (328, 329, 0, 
True)));
             Table.States (1244).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 328, 2)));
             Table.States (1244).Minimal_Complete_Actions_Recursive := True;
+            Table.States (1245).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1245), 74, 337);
             Add_Action (Table.States (1245), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (1245));
+            Table.States (1245).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1245), 122, 1263);
             Table.States (1245).Kernel := To_Vector ((0 => (146, 192, 1, 
False)));
             Table.States (1245).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (1246).Action_List.Set_Capacity (5);
             Add_Action (Table.States (1246), (15, 24, 28, 72, 104), (146, 1), 
5, component_declaration_1'Access, null);
             Table.States (1246).Kernel := To_Vector ((0 => (146, 96, 0, 
False)));
             Table.States (1246).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 146, 5)));
+            Table.States (1247).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1247), 74, 337);
             Add_Action (Table.States (1247), 96, Reduce, (122, 1), 0, null, 
null);
-            Add_Error (Table.States (1247));
+            Table.States (1247).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1247), 122, 1264);
             Table.States (1247).Kernel := To_Vector ((0 => (259, 49, 1, 
False)));
             Table.States (1247).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 0)));
+            Table.States (1248).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1248), (74, 96), (162, 0), 6, 
derived_type_definition_0'Access, null);
             Table.States (1248).Kernel := To_Vector ((0 => (162, 280, 0, 
False)));
             Table.States (1248).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 162, 6)));
+            Table.States (1249).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1249), (24, 72), (187, 0), 6, 
exception_handler_0'Access, null);
             Table.States (1249).Kernel := To_Vector ((0 => (187, 300, 0, 
False)));
             Table.States (1249).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 187, 6)));
+            Table.States (1250).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1250), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (307, 0), 10,
             subprogram_body_0'Access, subprogram_body_0_check'Access);
             Table.States (1250).Kernel := To_Vector ((0 => (307, 96, 0, 
False)));
             Table.States (1250).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 307, 10)));
+            Table.States (1251).Action_List.Set_Capacity (11);
             Add_Action (Table.States (1251), 3, 121);
             Add_Action (Table.States (1251), 39, 122);
             Add_Action (Table.States (1251), 40, 123);
@@ -14132,7 +15031,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1251), 104, 119);
             Add_Action (Table.States (1251), 105, 33);
             Add_Action (Table.States (1251), 106, 34);
-            Add_Error (Table.States (1251));
+            Table.States (1251).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (1251), 117, 130);
             Add_Goto (Table.States (1251), 128, 41);
             Add_Goto (Table.States (1251), 197, 133);
@@ -14146,17 +15045,21 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1251), 330, 146);
             Table.States (1251).Kernel := To_Vector ((0 => (144, 85, 2, 
False)));
             Table.States (1251).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 103, 129)));
+            Table.States (1252).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1252), (77, 96), (254, 0), 8, 
parameter_specification_0'Access, null);
             Table.States (1252).Kernel := To_Vector ((0 => (254, 192, 0, 
False)));
             Table.States (1252).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 8)));
+            Table.States (1253).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1253), (74, 96), (203, 0), 6, 
formal_derived_type_definition_0'Access, null);
             Table.States (1253).Kernel := To_Vector ((0 => (203, 49, 0, 
False)));
             Table.States (1253).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 203, 6)));
+            Table.States (1254).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1254), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (247, 0), 11,
             package_body_0'Access, package_body_0_check'Access);
             Table.States (1254).Kernel := To_Vector ((0 => (247, 96, 0, 
False)));
             Table.States (1254).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 247, 11)));
+            Table.States (1255).Action_List.Set_Capacity (11);
             Add_Action (Table.States (1255), 3, 121);
             Add_Action (Table.States (1255), 39, 122);
             Add_Action (Table.States (1255), 40, 474);
@@ -14168,7 +15071,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1255), 104, 119);
             Add_Action (Table.States (1255), 105, 33);
             Add_Action (Table.States (1255), 106, 34);
-            Add_Error (Table.States (1255));
+            Table.States (1255).Goto_List.Set_Capacity (14);
             Add_Goto (Table.States (1255), 117, 130);
             Add_Goto (Table.States (1255), 128, 41);
             Add_Goto (Table.States (1255), 167, 1266);
@@ -14185,6 +15088,7 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1255), 330, 146);
             Table.States (1255).Kernel := To_Vector ((0 => (177, 33, 2, 
False)));
             Table.States (1255).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 119)));
+            Table.States (1256).Action_List.Set_Capacity (16);
             Add_Action (Table.States (1256), 13, Reduce, (159, 1), 0, null, 
null);
             Add_Action (Table.States (1256), 25, Reduce, (246, 2), 0, null, 
null);
             Add_Action (Table.States (1256), 28, 183);
@@ -14201,7 +15105,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1256), 69, 27);
             Add_Action (Table.States (1256), 71, 28);
             Add_Action (Table.States (1256), 104, 185);
-            Add_Error (Table.States (1256));
+            Table.States (1256).Goto_List.Set_Capacity (53);
             Add_Goto (Table.States (1256), 112, 35);
             Add_Goto (Table.States (1256), 121, 37);
             Add_Goto (Table.States (1256), 127, 40);
@@ -14257,101 +15161,113 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1256), 331, 116);
             Table.States (1256).Kernel := To_Vector ((0 => (176, 35, 3, 
False)));
             Table.States (1256).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 0)));
+            Table.States (1257).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1257), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (271, 0), 11,
             protected_type_declaration_0'Access, 
protected_type_declaration_0_check'Access);
             Table.States (1257).Kernel := To_Vector ((0 => (271, 96, 0, 
False)));
             Table.States (1257).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 271, 11)));
+            Table.States (1258).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1258), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (316, 0), 11,
             task_body_0'Access, task_body_0_check'Access);
             Table.States (1258).Kernel := To_Vector ((0 => (316, 96, 0, 
False)));
             Table.States (1258).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 316, 11)));
+            Table.States (1259).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1259), 96, Reduce, (220, 1), 0, null, 
null);
             Add_Action (Table.States (1259), 104, 149);
-            Add_Error (Table.States (1259));
+            Table.States (1259).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1259), 220, 1268);
             Table.States (1259).Kernel := To_Vector ((0 => (319, 24, 1, 
False)));
             Table.States (1259).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (1260).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1260), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (305, 0), 11,
             single_task_declaration_0'Access, 
single_task_declaration_0_check'Access);
             Table.States (1260).Kernel := To_Vector ((0 => (305, 96, 0, 
False)));
             Table.States (1260).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 305, 11)));
-            Add_Action (Table.States (1261), 15, 885);
+            Table.States (1261).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (1261), 15, 886);
             Add_Action (Table.States (1261), 24, Reduce, (150, 1), 0, null, 
null);
             Add_Action (Table.States (1261), 28, 183);
-            Add_Action (Table.States (1261), 41, 886);
+            Add_Action (Table.States (1261), 41, 887);
             Add_Action (Table.States (1261), 72, Reduce, (150, 1), 0, null, 
null);
             Add_Action (Table.States (1261), 104, 164);
-            Add_Error (Table.States (1261));
-            Add_Goto (Table.States (1261), 121, 887);
+            Table.States (1261).Goto_List.Set_Capacity (10);
+            Add_Goto (Table.States (1261), 121, 888);
             Add_Goto (Table.States (1261), 127, 40);
-            Add_Goto (Table.States (1261), 146, 888);
-            Add_Goto (Table.States (1261), 148, 889);
-            Add_Goto (Table.States (1261), 149, 890);
+            Add_Goto (Table.States (1261), 146, 889);
+            Add_Goto (Table.States (1261), 148, 890);
+            Add_Goto (Table.States (1261), 149, 891);
             Add_Goto (Table.States (1261), 150, 1269);
             Add_Goto (Table.States (1261), 182, 55);
-            Add_Goto (Table.States (1261), 219, 892);
+            Add_Goto (Table.States (1261), 219, 893);
             Add_Goto (Table.States (1261), 281, 94);
-            Add_Goto (Table.States (1261), 327, 893);
+            Add_Goto (Table.States (1261), 327, 894);
             Table.States (1261).Kernel := To_Vector ((0 => (329, 87, 0, 
False)));
             Table.States (1261).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 150, 0)));
+            Table.States (1262).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1262), 96, 1270);
-            Add_Error (Table.States (1262));
             Table.States (1262).Kernel := To_Vector ((0 => (327, 15, 1, 
False)));
             Table.States (1262).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1270)));
+            Table.States (1263).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1263), 96, 1271);
-            Add_Error (Table.States (1263));
             Table.States (1263).Kernel := To_Vector ((0 => (146, 122, 1, 
False)));
             Table.States (1263).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1271)));
+            Table.States (1264).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1264), 96, 1272);
-            Add_Error (Table.States (1264));
             Table.States (1264).Kernel := To_Vector ((0 => (259, 122, 1, 
False)));
             Table.States (1264).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1272)));
+            Table.States (1265).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1265), 96, 1273);
-            Add_Error (Table.States (1265));
             Table.States (1265).Kernel := To_Vector ((0 => (144, 301, 1, 
False)));
             Table.States (1265).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1273)));
+            Table.States (1266).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1266), 77, 1274);
-            Add_Error (Table.States (1266));
             Table.States (1266).Kernel := To_Vector ((0 => (177, 167, 1, 
False)));
             Table.States (1266).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1274)));
+         end Subr_20;
+         procedure Subr_21
+         is begin
+            Table.States (1267).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1267), 13, 1275);
-            Add_Error (Table.States (1267));
             Table.States (1267).Kernel := To_Vector ((0 => (176, 159, 3, 
False)));
             Table.States (1267).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 1275)));
+            Table.States (1268).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1268), 96, 1276);
-            Add_Error (Table.States (1268));
             Table.States (1268).Kernel := To_Vector ((0 => (319, 220, 1, 
False)));
             Table.States (1268).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1276)));
-         end Subr_20;
-         procedure Subr_21
-         is begin
+            Table.States (1269).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1269), (24, 72), (329, 0), 4, 
variant_0'Access, null);
             Table.States (1269).Kernel := To_Vector ((0 => (329, 150, 0, 
False)));
             Table.States (1269).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 329, 4)));
+            Table.States (1270).Action_List.Set_Capacity (5);
             Add_Action (Table.States (1270), (15, 24, 28, 72, 104), (327, 0), 
7, variant_part_0'Access, null);
             Table.States (1270).Kernel := To_Vector ((0 => (327, 96, 0, 
False)));
             Table.States (1270).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 327, 7)));
+            Table.States (1271).Action_List.Set_Capacity (5);
             Add_Action (Table.States (1271), (15, 24, 28, 72, 104), (146, 0), 
7, component_declaration_0'Access, null);
             Table.States (1271).Kernel := To_Vector ((0 => (146, 96, 0, 
False)));
             Table.States (1271).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 146, 7)));
+            Table.States (1272).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1272), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (259, 0), 12,
             private_extension_declaration_0'Access, null);
             Table.States (1272).Kernel := To_Vector ((0 => (259, 96, 0, 
False)));
             Table.States (1272).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 259, 12)));
+            Table.States (1273).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1273), (24, 104), (144, 0), 8, 
component_clause_0'Access, null);
             Table.States (1273).Kernel := To_Vector ((0 => (144, 96, 0, 
False)));
             Table.States (1273).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 144, 8)));
+            Table.States (1274).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1274), 72, Reduce, (253, 1), 0, null, 
null);
             Add_Action (Table.States (1274), 76, 431);
-            Add_Error (Table.States (1274));
+            Table.States (1274).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (1274), 199, 344);
             Add_Goto (Table.States (1274), 253, 1277);
             Table.States (1274).Kernel := To_Vector ((0 => (177, 77, 0, 
False)));
             Table.States (1274).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 253, 0)));
+            Table.States (1275).Action_List.Set_Capacity (24);
             Add_Action (Table.States (1275), 4, 1);
             Add_Action (Table.States (1275), 5, 2);
             Add_Action (Table.States (1275), 13, Reduce, (132, 1), 0, null, 
null);
@@ -14376,7 +15292,7 @@ package body Ada_Process_LALR_Main is
             Add_Action (Table.States (1275), 104, 360);
             Add_Action (Table.States (1275), 105, 33);
             Add_Action (Table.States (1275), 106, 34);
-            Add_Error (Table.States (1275));
+            Table.States (1275).Goto_List.Set_Capacity (32);
             Add_Goto (Table.States (1275), 113, 36);
             Add_Goto (Table.States (1275), 123, 38);
             Add_Goto (Table.States (1275), 126, 39);
@@ -14411,28 +15327,32 @@ package body Ada_Process_LALR_Main is
             Add_Goto (Table.States (1275), 323, 114);
             Table.States (1275).Kernel := To_Vector ((0 => (176, 13, 2, 
False)));
             Table.States (1275).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 218, 0)));
+            Table.States (1276).Action_List.Set_Capacity (40);
             Add_Action (Table.States (1276), (4, 5, 13, 15, 17, 18, 24, 25, 
27, 28, 29, 30, 31, 32, 36, 37, 40, 41, 46,
             47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
93, 104, 105, 106, 107), (319, 0), 13,
             task_type_declaration_0'Access, 
task_type_declaration_0_check'Access);
             Table.States (1276).Kernel := To_Vector ((0 => (319, 96, 0, 
False)));
             Table.States (1276).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 319, 13)));
+            Table.States (1277).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1277), (1 =>  72), (177, 0), 7, 
entry_body_formal_part_0'Access, null);
             Table.States (1277).Kernel := To_Vector ((0 => (177, 253, 0, 
False)));
             Table.States (1277).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 177, 7)));
+            Table.States (1278).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1278), 24, 1279);
-            Add_Error (Table.States (1278));
             Table.States (1278).Kernel := To_Vector ((0 => (176, 218, 2, 
False)));
             Table.States (1278).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1279)));
+            Table.States (1279).Action_List.Set_Capacity (2);
             Add_Action (Table.States (1279), 96, Reduce, (220, 1), 0, null, 
null);
             Add_Action (Table.States (1279), 104, 149);
-            Add_Error (Table.States (1279));
+            Table.States (1279).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1279), 220, 1280);
             Table.States (1279).Kernel := To_Vector ((0 => (176, 24, 1, 
False)));
             Table.States (1279).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 0)));
+            Table.States (1280).Action_List.Set_Capacity (1);
             Add_Action (Table.States (1280), 96, 1281);
-            Add_Error (Table.States (1280));
             Table.States (1280).Kernel := To_Vector ((0 => (176, 220, 1, 
False)));
             Table.States (1280).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 96, 1281)));
+            Table.States (1281).Action_List.Set_Capacity (7);
             Add_Action (Table.States (1281), (24, 25, 28, 29, 40, 46, 50), 
(176, 0), 12, entry_body_0'Access,
             entry_body_0_check'Access);
             Table.States (1281).Kernel := To_Vector ((0 => (176, 96, 0, 
False)));
@@ -14460,6 +15380,7 @@ package body Ada_Process_LALR_Main is
          Subr_19;
          Subr_20;
          Subr_21;
+         Table.Error_Action := new Parse_Action_Node'((Verb => Error), null);
       end;
 
       WisiToken.Parse.LR.Parser.New_Parser
diff --git a/packages/ada-mode/ada_process_lr1_main.adb 
b/packages/ada-mode/ada_process_lr1_main.adb
index 593d0a4..e198fe8 100644
--- a/packages/ada-mode/ada_process_lr1_main.adb
+++ b/packages/ada-mode/ada_process_lr1_main.adb
@@ -77,7 +77,7 @@ package body Ada_Process_LR1_Main is
          Task_Count  => 0,
          Check_Limit => 4,
          Check_Delta_Limit => 100,
-         Enqueue_Limit => 45000);
+         Enqueue_Limit => 58000);
 
       function Actions return 
WisiToken.Parse.LR.Semantic_Action_Array_Arrays.Vector
       is begin
@@ -136,6 +136,8 @@ package body Ada_Process_LR1_Main is
             Acts (139)(0) := (case_statement_0'Access, null);
             Acts (140).Set_First_Last (0, 0);
             Acts (140)(0) := (case_statement_alternative_0'Access, null);
+            Acts (141).Set_First_Last (0, 1);
+            Acts (141)(0) := (case_statement_alternative_list_0'Access, null);
             Acts (142).Set_First_Last (0, 4);
             Acts (142)(2) := (compilation_unit_2'Access, null);
             Acts (143).Set_First_Last (0, 1);
@@ -162,8 +164,12 @@ package body Ada_Process_LR1_Main is
             Acts (169)(1) := (discriminant_part_opt_1'Access, null);
             Acts (172).Set_First_Last (0, 0);
             Acts (172)(0) := (elsif_expression_item_0'Access, null);
+            Acts (173).Set_First_Last (0, 1);
+            Acts (173)(0) := (elsif_expression_list_0'Access, null);
             Acts (174).Set_First_Last (0, 0);
             Acts (174)(0) := (elsif_statement_item_0'Access, null);
+            Acts (175).Set_First_Last (0, 1);
+            Acts (175)(0) := (elsif_statement_list_0'Access, null);
             Acts (176).Set_First_Last (0, 0);
             Acts (176)(0) := (entry_body_0'Access, entry_body_0_check'Access);
             Acts (177).Set_First_Last (0, 1);
@@ -180,6 +186,8 @@ package body Ada_Process_LR1_Main is
             Acts (187).Set_First_Last (0, 1);
             Acts (187)(0) := (exception_handler_0'Access, null);
             Acts (187)(1) := (exception_handler_1'Access, null);
+            Acts (188).Set_First_Last (0, 2);
+            Acts (188)(0) := (exception_handler_list_0'Access, null);
             Acts (190).Set_First_Last (0, 1);
             Acts (190)(0) := (exit_statement_0'Access, null);
             Acts (190)(1) := (exit_statement_1'Access, null);
@@ -320,12 +328,8 @@ package body Ada_Process_LR1_Main is
             Acts (254)(1) := (parameter_specification_1'Access, null);
             Acts (254)(2) := (parameter_specification_2'Access, null);
             Acts (254)(3) := (parameter_specification_3'Access, null);
-            Acts (255).Set_First_Last (0, 1);
-            Acts (255)(0) := (parameter_specification_list_0'Access, null);
-            Acts (256).Set_First_Last (0, 2);
+            Acts (256).Set_First_Last (0, 1);
             Acts (256)(0) := (paren_expression_0'Access, null);
-            Acts (256)(1) := (paren_expression_1'Access, null);
-            Acts (256)(2) := (paren_expression_2'Access, null);
             Acts (257).Set_First_Last (0, 2);
             Acts (257)(0) := (pragma_g_0'Access, null);
             Acts (257)(1) := (pragma_g_1'Access, null);
@@ -440,6 +444,8 @@ package body Ada_Process_LR1_Main is
             Acts (323)(0) := (timed_entry_call_0'Access, null);
             Acts (327).Set_First_Last (0, 0);
             Acts (327)(0) := (variant_part_0'Access, null);
+            Acts (328).Set_First_Last (0, 1);
+            Acts (328)(0) := (variant_list_0'Access, null);
             Acts (329).Set_First_Last (0, 0);
             Acts (329)(0) := (variant_0'Access, null);
             Acts (331).Set_First_Last (0, 2);
diff --git a/packages/ada-mode/ada_re2c.c b/packages/ada-mode/ada_re2c.c
index e0a8890..3965021 100644
--- a/packages/ada-mode/ada_re2c.c
+++ b/packages/ada-mode/ada_re2c.c
@@ -5004,13 +5004,11 @@ yy196:
        case 0x01:
        case 0x02:
        case 0x03:
-       case 0x04:
        case 0x05:
        case 0x06:
        case 0x07:
        case 0x08:
        case '\t':
-       case '\n':
        case '\v':
        case '\f':
        case '\r':
@@ -5127,6 +5125,8 @@ yy196:
        case '|':
        case '~':
        case 0x7F:      goto yy195;
+       case 0x04:
+       case '\n':
        case '}':       goto yy197;
        case 0xC2:
        case 0xC3:
diff --git a/packages/ada-mode/build.sh b/packages/ada-mode/build.sh
index 6979a35..b842619 100755
--- a/packages/ada-mode/build.sh
+++ b/packages/ada-mode/build.sh
@@ -18,7 +18,7 @@ gnatprep -DHAVE_GNATCOLL_XREF=$HAVE_GNATCOLL_XREF 
gpr_query.gpr.gp gpr_query.gpr
 # support for libadalang is still experimental
 gnatprep -DHAVE_LIBADALANG="no" ada_mode_wisi_parse.gpr.gp 
ada_mode_wisi_parse.gpr
 
-export GPR_PROJECT_PATH="../wisi-2.1.1"
+export GPR_PROJECT_PATH="../wisi-2.2.0"
 
 gprbuild -p -P gpr_query.gpr
 gprinstall -f -p -P gpr_query.gpr --install-name=gpr_query
diff --git a/packages/ada-mode/dir b/packages/ada-mode/dir
index f6b351a..3af5cd0 100644
--- a/packages/ada-mode/dir
+++ b/packages/ada-mode/dir
@@ -14,6 +14,12 @@ File: dir,   Node: Top       This is the top of the INFO tree
 
 * Menu:
 
+Emacs
+* Ada mode: (ada-mode).         Emacs mode for editing and navigating Ada code.
+* Wisi: (wisi).                 Package providing error-correcting LR parsers.
+* gpr mode: (gpr-mode).         Emacs mode for editing and navigating gpr 
+                                  files (gnat project files).
+
 Emacs editing modes
 * Ada mode: (ada-mode).         Emacs mode for editing and navigating Ada code.
 * gpr mode: (gpr-mode).         Emacs mode for editing and navigating gpr 
diff --git a/packages/ada-mode/gnat-core.el b/packages/ada-mode/gnat-core.el
index 43de9b1..efd2c6f 100644
--- a/packages/ada-mode/gnat-core.el
+++ b/packages/ada-mode/gnat-core.el
@@ -446,6 +446,7 @@ list."
     ("a-finali" . "Ada.Finalization")
     ("a-numeri" . "Ada.Numerics")
     ("a-stream" . "Ada.Streams")
+    ("a-ststio" . "Ada.Streams.Stream_IO")
     ("a-string" . "Ada.Strings")
     ("a-strmap" . "Ada.Strings.Maps")
     ("a-strunb" . "Ada.Strings.Unbounded")
diff --git a/packages/ada-mode/gpr-lalr-elisp.el 
b/packages/ada-mode/gpr-lalr-elisp.el
deleted file mode 100644
index 217d385..0000000
--- a/packages/ada-mode/gpr-lalr-elisp.el
+++ /dev/null
@@ -1,542 +0,0 @@
-;;; gpr-lalr-elisp.el --- Generated parser support file  -*- lexical-binding:t 
-*-
-;;  command line: wisitoken-bnf-generate.exe  --generate LALR elisp elisp 
gpr.wy
-
-;;  Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
-
-;;  This program is free software; you can redistribute it and/or
-;;  modify it under the terms of the GNU General Public License as
-;;  published by the Free Software Foundation; either version 3, or (at
-;;  your option) any later version.
-;;
-;;  This software is distributed in the hope that it will be useful,
-;;  but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;;  General Public License for more details.
-;;
-;;  You should have received a copy of the GNU General Public License
-;;  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-(require 'wisi)
-(require 'wisi-compile)
-(require 'wisi-elisp-parse)
-
-(defconst gpr-lalr-elisp-keyword-table-raw
-  '(
-   ("abstract" . ABSTRACT)
-   ("at" . AT)
-   ("aggregate" . AGGREGATE)
-   ("case" . CASE)
-   ("configuration" . CONFIGURATION)
-   ("end" . END)
-   ("extends" . EXTENDS)
-   ("external" . EXTERNAL)
-   ("external_as_list" . EXTERNAL_AS_LIST)
-   ("for" . FOR)
-   ("is" . IS)
-   ("(" . LEFT_PAREN)
-   ("library" . LIBRARY)
-   ("null" . NULL)
-   ("others" . OTHERS)
-   ("package" . PACKAGE)
-   ("project" . PROJECT)
-   ("renames" . RENAMES)
-   (")" . RIGHT_PAREN)
-   ("standard" . STANDARD)
-   ("type" . TYPE)
-   ("use" . USE)
-   ("when" . WHEN)
-   ("with" . WITH)
-   ))
-
-(defconst gpr-lalr-elisp-token-table-raw
-  '(
-   ("punctuation"
-    (AMPERSAND . "&")
-    (COLON . ":")
-    (COLON_EQUALS . ":=")
-    (COMMA . ",")
-    (DOT . ".")
-    (EQUAL_GREATER . "=>")
-    (QUOTE . "'")
-    (SEMICOLON . ";")
-    (VERTICAL_BAR . "|")
-    )
-   ("number"
-    (NUMERIC_LITERAL ada-wisi-number-p)
-    )
-   ("symbol"
-    (IDENTIFIER . "")
-    )
-   ("string-double"
-    (STRING_LITERAL . "")
-    )
-   ))
-
-(defconst gpr-lalr-elisp-parse-table
-   (wisi-compile-grammar
-   '(((aggregate_g
-       ((LEFT_PAREN string_list RIGHT_PAREN )
-        (wisi-indent-action [0 (wisi-anchored 1 1) (wisi-anchored 1 0)])))
-      (attribute_declaration
-       ((FOR IDENTIFIER USE expression SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken 0 gpr-indent-broken 0])))
-       ((FOR IDENTIFIER LEFT_PAREN discrete_choice RIGHT_PAREN USE expression 
SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 8 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken (- gpr-indent-broken 1) 
gpr-indent-broken (- gpr-indent-broken 1) 0
-                             gpr-indent-broken 0])))
-       ((FOR IDENTIFIER LEFT_PAREN discrete_choice RIGHT_PAREN USE expression 
AT NUMERIC_LITERAL SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 10 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken (- gpr-indent-broken 1) 
gpr-indent-broken (- gpr-indent-broken 1) 0
-                             gpr-indent-broken 0 0 0])))
-       ((FOR EXTERNAL LEFT_PAREN STRING_LITERAL RIGHT_PAREN USE expression 
SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 8 statement-end])
-      (wisi-indent-action [0 gpr-indent-broken (- gpr-indent-broken 1) 
gpr-indent-broken (- gpr-indent-broken 1) 0
-                             gpr-indent-broken 0]))))
-      (attribute_prefix
-       ((PROJECT ))
-       ((name )))
-      (attribute_reference
-       ((attribute_prefix QUOTE IDENTIFIER ))
-       ((attribute_prefix QUOTE IDENTIFIER LEFT_PAREN STRING_LITERAL 
RIGHT_PAREN )))
-      (case_statement
-       ((CASE name IS case_items END CASE SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 4);; for gpr-which-function
-      (wisi-indent-action [0 gpr-indent-broken 0 [gpr-indent-when 
gpr-indent-when] 0 0 0]))))
-      (case_item
-       ((WHEN discrete_choice_list EQUAL_GREATER declarative_items_opt )
-        (progn
-      (wisi-statement-action [1 motion])
-      (wisi-indent-action [0 gpr-indent-broken gpr-indent gpr-indent]))))
-      (case_items
-       (())
-       ((case_item ))
-       ((case_items case_item )))
-      (compilation_unit
-       ((context_clause_opt project_qualifier_opt project_declaration_opt )
-        (wisi-indent-action [0 0 [0 0]])))
-      (context_clause
-       ((with_clause ))
-       ((context_clause with_clause )))
-      (context_clause_opt
-       (())
-       ((context_clause )))
-      (declarative_item
-       ((simple_declarative_item ))
-       ((typed_string_declaration ))
-       ((package_declaration )))
-      (declarative_items
-       ((declarative_item ))
-       ((declarative_items declarative_item )))
-      (declarative_items_opt
-       (())
-       ((declarative_items )))
-      (discrete_choice
-       (())
-       ((STRING_LITERAL ))
-       ((OTHERS )))
-      (discrete_choice_list
-       ((discrete_choice ))
-       ((discrete_choice_list VERTICAL_BAR discrete_choice )))
-      (expression
-       ((term ))
-       ((expression AMPERSAND term )))
-      (external_value
-       ((EXTERNAL aggregate_g ))
-       ((EXTERNAL_AS_LIST aggregate_g )))
-      (identifier_opt
-       (())
-       ((IDENTIFIER )))
-      (name
-       ((identifier_opt ))
-       ((name DOT IDENTIFIER )))
-      (package_declaration
-       ((package_spec ))
-       ((package_extension ))
-       ((package_renaming )))
-      (package_spec
-       ((PACKAGE identifier_opt IS declarative_items_opt END identifier_opt 
SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 4)
-      (wisi-face-apply-action [2 nil font-lock-function-name-face 6 nil 
font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken 0 [gpr-indent gpr-indent] 0 0 
0]))))
-      (package_extension
-       ((PACKAGE identifier_opt EXTENDS name IS declarative_items_opt END 
identifier_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 9 statement-end])
-      (wisi-containing-action 1 6)
-      (wisi-face-apply-action [2 nil font-lock-function-name-face 8 nil 
font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken 0 gpr-indent-broken 0 
[gpr-indent gpr-indent] 0 0 0]))))
-      (package_renaming
-       ((PACKAGE identifier_opt RENAMES name SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-function-name-face 4 nil 
font-lock-function-name-face]))))
-      (project_declaration_opt
-       (())
-       ((simple_project_declaration ))
-       ((project_extension )))
-      (project_extension
-       ((PROJECT identifier_opt EXTENDS STRING_LITERAL IS 
declarative_items_opt END identifier_opt SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 9 statement-end])
-      (wisi-containing-action 1 6)
-      (wisi-face-apply-action [2 nil font-lock-function-name-face 8 nil 
font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken 0 gpr-indent-broken 0 
[gpr-indent gpr-indent] 0 0 0]))))
-      (project_qualifier_opt
-       (())
-       ((ABSTRACT ))
-       ((STANDARD ))
-       ((AGGREGATE ))
-       ((AGGREGATE LIBRARY ))
-       ((LIBRARY ))
-       ((CONFIGURATION )))
-      (simple_declarative_item
-       ((IDENTIFIER COLON_EQUALS expression SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 4 statement-end])
-      (wisi-indent-action [0 gpr-indent-broken gpr-indent-broken 0])))
-       ((IDENTIFIER COLON IDENTIFIER COLON_EQUALS expression SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 6 statement-end])
-      (wisi-indent-action [0 gpr-indent-broken gpr-indent-broken 
gpr-indent-broken gpr-indent-broken 0])))
-       ((attribute_declaration ))
-       ((case_statement ))
-       ((NULL SEMICOLON )
-        (wisi-statement-action [1 statement-start 2 statement-end])))
-      (simple_project_declaration
-       ((PROJECT identifier_opt IS declarative_items_opt END identifier_opt 
SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 4)
-      (wisi-face-apply-action [2 nil font-lock-function-name-face 6 nil 
font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken 0 [gpr-indent gpr-indent] 0 0 
0]))))
-      (string_primary
-       ((STRING_LITERAL ))
-       ((name ))
-       ((external_value ))
-       ((attribute_reference )))
-      (string_list
-       ((expression ))
-       ((string_list COMMA expression )))
-      (term
-       ((string_primary ))
-       ((LEFT_PAREN RIGHT_PAREN ))
-       ((aggregate_g )))
-      (typed_string_declaration
-       ((TYPE IDENTIFIER IS aggregate_g SEMICOLON )
-        (progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-indent-action [0 gpr-indent-broken gpr-indent-broken 
gpr-indent-broken 0]))))
-      (with_clause
-       ((WITH string_list SEMICOLON ))))
-     [((default . error) (ABSTRACT . (context_clause_opt . 0)) (AGGREGATE . 
(context_clause_opt . 0)) (CONFIGURATION . (context_clause_opt . 0)) (LIBRARY . 
(context_clause_opt . 0)) (PROJECT . (context_clause_opt . 0)) (STANDARD . 
(context_clause_opt . 0)) (WITH .  7) (Wisi_EOI . (context_clause_opt . 0)))
-      ((default . error) (PROJECT . (project_qualifier_opt . 1)) (Wisi_EOI . 
(project_qualifier_opt . 1)))
-      ((default . error) (LIBRARY .  14) (PROJECT . (project_qualifier_opt . 
3)) (Wisi_EOI . (project_qualifier_opt . 3)))
-      ((default . error) (PROJECT . (project_qualifier_opt . 6)) (Wisi_EOI . 
(project_qualifier_opt . 6)))
-      ((default . error) (PROJECT . (project_qualifier_opt . 5)) (Wisi_EOI . 
(project_qualifier_opt . 5)))
-      ((default . error) (EXTENDS . (identifier_opt . 0)) (IS . 
(identifier_opt . 0)) (IDENTIFIER .  15))
-      ((default . error) (PROJECT . (project_qualifier_opt . 2)) (Wisi_EOI . 
(project_qualifier_opt . 2)))
-      ((default . error) (EXTERNAL .  17) (EXTERNAL_AS_LIST .  18) (LEFT_PAREN 
.  19) (PROJECT .  20) (AMPERSAND . (identifier_opt . 0)) (COMMA . 
(identifier_opt . 0)) (DOT . (identifier_opt . 0)) (QUOTE . (identifier_opt . 
0)) (SEMICOLON . (identifier_opt . 0)) (IDENTIFIER .  15) (STRING_LITERAL .  
21))
-      ((default . error) (Wisi_EOI . accept))
-      ((default . error) (ABSTRACT . (context_clause_opt . 1)) (AGGREGATE . 
(context_clause_opt . 1)) (CONFIGURATION . (context_clause_opt . 1)) (LIBRARY . 
(context_clause_opt . 1)) (PROJECT . (context_clause_opt . 1)) (STANDARD . 
(context_clause_opt . 1)) (WITH .  7) (Wisi_EOI . (context_clause_opt . 1)))
-      ((default . error) (ABSTRACT .  1) (AGGREGATE .  2) (CONFIGURATION .  3) 
(LIBRARY .  4) (PROJECT . (project_qualifier_opt . 0)) (STANDARD .  6) 
(Wisi_EOI . (project_qualifier_opt . 0)))
-      ((default . error) (Wisi_EOI . (project_declaration_opt . 2)))
-      ((default . error) (Wisi_EOI . (project_declaration_opt . 1)))
-      ((default . error) (ABSTRACT . (context_clause . 0)) (AGGREGATE . 
(context_clause . 0)) (CONFIGURATION . (context_clause . 0)) (LIBRARY . 
(context_clause . 0)) (PROJECT . (context_clause . 0)) (STANDARD . 
(context_clause . 0)) (WITH . (context_clause . 0)) (Wisi_EOI . (context_clause 
. 0)))
-      ((default . error) (PROJECT . (project_qualifier_opt . 4)) (Wisi_EOI . 
(project_qualifier_opt . 4)))
-      ((default . error) (AT . (identifier_opt . 1)) (EXTENDS . 
(identifier_opt . 1)) (IS . (identifier_opt . 1)) (RENAMES . (identifier_opt . 
1)) (RIGHT_PAREN . (identifier_opt . 1)) (AMPERSAND . (identifier_opt . 1)) 
(COMMA . (identifier_opt . 1)) (DOT . (identifier_opt . 1)) (QUOTE . 
(identifier_opt . 1)) (SEMICOLON . (identifier_opt . 1)))
-      ((default . error) (EXTENDS .  34) (IS .  35))
-      ((default . error) (LEFT_PAREN .  36))
-      ((default . error) (LEFT_PAREN .  36))
-      ((default . error) (EXTERNAL .  17) (EXTERNAL_AS_LIST .  18) (LEFT_PAREN 
.  19) (PROJECT .  20) (RIGHT_PAREN . ( 39 (identifier_opt . 0))) (AMPERSAND . 
(identifier_opt . 0)) (COMMA . (identifier_opt . 0)) (DOT . (identifier_opt . 
0)) (QUOTE . (identifier_opt . 0)) (IDENTIFIER .  15) (STRING_LITERAL .  21))
-      ((default . error) (QUOTE . (attribute_prefix . 0)))
-      ((default . error) (AT . (string_primary . 0)) (RIGHT_PAREN . 
(string_primary . 0)) (AMPERSAND . (string_primary . 0)) (COMMA . 
(string_primary . 0)) (SEMICOLON . (string_primary . 0)))
-      ((default . error) (AT . (term . 2)) (RIGHT_PAREN . (term . 2)) 
(AMPERSAND . (term . 2)) (COMMA . (term . 2)) (SEMICOLON . (term . 2)))
-      ((default . error) (QUOTE .  41))
-      ((default . error) (AT . (string_primary . 3)) (RIGHT_PAREN . 
(string_primary . 3)) (AMPERSAND . (string_primary . 3)) (COMMA . 
(string_primary . 3)) (SEMICOLON . (string_primary . 3)))
-      ((default . error) (RIGHT_PAREN . (string_list . 0)) (AMPERSAND .  42) 
(COMMA . (string_list . 0)) (SEMICOLON . (string_list . 0)))
-      ((default . error) (AT . (string_primary . 2)) (RIGHT_PAREN . 
(string_primary . 2)) (AMPERSAND . (string_primary . 2)) (COMMA . 
(string_primary . 2)) (SEMICOLON . (string_primary . 2)))
-      ((default . error) (AT . (name . 0)) (IS . (name . 0)) (RIGHT_PAREN . 
(name . 0)) (AMPERSAND . (name . 0)) (COMMA . (name . 0)) (DOT . (name . 0)) 
(QUOTE . (name . 0)) (SEMICOLON . (name . 0)))
-      ((default . error) (AT . (string_primary . 1)) (RIGHT_PAREN . 
(string_primary . 1)) (AMPERSAND . (string_primary . 1)) (COMMA . 
(string_primary . 1)) (DOT .  43) (QUOTE . (attribute_prefix . 1)) (SEMICOLON . 
(string_primary . 1)))
-      ((default . error) (AT . (term . 0)) (RIGHT_PAREN . (term . 0)) 
(AMPERSAND . (term . 0)) (COMMA . (term . 0)) (SEMICOLON . (term . 0)))
-      ((default . error) (COMMA .  44) (SEMICOLON .  45))
-      ((default . error) (AT . (expression . 0)) (RIGHT_PAREN . (expression . 
0)) (AMPERSAND . (expression . 0)) (COMMA . (expression . 0)) (SEMICOLON . 
(expression . 0)))
-      ((default . error) (ABSTRACT . (context_clause . 1)) (AGGREGATE . 
(context_clause . 1)) (CONFIGURATION . (context_clause . 1)) (LIBRARY . 
(context_clause . 1)) (PROJECT . (context_clause . 1)) (STANDARD . 
(context_clause . 1)) (WITH . (context_clause . 1)) (Wisi_EOI . (context_clause 
. 1)))
-      ((default . error) (PROJECT .  5) (Wisi_EOI . (project_declaration_opt . 
0)))
-      ((default . error) (STRING_LITERAL .  47))
-      ((default . error) (CASE .  48) (END . (declarative_items_opt . 0)) (FOR 
.  49) (NULL .  50) (PACKAGE .  51) (TYPE .  52) (IDENTIFIER .  53))
-      ((default . error) (EXTERNAL .  17) (EXTERNAL_AS_LIST .  18) (LEFT_PAREN 
.  19) (PROJECT .  20) (RIGHT_PAREN . (identifier_opt . 0)) (AMPERSAND . 
(identifier_opt . 0)) (COMMA . (identifier_opt . 0)) (DOT . (identifier_opt . 
0)) (QUOTE . (identifier_opt . 0)) (IDENTIFIER .  15) (STRING_LITERAL .  21))
-      ((default . error) (AT . (external_value . 0)) (RIGHT_PAREN . 
(external_value . 0)) (AMPERSAND . (external_value . 0)) (COMMA . 
(external_value . 0)) (SEMICOLON . (external_value . 0)))
-      ((default . error) (AT . (external_value . 1)) (RIGHT_PAREN . 
(external_value . 1)) (AMPERSAND . (external_value . 1)) (COMMA . 
(external_value . 1)) (SEMICOLON . (external_value . 1)))
-      ((default . error) (AT . (term . 1)) (RIGHT_PAREN . (term . 1)) 
(AMPERSAND . (term . 1)) (COMMA . (term . 1)) (SEMICOLON . (term . 1)))
-      ((default . error) (RIGHT_PAREN .  65) (COMMA .  44))
-      ((default . error) (IDENTIFIER .  66))
-      ((default . error) (AT . (identifier_opt . 0)) (EXTERNAL .  17) 
(EXTERNAL_AS_LIST .  18) (LEFT_PAREN .  19) (PROJECT .  20) (RIGHT_PAREN . 
(identifier_opt . 0)) (AMPERSAND . (identifier_opt . 0)) (COMMA . 
(identifier_opt . 0)) (DOT . (identifier_opt . 0)) (QUOTE . (identifier_opt . 
0)) (SEMICOLON . (identifier_opt . 0)) (IDENTIFIER .  15) (STRING_LITERAL .  
21))
-      ((default . error) (IDENTIFIER .  68))
-      ((default . error) (EXTERNAL .  17) (EXTERNAL_AS_LIST .  18) (LEFT_PAREN 
.  19) (PROJECT .  20) (RIGHT_PAREN . (identifier_opt . 0)) (AMPERSAND . 
(identifier_opt . 0)) (COMMA . (identifier_opt . 0)) (DOT . (identifier_opt . 
0)) (QUOTE . (identifier_opt . 0)) (SEMICOLON . (identifier_opt . 0)) 
(IDENTIFIER .  15) (STRING_LITERAL .  21))
-      ((default . error) (ABSTRACT . (with_clause . 0)) (AGGREGATE . 
(with_clause . 0)) (CONFIGURATION . (with_clause . 0)) (LIBRARY . (with_clause 
. 0)) (PROJECT . (with_clause . 0)) (STANDARD . (with_clause . 0)) (WITH . 
(with_clause . 0)) (Wisi_EOI . (with_clause . 0)))
-      ((default . error) (Wisi_EOI . (compilation_unit . 0)))
-      ((default . error) (IS .  70))
-      ((default . error) (IS . (identifier_opt . 0)) (DOT . (identifier_opt . 
0)) (IDENTIFIER .  15))
-      ((default . error) (EXTERNAL .  72) (IDENTIFIER .  73))
-      ((default . error) (SEMICOLON .  74))
-      ((default . error) (EXTENDS . (identifier_opt . 0)) (IS . 
(identifier_opt . 0)) (RENAMES . (identifier_opt . 0)) (IDENTIFIER .  15))
-      ((default . error) (IDENTIFIER .  76))
-      ((default . error) (COLON .  77) (COLON_EQUALS .  78))
-      ((default . error) (CASE . (simple_declarative_item . 2)) (END . 
(simple_declarative_item . 2)) (FOR . (simple_declarative_item . 2)) (NULL . 
(simple_declarative_item . 2)) (PACKAGE . (simple_declarative_item . 2)) (TYPE 
. (simple_declarative_item . 2)) (WHEN . (simple_declarative_item . 2)) 
(IDENTIFIER . (simple_declarative_item . 2)))
-      ((default . error) (CASE . (simple_declarative_item . 3)) (END . 
(simple_declarative_item . 3)) (FOR . (simple_declarative_item . 3)) (NULL . 
(simple_declarative_item . 3)) (PACKAGE . (simple_declarative_item . 3)) (TYPE 
. (simple_declarative_item . 3)) (WHEN . (simple_declarative_item . 3)) 
(IDENTIFIER . (simple_declarative_item . 3)))
-      ((default . error) (CASE . (declarative_items . 0)) (END . 
(declarative_items . 0)) (FOR . (declarative_items . 0)) (NULL . 
(declarative_items . 0)) (PACKAGE . (declarative_items . 0)) (TYPE . 
(declarative_items . 0)) (WHEN . (declarative_items . 0)) (IDENTIFIER . 
(declarative_items . 0)))
-      ((default . error) (CASE .  48) (END . (declarative_items_opt . 1)) (FOR 
.  49) (NULL .  50) (PACKAGE .  51) (TYPE .  52) (WHEN . (declarative_items_opt 
. 1)) (IDENTIFIER .  53))
-      ((default . error) (END .  80))
-      ((default . error) (CASE . (declarative_item . 2)) (END . 
(declarative_item . 2)) (FOR . (declarative_item . 2)) (NULL . 
(declarative_item . 2)) (PACKAGE . (declarative_item . 2)) (TYPE . 
(declarative_item . 2)) (WHEN . (declarative_item . 2)) (IDENTIFIER . 
(declarative_item . 2)))
-      ((default . error) (CASE . (package_declaration . 0)) (END . 
(package_declaration . 0)) (FOR . (package_declaration . 0)) (NULL . 
(package_declaration . 0)) (PACKAGE . (package_declaration . 0)) (TYPE . 
(package_declaration . 0)) (WHEN . (package_declaration . 0)) (IDENTIFIER . 
(package_declaration . 0)))
-      ((default . error) (CASE . (package_declaration . 1)) (END . 
(package_declaration . 1)) (FOR . (package_declaration . 1)) (NULL . 
(package_declaration . 1)) (PACKAGE . (package_declaration . 1)) (TYPE . 
(package_declaration . 1)) (WHEN . (package_declaration . 1)) (IDENTIFIER . 
(package_declaration . 1)))
-      ((default . error) (CASE . (package_declaration . 2)) (END . 
(package_declaration . 2)) (FOR . (package_declaration . 2)) (NULL . 
(package_declaration . 2)) (PACKAGE . (package_declaration . 2)) (TYPE . 
(package_declaration . 2)) (WHEN . (package_declaration . 2)) (IDENTIFIER . 
(package_declaration . 2)))
-      ((default . error) (CASE . (declarative_item . 0)) (END . 
(declarative_item . 0)) (FOR . (declarative_item . 0)) (NULL . 
(declarative_item . 0)) (PACKAGE . (declarative_item . 0)) (TYPE . 
(declarative_item . 0)) (WHEN . (declarative_item . 0)) (IDENTIFIER . 
(declarative_item . 0)))
-      ((default . error) (CASE . (declarative_item . 1)) (END . 
(declarative_item . 1)) (FOR . (declarative_item . 1)) (NULL . 
(declarative_item . 1)) (PACKAGE . (declarative_item . 1)) (TYPE . 
(declarative_item . 1)) (WHEN . (declarative_item . 1)) (IDENTIFIER . 
(declarative_item . 1)))
-      ((default . error) (AT . (aggregate_g . 0)) (RIGHT_PAREN . (aggregate_g 
. 0)) (AMPERSAND . (aggregate_g . 0)) (COMMA . (aggregate_g . 0)) (SEMICOLON . 
(aggregate_g . 0)))
-      ((default . error) (AT . (attribute_reference . 0)) (LEFT_PAREN .  81) 
(RIGHT_PAREN . (attribute_reference . 0)) (AMPERSAND . (attribute_reference . 
0)) (COMMA . (attribute_reference . 0)) (SEMICOLON . (attribute_reference . 0)))
-      ((default . error) (AT . (expression . 1)) (RIGHT_PAREN . (expression . 
1)) (AMPERSAND . (expression . 1)) (COMMA . (expression . 1)) (SEMICOLON . 
(expression . 1)))
-      ((default . error) (AT . (name . 1)) (IS . (name . 1)) (RIGHT_PAREN . 
(name . 1)) (AMPERSAND . (name . 1)) (COMMA . (name . 1)) (DOT . (name . 1)) 
(QUOTE . (name . 1)) (SEMICOLON . (name . 1)))
-      ((default . error) (RIGHT_PAREN . (string_list . 1)) (AMPERSAND .  42) 
(COMMA . (string_list . 1)) (SEMICOLON . (string_list . 1)))
-      ((default . error) (CASE .  48) (END . (declarative_items_opt . 0)) (FOR 
.  49) (NULL .  50) (PACKAGE .  51) (TYPE .  52) (IDENTIFIER .  53))
-      ((default . error) (IS .  83) (DOT .  43))
-      ((default . error) (LEFT_PAREN .  84))
-      ((default . error) (LEFT_PAREN .  85) (USE .  86))
-      ((default . error) (CASE . (simple_declarative_item . 4)) (END . 
(simple_declarative_item . 4)) (FOR . (simple_declarative_item . 4)) (NULL . 
(simple_declarative_item . 4)) (PACKAGE . (simple_declarative_item . 4)) (TYPE 
. (simple_declarative_item . 4)) (WHEN . (simple_declarative_item . 4)) 
(IDENTIFIER . (simple_declarative_item . 4)))
-      ((default . error) (EXTENDS .  87) (IS .  88) (RENAMES .  89))
-      ((default . error) (IS .  90))
-      ((default . error) (IDENTIFIER .  91))
-      ((default . error) (EXTERNAL .  17) (EXTERNAL_AS_LIST .  18) (LEFT_PAREN 
.  19) (PROJECT .  20) (AMPERSAND . (identifier_opt . 0)) (DOT . 
(identifier_opt . 0)) (QUOTE . (identifier_opt . 0)) (SEMICOLON . 
(identifier_opt . 0)) (IDENTIFIER .  15) (STRING_LITERAL .  21))
-      ((default . error) (CASE . (declarative_items . 1)) (END . 
(declarative_items . 1)) (FOR . (declarative_items . 1)) (NULL . 
(declarative_items . 1)) (PACKAGE . (declarative_items . 1)) (TYPE . 
(declarative_items . 1)) (WHEN . (declarative_items . 1)) (IDENTIFIER . 
(declarative_items . 1)))
-      ((default . error) (SEMICOLON . (identifier_opt . 0)) (IDENTIFIER .  15))
-      ((default . error) (STRING_LITERAL .  94))
-      ((default . error) (END .  95))
-      ((default . error) (END . (case_items . 0)) (WHEN . ( 96 (case_items . 
0))))
-      ((default . error) (STRING_LITERAL .  99))
-      ((default . error) (OTHERS .  100) (RIGHT_PAREN . (discrete_choice . 0)) 
(STRING_LITERAL .  101))
-      ((default . error) (EXTERNAL .  17) (EXTERNAL_AS_LIST .  18) (LEFT_PAREN 
.  19) (PROJECT .  20) (AMPERSAND . (identifier_opt . 0)) (DOT . 
(identifier_opt . 0)) (QUOTE . (identifier_opt . 0)) (SEMICOLON . 
(identifier_opt . 0)) (IDENTIFIER .  15) (STRING_LITERAL .  21))
-      ((default . error) (IS . (identifier_opt . 0)) (DOT . (identifier_opt . 
0)) (IDENTIFIER .  15))
-      ((default . error) (CASE .  48) (END . (declarative_items_opt . 0)) (FOR 
.  49) (NULL .  50) (PACKAGE .  51) (TYPE .  52) (IDENTIFIER .  53))
-      ((default . error) (DOT . (identifier_opt . 0)) (SEMICOLON . 
(identifier_opt . 0)) (IDENTIFIER .  15))
-      ((default . error) (LEFT_PAREN .  36))
-      ((default . error) (COLON_EQUALS .  108))
-      ((default . error) (AMPERSAND .  42) (SEMICOLON .  109))
-      ((default . error) (SEMICOLON .  110))
-      ((default . error) (RIGHT_PAREN .  111))
-      ((default . error) (SEMICOLON . (identifier_opt . 0)) (IDENTIFIER .  15))
-      ((default . error) (OTHERS .  100) (EQUAL_GREATER . (discrete_choice . 
0)) (VERTICAL_BAR . (discrete_choice . 0)) (STRING_LITERAL .  101))
-      ((default . error) (END . (case_items . 1)) (WHEN . (case_items . 1)))
-      ((default . error) (END .  115) (WHEN .  96))
-      ((default . error) (RIGHT_PAREN .  117))
-      ((default . error) (RIGHT_PAREN . (discrete_choice . 2)) (EQUAL_GREATER 
. (discrete_choice . 2)) (VERTICAL_BAR . (discrete_choice . 2)))
-      ((default . error) (RIGHT_PAREN . (discrete_choice . 1)) (EQUAL_GREATER 
. (discrete_choice . 1)) (VERTICAL_BAR . (discrete_choice . 1)))
-      ((default . error) (RIGHT_PAREN .  118))
-      ((default . error) (AMPERSAND .  42) (SEMICOLON .  119))
-      ((default . error) (IS .  120) (DOT .  43))
-      ((default . error) (END .  121))
-      ((default . error) (DOT .  43) (SEMICOLON .  122))
-      ((default . error) (SEMICOLON .  123))
-      ((default . error) (EXTERNAL .  17) (EXTERNAL_AS_LIST .  18) (LEFT_PAREN 
.  19) (PROJECT .  20) (AMPERSAND . (identifier_opt . 0)) (DOT . 
(identifier_opt . 0)) (QUOTE . (identifier_opt . 0)) (SEMICOLON . 
(identifier_opt . 0)) (IDENTIFIER .  15) (STRING_LITERAL .  21))
-      ((default . error) (CASE . (simple_declarative_item . 0)) (END . 
(simple_declarative_item . 0)) (FOR . (simple_declarative_item . 0)) (NULL . 
(simple_declarative_item . 0)) (PACKAGE . (simple_declarative_item . 0)) (TYPE 
. (simple_declarative_item . 0)) (WHEN . (simple_declarative_item . 0)) 
(IDENTIFIER . (simple_declarative_item . 0)))
-      ((default . error) (Wisi_EOI . (simple_project_declaration . 0)))
-      ((default . error) (AT . (attribute_reference . 1)) (RIGHT_PAREN . 
(attribute_reference . 1)) (AMPERSAND . (attribute_reference . 1)) (COMMA . 
(attribute_reference . 1)) (SEMICOLON . (attribute_reference . 1)))
-      ((default . error) (SEMICOLON .  125))
-      ((default . error) (EQUAL_GREATER . (discrete_choice_list . 0)) 
(VERTICAL_BAR . (discrete_choice_list . 0)))
-      ((default . error) (EQUAL_GREATER .  126) (VERTICAL_BAR .  127))
-      ((default . error) (CASE .  128))
-      ((default . error) (END . (case_items . 2)) (WHEN . (case_items . 2)))
-      ((default . error) (USE .  129))
-      ((default . error) (USE .  130))
-      ((default . error) (CASE . (attribute_declaration . 0)) (END . 
(attribute_declaration . 0)) (FOR . (attribute_declaration . 0)) (NULL . 
(attribute_declaration . 0)) (PACKAGE . (attribute_declaration . 0)) (TYPE . 
(attribute_declaration . 0)) (WHEN . (attribute_declaration . 0)) (IDENTIFIER . 
(attribute_declaration . 0)))
-      ((default . error) (CASE .  48) (END . (declarative_items_opt . 0)) (FOR 
.  49) (NULL .  50) (PACKAGE .  51) (TYPE .  52) (IDENTIFIER .  53))
-      ((default . error) (SEMICOLON . (identifier_opt . 0)) (IDENTIFIER .  15))
-      ((default . error) (CASE . (package_renaming . 0)) (END . 
(package_renaming . 0)) (FOR . (package_renaming . 0)) (NULL . 
(package_renaming . 0)) (PACKAGE . (package_renaming . 0)) (TYPE . 
(package_renaming . 0)) (WHEN . (package_renaming . 0)) (IDENTIFIER . 
(package_renaming . 0)))
-      ((default . error) (CASE . (typed_string_declaration . 0)) (END . 
(typed_string_declaration . 0)) (FOR . (typed_string_declaration . 0)) (NULL . 
(typed_string_declaration . 0)) (PACKAGE . (typed_string_declaration . 0)) 
(TYPE . (typed_string_declaration . 0)) (WHEN . (typed_string_declaration . 0)) 
(IDENTIFIER . (typed_string_declaration . 0)))
-      ((default . error) (AMPERSAND .  42) (SEMICOLON .  133))
-      ((default . error) (Wisi_EOI . (project_extension . 0)))
-      ((default . error) (CASE .  48) (END . (declarative_items_opt . 0)) (FOR 
.  49) (NULL .  50) (PACKAGE .  51) (TYPE .  52) (WHEN . (declarative_items_opt 
. 0)) (IDENTIFIER .  53))
-      ((default . error) (OTHERS .  100) (EQUAL_GREATER . (discrete_choice . 
0)) (VERTICAL_BAR . (discrete_choice . 0)) (STRING_LITERAL .  101))
-      ((default . error) (SEMICOLON .  136))
-      ((default . error) (EXTERNAL .  17) (EXTERNAL_AS_LIST .  18) (LEFT_PAREN 
.  19) (PROJECT .  20) (AMPERSAND . (identifier_opt . 0)) (DOT . 
(identifier_opt . 0)) (QUOTE . (identifier_opt . 0)) (SEMICOLON . 
(identifier_opt . 0)) (IDENTIFIER .  15) (STRING_LITERAL .  21))
-      ((default . error) (AT . (identifier_opt . 0)) (EXTERNAL .  17) 
(EXTERNAL_AS_LIST .  18) (LEFT_PAREN .  19) (PROJECT .  20) (AMPERSAND . 
(identifier_opt . 0)) (DOT . (identifier_opt . 0)) (QUOTE . (identifier_opt . 
0)) (SEMICOLON . (identifier_opt . 0)) (IDENTIFIER .  15) (STRING_LITERAL .  
21))
-      ((default . error) (END .  139))
-      ((default . error) (SEMICOLON .  140))
-      ((default . error) (CASE . (simple_declarative_item . 1)) (END . 
(simple_declarative_item . 1)) (FOR . (simple_declarative_item . 1)) (NULL . 
(simple_declarative_item . 1)) (PACKAGE . (simple_declarative_item . 1)) (TYPE 
. (simple_declarative_item . 1)) (WHEN . (simple_declarative_item . 1)) 
(IDENTIFIER . (simple_declarative_item . 1)))
-      ((default . error) (END . (case_item . 0)) (WHEN . (case_item . 0)))
-      ((default . error) (EQUAL_GREATER . (discrete_choice_list . 1)) 
(VERTICAL_BAR . (discrete_choice_list . 1)))
-      ((default . error) (CASE . (case_statement . 0)) (END . (case_statement 
. 0)) (FOR . (case_statement . 0)) (NULL . (case_statement . 0)) (PACKAGE . 
(case_statement . 0)) (TYPE . (case_statement . 0)) (WHEN . (case_statement . 
0)) (IDENTIFIER . (case_statement . 0)))
-      ((default . error) (AMPERSAND .  42) (SEMICOLON .  141))
-      ((default . error) (AT .  142) (AMPERSAND .  42) (SEMICOLON .  143))
-      ((default . error) (SEMICOLON . (identifier_opt . 0)) (IDENTIFIER .  15))
-      ((default . error) (CASE . (package_spec . 0)) (END . (package_spec . 
0)) (FOR . (package_spec . 0)) (NULL . (package_spec . 0)) (PACKAGE . 
(package_spec . 0)) (TYPE . (package_spec . 0)) (WHEN . (package_spec . 0)) 
(IDENTIFIER . (package_spec . 0)))
-      ((default . error) (CASE . (attribute_declaration . 3)) (END . 
(attribute_declaration . 3)) (FOR . (attribute_declaration . 3)) (NULL . 
(attribute_declaration . 3)) (PACKAGE . (attribute_declaration . 3)) (TYPE . 
(attribute_declaration . 3)) (WHEN . (attribute_declaration . 3)) (IDENTIFIER . 
(attribute_declaration . 3)))
-      ((default . error) (NUMERIC_LITERAL .  145))
-      ((default . error) (CASE . (attribute_declaration . 1)) (END . 
(attribute_declaration . 1)) (FOR . (attribute_declaration . 1)) (NULL . 
(attribute_declaration . 1)) (PACKAGE . (attribute_declaration . 1)) (TYPE . 
(attribute_declaration . 1)) (WHEN . (attribute_declaration . 1)) (IDENTIFIER . 
(attribute_declaration . 1)))
-      ((default . error) (SEMICOLON .  146))
-      ((default . error) (SEMICOLON .  147))
-      ((default . error) (CASE . (package_extension . 0)) (END . 
(package_extension . 0)) (FOR . (package_extension . 0)) (NULL . 
(package_extension . 0)) (PACKAGE . (package_extension . 0)) (TYPE . 
(package_extension . 0)) (WHEN . (package_extension . 0)) (IDENTIFIER . 
(package_extension . 0)))
-      ((default . error) (CASE . (attribute_declaration . 2)) (END . 
(attribute_declaration . 2)) (FOR . (attribute_declaration . 2)) (NULL . 
(attribute_declaration . 2)) (PACKAGE . (attribute_declaration . 2)) (TYPE . 
(attribute_declaration . 2)) (WHEN . (attribute_declaration . 2)) (IDENTIFIER . 
(attribute_declaration . 2)))]
-     [((compilation_unit . 8)(context_clause . 9)(context_clause_opt . 
10)(project_extension . 11)(simple_project_declaration . 12)(with_clause . 13))
-      nil
-      nil
-      nil
-      nil
-      ((identifier_opt . 16))
-      nil
-      ((aggregate_g . 22)(attribute_prefix . 23)(attribute_reference . 
24)(expression . 25)(external_value . 26)(identifier_opt . 27)(name . 
28)(string_primary . 29)(string_list . 30)(term . 31))
-      nil
-      ((with_clause . 32))
-      ((project_qualifier_opt . 33))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aggregate_g . 37))
-      ((aggregate_g . 38))
-      ((aggregate_g . 22)(attribute_prefix . 23)(attribute_reference . 
24)(expression . 25)(external_value . 26)(identifier_opt . 27)(name . 
28)(string_primary . 29)(string_list . 40)(term . 31))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((project_declaration_opt . 46)(project_extension . 
11)(simple_project_declaration . 12))
-      nil
-      ((attribute_declaration . 54)(case_statement . 55)(declarative_item . 
56)(declarative_items . 57)(declarative_items_opt . 58)(package_declaration . 
59)(package_spec . 60)(package_extension . 61)(package_renaming . 
62)(simple_declarative_item . 63)(typed_string_declaration . 64))
-      ((aggregate_g . 22)(attribute_prefix . 23)(attribute_reference . 
24)(expression . 25)(external_value . 26)(identifier_opt . 27)(name . 
28)(string_primary . 29)(string_list . 40)(term . 31))
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aggregate_g . 22)(attribute_prefix . 23)(attribute_reference . 
24)(external_value . 26)(identifier_opt . 27)(name . 28)(string_primary . 
29)(term . 67))
-      nil
-      ((aggregate_g . 22)(attribute_prefix . 23)(attribute_reference . 
24)(expression . 69)(external_value . 26)(identifier_opt . 27)(name . 
28)(string_primary . 29)(term . 31))
-      nil
-      nil
-      nil
-      ((identifier_opt . 27)(name . 71))
-      nil
-      nil
-      ((identifier_opt . 75))
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_declaration . 54)(case_statement . 55)(declarative_item . 
79)(package_declaration . 59)(package_spec . 60)(package_extension . 
61)(package_renaming . 62)(simple_declarative_item . 
63)(typed_string_declaration . 64))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_declaration . 54)(case_statement . 55)(declarative_item . 
56)(declarative_items . 57)(declarative_items_opt . 82)(package_declaration . 
59)(package_spec . 60)(package_extension . 61)(package_renaming . 
62)(simple_declarative_item . 63)(typed_string_declaration . 64))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aggregate_g . 22)(attribute_prefix . 23)(attribute_reference . 
24)(expression . 92)(external_value . 26)(identifier_opt . 27)(name . 
28)(string_primary . 29)(term . 31))
-      nil
-      ((identifier_opt . 93))
-      nil
-      nil
-      ((case_item . 97)(case_items . 98))
-      nil
-      ((discrete_choice . 102))
-      ((aggregate_g . 22)(attribute_prefix . 23)(attribute_reference . 
24)(expression . 103)(external_value . 26)(identifier_opt . 27)(name . 
28)(string_primary . 29)(term . 31))
-      ((identifier_opt . 27)(name . 104))
-      ((attribute_declaration . 54)(case_statement . 55)(declarative_item . 
56)(declarative_items . 57)(declarative_items_opt . 105)(package_declaration . 
59)(package_spec . 60)(package_extension . 61)(package_renaming . 
62)(simple_declarative_item . 63)(typed_string_declaration . 64))
-      ((identifier_opt . 27)(name . 106))
-      ((aggregate_g . 107))
-      nil
-      nil
-      nil
-      nil
-      ((identifier_opt . 112))
-      ((discrete_choice . 113)(discrete_choice_list . 114))
-      nil
-      ((case_item . 116))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((aggregate_g . 22)(attribute_prefix . 23)(attribute_reference . 
24)(expression . 124)(external_value . 26)(identifier_opt . 27)(name . 
28)(string_primary . 29)(term . 31))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((attribute_declaration . 54)(case_statement . 55)(declarative_item . 
56)(declarative_items . 57)(declarative_items_opt . 131)(package_declaration . 
59)(package_spec . 60)(package_extension . 61)(package_renaming . 
62)(simple_declarative_item . 63)(typed_string_declaration . 64))
-      ((identifier_opt . 132))
-      nil
-      nil
-      nil
-      nil
-      ((attribute_declaration . 54)(case_statement . 55)(declarative_item . 
56)(declarative_items . 57)(declarative_items_opt . 134)(package_declaration . 
59)(package_spec . 60)(package_extension . 61)(package_renaming . 
62)(simple_declarative_item . 63)(typed_string_declaration . 64))
-      ((discrete_choice . 135))
-      nil
-      ((aggregate_g . 22)(attribute_prefix . 23)(attribute_reference . 
24)(expression . 137)(external_value . 26)(identifier_opt . 27)(name . 
28)(string_primary . 29)(term . 31))
-      ((aggregate_g . 22)(attribute_prefix . 23)(attribute_reference . 
24)(expression . 138)(external_value . 26)(identifier_opt . 27)(name . 
28)(string_primary . 29)(term . 31))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      ((identifier_opt . 144))
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil
-      nil]))
-  "Parser table.")
-
-(provide 'gpr-lalr-elisp)
-;; end of file
diff --git a/packages/ada-mode/gpr-mode.info b/packages/ada-mode/gpr-mode.info
index 03c0a6c..3bba3a6 100644
--- a/packages/ada-mode/gpr-mode.info
+++ b/packages/ada-mode/gpr-mode.info
@@ -1,7 +1,7 @@
 This is gpr-mode.info, produced by makeinfo version 6.3 from
 gpr-mode.texi.
 
-Copyright (C) 2013 Free Software Foundation, Inc.
+Copyright (C) 2013, 2019 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
@@ -14,7 +14,7 @@ Copyright (C) 2013 Free Software Foundation, Inc.
      (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
      modify this GNU manual.  Buying copies from the FSF supports it in
      developing GNU and promoting software freedom."
-INFO-DIR-SECTION Emacs editing modes
+INFO-DIR-SECTION Emacs
 START-INFO-DIR-ENTRY
 * gpr mode: (gpr-mode).         Emacs mode for editing and navigating gpr 
files (gnat project files).
 END-INFO-DIR-ENTRY
@@ -22,20 +22,6 @@ END-INFO-DIR-ENTRY
 
 File: gpr-mode.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
 
-Copyright (C) 2013 Free Software Foundation, Inc.
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, with the Front-Cover texts
-     being "A GNU Manual", and with the Back-Cover Texts as in (a)
-     below.  A copy of the license is included in the section entitled
-     "GNU Free Documentation License".
-
-     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
-     modify this GNU manual.  Buying copies from the FSF supports it in
-     developing GNU and promoting software freedom."
-
 * Menu:
 
 * Overview::
@@ -773,15 +759,15 @@ Index
 
 
 Tag Table:
-Node: Top960
-Node: Overview1939
-Node: Installation2498
-Node: Customization3249
-Node: Moving Through Gpr Code5171
-Node: Identifier completion5621
-Node: Indentation6583
-Node: Statement skeletons8913
-Node: GNU Free Documentation License9669
-Node: Index34831
+Node: Top952
+Node: Overview1227
+Node: Installation1786
+Node: Customization2537
+Node: Moving Through Gpr Code4459
+Node: Identifier completion4909
+Node: Indentation5871
+Node: Statement skeletons8201
+Node: GNU Free Documentation License8957
+Node: Index34119
 
 End Tag Table
diff --git a/packages/ada-mode/gpr-mode.texi b/packages/ada-mode/gpr-mode.texi
index a293793..796ccff 100644
--- a/packages/ada-mode/gpr-mode.texi
+++ b/packages/ada-mode/gpr-mode.texi
@@ -1,9 +1,8 @@
 \input texinfo  @c -*-texinfo-*-
-@setfilename ../../info/gpr-mode
 @settitle gpr Mode
 
 @copying
-Copyright @copyright{} 2013  Free Software Foundation, Inc.
+Copyright @copyright{} 2013, 2019  Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -19,7 +18,7 @@ developing GNU and promoting software freedom.''
 @end quotation
 @end copying
 
-@dircategory Emacs editing modes
+@dircategory Emacs
 @direntry
 * gpr mode: (gpr-mode).         Emacs mode for editing and navigating gpr 
files (gnat project files).
 @end direntry
@@ -37,10 +36,8 @@ developing GNU and promoting software freedom.''
 
 @contents
 
-@node Top, Overview, (dir), (dir)
-
 @ifnottex
-@insertcopying
+@node Top, Overview, (dir), (dir)
 @end ifnottex
 
 @menu
diff --git a/packages/ada-mode/gpr-process.el b/packages/ada-mode/gpr-process.el
index ee6ac18..0f3e210 100644
--- a/packages/ada-mode/gpr-process.el
+++ b/packages/ada-mode/gpr-process.el
@@ -101,56 +101,44 @@
    nil
    ])
 
-(defconst gpr-elisp-keyword-table-raw
+(defconst gpr-process-repair-image
   '(
-   ("abstract" . ABSTRACT)
-   ("at" . AT)
-   ("aggregate" . AGGREGATE)
-   ("case" . CASE)
-   ("configuration" . CONFIGURATION)
-   ("end" . END)
-   ("extends" . EXTENDS)
-   ("external" . EXTERNAL)
-   ("external_as_list" . EXTERNAL_AS_LIST)
-   ("for" . FOR)
-   ("is" . IS)
-   ("(" . LEFT_PAREN)
-   ("library" . LIBRARY)
-   ("null" . NULL)
-   ("others" . OTHERS)
-   ("package" . PACKAGE)
-   ("project" . PROJECT)
-   ("renames" . RENAMES)
-   (")" . RIGHT_PAREN)
-   ("standard" . STANDARD)
-   ("type" . TYPE)
-   ("use" . USE)
-   ("when" . WHEN)
-   ("with" . WITH)
-   ))
-
-(defconst gpr-elisp-token-table-raw
-  '(
-   ("punctuation"
-    (AMPERSAND . "&")
-    (COLON . ":")
-    (COLON_EQUALS . ":=")
-    (COMMA . ",")
-    (DOT . ".")
-    (EQUAL_GREATER . "=>")
-    (QUOTE . "'")
-    (SEMICOLON . ";")
-    (VERTICAL_BAR . "|")
-    )
-   ("number"
-    (NUMERIC_LITERAL ada-wisi-number-p)
-    )
-   ("symbol"
-    (IDENTIFIER . "")
-    )
-   ("string-double"
-    (STRING_LITERAL . "")
-    )
+   (ABSTRACT . "abstract")
+   (AT . "at")
+   (AGGREGATE . "aggregate")
+   (CASE . "case")
+   (CONFIGURATION . "configuration")
+   (END . "end")
+   (EXTENDS . "extends")
+   (EXTERNAL . "external")
+   (EXTERNAL_AS_LIST . "external_as_list")
+   (FOR . "for")
+   (IS . "is")
+   (LEFT_PAREN . "(")
+   (LIBRARY . "library")
+   (NULL . "null")
+   (OTHERS . "others")
+   (PACKAGE . "package")
+   (PROJECT . "project")
+   (RENAMES . "renames")
+   (RIGHT_PAREN . ")")
+   (STANDARD . "standard")
+   (TYPE . "type")
+   (USE . "use")
+   (WHEN . "when")
+   (WITH . "with")
+   (AMPERSAND . "&")
+   (COLON . ":")
+   (COLON_EQUALS . ":=")
+   (COMMA . ",")
+   (DOT . ".")
+   (EQUAL_GREATER . "=>")
+   (QUOTE . "'")
+   (SEMICOLON . ";")
+   (VERTICAL_BAR . "|")
+   (NUMERIC_LITERAL . "1234567890")
+   (IDENTIFIER . "A_Bogus_Identifier")
+   (STRING_LITERAL . "\"\"")
    ))
 
 (provide 'gpr-process)
diff --git a/packages/ada-mode/gpr-wisi.el b/packages/ada-mode/gpr-wisi.el
index a5056ed..bff3a65 100644
--- a/packages/ada-mode/gpr-wisi.el
+++ b/packages/ada-mode/gpr-wisi.el
@@ -1,150 +1,133 @@
-;; gpr-wisi.el --- Indentation engine for gpr mode, using the wisi parser  -*- 
lexical-binding:t -*-
-;;
-;; Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
-;;
-;; Author: Stephen Leake <address@hidden>
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-;;
-;;; History: first version Jan 2013
-;;
-;;;;
-
-(require 'cl-lib)
-(require 'gpr-lalr-elisp)
-(require 'gpr-indent-user-options)
-(require 'gpr-mode)
-(require 'wisi)
-(require 'wisi-elisp-lexer)
-(require 'wisi-process-parse)
-
-(defconst gpr-wisi-language-protocol-version "1"
-  "Defines language-specific parser parameters.
-Must match wisi-gpr.ads Language_Protocol_Version.")
-
-(defun gpr-wisi-which-function ()
-  "For `gpr-which-function'."
-  (wisi-validate-cache (point-min) (point) nil 'navigate)
-  ;; No message on parse fail, since this could be called from 
which-function-mode
-  (when (wisi-cache-covers-pos 'navigate (point))
-    (let ((cache (wisi-backward-cache))
-         done
-         project-pos
-         package-pos
-         decl-pos)
-      (while (and cache (not done))
-       ;; find attribute_declaration and package containing point (if any)
-       (cond
-        ((not (eq (wisi-cache-class cache) 'statement-start))
-         nil)
-
-        ((eq (wisi-cache-nonterm cache) 'attribute_declaration)
-         (setq decl-pos (point)))
-
-        ((eq (wisi-cache-nonterm cache) 'package_spec)
-         (setq package-pos (point))
-         (setq done t))
-
-        ((eq (wisi-cache-nonterm cache) 'simple_project_declaration)
-         (setq project-pos (point))
-         (setq done t))
-        )
-
-       (setq cache (wisi-goto-containing cache)))
-
-      (cond
-       (package-pos
-       (goto-char package-pos)
-       (setq done t))
-
-       (decl-pos
-       (goto-char decl-pos)
-       (setq done t))
-
-       (project-pos
-       (goto-char project-pos)
-       (setq done t))
-
-       (t ;; before project
-       (setq done nil))
-       )
-
-      (when done
-       (wisi-forward-token); keyword
-       (wisi-token-text (wisi-forward-token))); name
-
-      )))
-
-;;;;
-
-(cl-defstruct (gpr-wisi-parser (:include wisi-process--parser))
-  ;; no new structs
-  )
-
-(cl-defmethod wisi-parse-format-language-options ((_parser gpr-wisi-parser))
-  (format "%d %d %d"
-         gpr-indent
-         gpr-indent-broken
-         gpr-indent-when
-         ))
-
-(defvar gpr-process-face-table nil) ;; gpr-process.el
-(defvar gpr-process-token-table nil) ;;gpr-process.el
-
-(defun gpr-wisi-setup ()
-  "Set up a buffer for parsing gpr files with wisi."
-  (wisi-setup
-   :indent-calculate nil
-   :post-indent-fail nil
-   :parser
-   (cond
-    ((or (null gpr-parser)
-        (eq 'elisp gpr-parser))
-     (wisi-make-elisp-parser
-      gpr-lalr-elisp-parse-table
-      #'wisi-forward-token))
-
-    ((eq 'process gpr-parser)
-     (require 'gpr-process)
-     (wisi-process-parse-get
-      (make-gpr-wisi-parser
-      :label "gpr"
-      :language-protocol-version gpr-wisi-language-protocol-version
-      :exec-file gpr-process-parse-exec
-      :face-table gpr-process-face-table
-      :token-table gpr-process-token-table
-      )))
-    )
-
-   :lexer (wisi-make-elisp-lexer
-          :token-table-raw gpr-lalr-elisp-token-table-raw
-          :keyword-table-raw gpr-lalr-elisp-keyword-table-raw
-          :string-quote-escape-doubled nil
-          :string-quote-escape nil))
-
-  (setq gpr-indent-statement 'wisi-indent-statement)
-  (set (make-local-variable 'comment-indent-function) 'wisi-comment-indent)
-  )
-
-(add-hook 'gpr-mode-hook 'gpr-wisi-setup)
-
-(setq gpr-which-function 'gpr-wisi-which-function)
-
-(setq gpr-show-parse-error 'wisi-show-parse-error)
-
-(provide 'gpr-wisi)
-
-;; end of file
+;; gpr-wisi.el --- Indentation engine for gpr mode, using the wisi parser  -*- 
lexical-binding:t -*-
+;;
+;; Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
+;;
+;; Author: Stephen Leake <address@hidden>
+;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+;;
+;;; History: first version Jan 2013
+;;
+;;;;
+
+(require 'cl-lib)
+(require 'gpr-indent-user-options)
+(require 'gpr-mode)
+(require 'gpr-process)
+(require 'wisi)
+(require 'wisi-process-parse)
+
+(defconst gpr-wisi-language-protocol-version "1"
+  "Defines language-specific parser parameters.
+Must match wisi-gpr.ads Language_Protocol_Version.")
+
+(defun gpr-wisi-which-function ()
+  "For `gpr-which-function'."
+  (wisi-validate-cache (point-min) (point) nil 'navigate)
+  ;; No message on parse fail, since this could be called from 
which-function-mode
+  (when (wisi-cache-covers-pos 'navigate (point))
+    (let ((cache (wisi-backward-cache))
+         done
+         project-pos
+         package-pos
+         decl-pos)
+      (while (and cache (not done))
+       ;; find attribute_declaration and package containing point (if any)
+       (cond
+        ((not (eq (wisi-cache-class cache) 'statement-start))
+         nil)
+
+        ((eq (wisi-cache-nonterm cache) 'attribute_declaration)
+         (setq decl-pos (point)))
+
+        ((eq (wisi-cache-nonterm cache) 'package_spec)
+         (setq package-pos (point))
+         (setq done t))
+
+        ((eq (wisi-cache-nonterm cache) 'simple_project_declaration)
+         (setq project-pos (point))
+         (setq done t))
+        )
+
+       (setq cache (wisi-goto-containing cache)))
+
+      (cond
+       (package-pos
+       (goto-char package-pos)
+       (setq done t))
+
+       (decl-pos
+       (goto-char decl-pos)
+       (setq done t))
+
+       (project-pos
+       (goto-char project-pos)
+       (setq done t))
+
+       (t ;; before project
+       (setq done nil))
+       )
+
+      (when done
+       (wisi-next-name))
+
+      )))
+
+;;;;
+
+(cl-defstruct (gpr-wisi-parser (:include wisi-process--parser))
+  ;; no new structs
+  )
+
+(cl-defmethod wisi-parse-format-language-options ((_parser gpr-wisi-parser))
+  (format "%d %d %d"
+         gpr-indent
+         gpr-indent-broken
+         gpr-indent-when
+         ))
+
+(defvar gpr-process-face-table nil) ;; gpr-process.el
+(defvar gpr-process-token-table nil) ;;gpr-process.el
+
+(defun gpr-wisi-setup ()
+  "Set up a buffer for parsing gpr files with wisi."
+  (wisi-setup
+   :indent-calculate nil
+   :post-indent-fail nil
+   :parser
+   (wisi-process-parse-get
+    (make-gpr-wisi-parser
+     :label "gpr"
+     :language-protocol-version gpr-wisi-language-protocol-version
+     :exec-file gpr-process-parse-exec
+     :face-table gpr-process-face-table
+     :token-table gpr-process-token-table
+     :repair-image gpr-process-repair-image
+     )))
+
+  (setq gpr-indent-statement 'wisi-indent-statement)
+  (set (make-local-variable 'comment-indent-function) 'wisi-comment-indent)
+  )
+
+(add-hook 'gpr-mode-hook 'gpr-wisi-setup)
+
+(setq gpr-which-function 'gpr-wisi-which-function)
+
+(setq gpr-show-parse-error 'wisi-show-parse-error)
+
+(provide 'gpr-wisi)
+
+;; end of file
diff --git a/packages/ada-mode/gpr.wy b/packages/ada-mode/gpr.wy
index 335b38d..f7bf4d8 100644
--- a/packages/ada-mode/gpr.wy
+++ b/packages/ada-mode/gpr.wy
@@ -1,369 +1,373 @@
-;;; WisiToken grammar for GNAT project files
-;;
-;; Author: Stephen Leake <address@hidden>
-;; Maintainer: Stephen Leake <address@hidden>
-;; Created: Jan 2013
-;; Keywords: syntax
-
-%code copyright_license %{
-;;  Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
-
-;;  This program is free software; you can redistribute it and/or
-;;  modify it under the terms of the GNU General Public License as
-;;  published by the Free Software Foundation; either version 3, or (at
-;;  your option) any later version.
-;;
-;;  This software is distributed in the hope that it will be useful,
-;;  but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;;  General Public License for more details.
-;;
-;;  You should have received a copy of the GNU General Public License
-;;  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-}%
-
-%code actions spec post %{
-   Partial_Parse_Active : Boolean := False;
-}%
-
-;;; Commentary:
-;;
-;; This is a wisi grammar file for the gpr language. It is derived
-;; from the gprbuild user guide, with the following substitutions:
-;;
-;; simple_name -> IDENTIFIER
-;;
-;; and some simplifications. Repeating constructs are implemented with
-;; extra productions. Optional constructs are implemented by repeated
-;; productions
-
-;; GNAT GPL 2017 (info "(gprbuild_ug) Configuration File Reference")
-
-%token <punctuation> AMPERSAND "&"
-%token <punctuation> COLON ":"
-%token <punctuation> COLON_EQUALS ":="
-%token <punctuation> COMMA ","
-%token <punctuation> DOT "."
-%token <punctuation> EQUAL_GREATER "=>"
-%token <punctuation> QUOTE "'"
-%token <punctuation> SEMICOLON ";"
-%token <punctuation> VERTICAL_BAR "|"
-
-%case_insensitive
-
-%keyword ABSTRACT "abstract"
-%keyword AT "at"
-%keyword AGGREGATE "aggregate"
-%keyword CASE "case"
-%keyword CONFIGURATION "configuration"
-%keyword END "end"
-%keyword EXTENDS "extends"
-%keyword EXTERNAL "external"
-%keyword EXTERNAL_AS_LIST "external_as_list"
-%keyword FOR "for"
-%keyword IS "is"
-%keyword LEFT_PAREN "("
-%keyword LIBRARY "library"
-%keyword NULL "null"
-%keyword OTHERS "others"
-%keyword PACKAGE "package"
-%keyword PROJECT "project"
-%keyword RENAMES "renames"
-%keyword RIGHT_PAREN ")"
-%keyword STANDARD "standard"
-%keyword TYPE "type"
-%keyword USE "use"
-%keyword WHEN "when"
-%keyword WITH "with"
-
-%non_grammar <non-reporting> WHITESPACE %[ [ \t] ]%
-
-;; handle DOS or Unix newline
-%non_grammar <new-line> NEW_LINE %[ [\x0a]|[\x0d][\x0a] ]%
-
-%non_grammar <comment> COMMENT %[ "--"[^\n]* ]%
-
-%if lexer = elisp
-%token <number> NUMERIC_LITERAL ada-wisi-number-p
-%end if
-%if lexer = re2c
-%token <number> NUMERIC_LITERAL %[ [0-9]+ ]%
-%end if
-%token <symbol> IDENTIFIER %[ 
[a-zA-Z\x80-\U0010FFFF][0-9a-zA-Z_\x80-\U0010FFFF]* ]%
-%token <string-double> STRING_LITERAL %[ (["][\x20-\x21\x23-\U0010FFFF]*["])+ 
]%
-
-%start compilation_unit
-
-%generate LALR elisp elisp
-%generate LR1 Ada_Emacs re2c Process
-;; LR1 gives better error correction performance.
-
-%elisp_face font-lock-function-name-face
-%elisp_face nil
-
-%mckenzie_cost_default 4 4 2 2
-%mckenzie_enqueue_limit 10_000
-%mckenzie_check_limit 3
-%mckenzie_check_delta_limit 200
-
-%end_names_optional_option End_Names_Optional
-
-%conflict SHIFT/REDUCE in state aggregate_g, aggregate_g  on token RIGHT_PAREN
-%conflict SHIFT/REDUCE in state case_statement, case_statement  on token WHEN
-
-;; grammar rules, non-terminal alphabetical order
-
-aggregate_g
-  : LEFT_PAREN string_list RIGHT_PAREN
-    %((wisi-indent-action [0 (wisi-anchored 1 1) (wisi-anchored 1 0)]))%
-  ;
-
-attribute_declaration
-  : FOR IDENTIFIER USE expression SEMICOLON
-    %((progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken 0 gpr-indent-broken 0])))%
-  | FOR IDENTIFIER LEFT_PAREN discrete_choice RIGHT_PAREN USE expression 
SEMICOLON
-    %((progn
-      (wisi-statement-action [1 statement-start 8 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken (- gpr-indent-broken 1) 
gpr-indent-broken (- gpr-indent-broken 1) 0
-                             gpr-indent-broken 0])))%
-  | FOR IDENTIFIER LEFT_PAREN discrete_choice RIGHT_PAREN USE expression AT 
NUMERIC_LITERAL SEMICOLON
-    %((progn
-      (wisi-statement-action [1 statement-start 10 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken (- gpr-indent-broken 1) 
gpr-indent-broken (- gpr-indent-broken 1) 0
-                             gpr-indent-broken 0 0 0])))%
-  | FOR EXTERNAL LEFT_PAREN STRING_LITERAL RIGHT_PAREN USE expression SEMICOLON
-    %((progn
-      (wisi-statement-action [1 statement-start 8 statement-end])
-      (wisi-indent-action [0 gpr-indent-broken (- gpr-indent-broken 1) 
gpr-indent-broken (- gpr-indent-broken 1) 0
-                             gpr-indent-broken 0])))%
-  ;
-
-;; (info "(gprbuild_ug)Attributes")
-attribute_prefix
-  : PROJECT
-  | name
-  ;
-
-attribute_reference
-  : attribute_prefix QUOTE IDENTIFIER
-  | attribute_prefix QUOTE IDENTIFIER LEFT_PAREN STRING_LITERAL RIGHT_PAREN
-  ;
-
-;; (info "(gprbuild_ug)Case Statements")
-case_statement
-  : CASE name IS case_items END CASE SEMICOLON
-    %((progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 4);; for gpr-which-function
-      (wisi-indent-action [0 gpr-indent-broken 0 [gpr-indent-when 
gpr-indent-when] 0 0 0])))%
-  ;
-
-;; declarations allowed in a case statement are a subset of
-;; declarative_items, but this simplifies the grammar.
-case_item
-  : WHEN discrete_choice_list EQUAL_GREATER declarative_items_opt
-    %((progn
-      (wisi-statement-action [1 motion])
-      (wisi-indent-action [0 gpr-indent-broken gpr-indent gpr-indent])))%
-  ;
-
-case_items
-  : ;; empty
-  | case_item
-  | case_items case_item
-  ;
-
-;; Compute indent for trailing comments.
-compilation_unit
-  : context_clause_opt project_qualifier_opt project_declaration_opt
-    %((wisi-indent-action [0 0 [0 0]]))%
-  ;
-
-context_clause
-  : with_clause
-  | context_clause with_clause
-  ;
-
-context_clause_opt
-  : ;; empty
-  | context_clause
-  ;
-
-;; (info "(gprbuild_ug)Declarations")
-declarative_item
-  : simple_declarative_item
-  | typed_string_declaration
-  | package_declaration
-  ;
-
-declarative_items
-  : declarative_item
-  | declarative_items declarative_item
-  ;
-
-declarative_items_opt
-  : ;; empty
-  | declarative_items
-  ;
-
-discrete_choice
-  : ;; empty
-  | STRING_LITERAL
-  | OTHERS
-  ;
-
-discrete_choice_list
-  : discrete_choice
-  | discrete_choice_list VERTICAL_BAR discrete_choice
-  ;
-
-;; (info "(gprbuild_ug)Expressions")
-expression
-  : term
-  | expression AMPERSAND term
-  ;
-
-external_value
-  : EXTERNAL aggregate_g
-  | EXTERNAL_AS_LIST aggregate_g
-  ;
-
-identifier_opt
-  : ;; empty
-  | IDENTIFIER
-    %()%
-    %((wisi-propagate-name 1))%
-  ;
-
-name
-  : identifier_opt
-  | name DOT IDENTIFIER
-  ;
-
-;; (info "(gprbuild_ug)Packages")
-package_declaration
-  : package_spec
-  | package_extension
-  | package_renaming
-  ;
-
-package_spec
-  : PACKAGE identifier_opt IS declarative_items_opt END identifier_opt 
SEMICOLON
-    %((progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 4)
-      (wisi-face-apply-action [2 nil font-lock-function-name-face 6 nil 
font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken 0 [gpr-indent gpr-indent] 0 0 
0])))%
-    %((wisi-match-names 2 6))%
-  ;
-
-package_extension
-  : PACKAGE identifier_opt EXTENDS name IS declarative_items_opt END 
identifier_opt SEMICOLON
-    %((progn
-      (wisi-statement-action [1 statement-start 9 statement-end])
-      (wisi-containing-action 1 6)
-      (wisi-face-apply-action [2 nil font-lock-function-name-face 8 nil 
font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken 0 gpr-indent-broken 0 
[gpr-indent gpr-indent] 0 0 0])))%
-    %((wisi-match-names 2 8))%
-  ;
-
-package_renaming
-  : PACKAGE identifier_opt RENAMES name SEMICOLON
-    %((progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-function-name-face 4 nil 
font-lock-function-name-face])))%
-  ;
-
-project_declaration_opt
-  : ;; empty
-  | simple_project_declaration
-  | project_extension
-  ;
-
-project_extension
-  : PROJECT identifier_opt EXTENDS STRING_LITERAL IS declarative_items_opt END 
identifier_opt SEMICOLON
-    %((progn
-      (wisi-statement-action [1 statement-start 9 statement-end])
-      (wisi-containing-action 1 6)
-      (wisi-face-apply-action [2 nil font-lock-function-name-face 8 nil 
font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken 0 gpr-indent-broken 0 
[gpr-indent gpr-indent] 0 0 0])))%
-    %((wisi-match-names 2 8))%
-  ;
-
-;; (info "(gprbuild_ug)Qualified Projects")
-project_qualifier_opt
-  : ;; empty
-  | ABSTRACT
-  | STANDARD
-  | AGGREGATE
-  | AGGREGATE LIBRARY
-  | LIBRARY
-  | CONFIGURATION
-  ;
-
-;; (info "(gprbuild_ug)Declarations" "*info gpr*")
-simple_declarative_item
-  : IDENTIFIER COLON_EQUALS expression SEMICOLON ;; variable_declaration
-    %((progn
-      (wisi-statement-action [1 statement-start 4 statement-end])
-      (wisi-indent-action [0 gpr-indent-broken gpr-indent-broken 0])))%
-  | IDENTIFIER COLON IDENTIFIER COLON_EQUALS expression SEMICOLON ;; 
typed_variable_declaration
-    %((progn
-      (wisi-statement-action [1 statement-start 6 statement-end])
-      (wisi-indent-action [0 gpr-indent-broken gpr-indent-broken 
gpr-indent-broken gpr-indent-broken 0])))%
-  | attribute_declaration
-  | case_statement
-  | NULL SEMICOLON
-    %((wisi-statement-action [1 statement-start 2 statement-end]))%
-  ;
-
-simple_project_declaration
-  : PROJECT identifier_opt IS declarative_items_opt END identifier_opt 
SEMICOLON
-    %((progn
-      (wisi-statement-action [1 statement-start 7 statement-end])
-      (wisi-containing-action 1 4)
-      (wisi-face-apply-action [2 nil font-lock-function-name-face 6 nil 
font-lock-function-name-face])
-      (wisi-indent-action [0 gpr-indent-broken 0 [gpr-indent gpr-indent] 0 0 
0])))%
-    %((wisi-match-names 2 6))%
-  ;
-
-;; (info "(gprbuild_ug)Expressions")
-string_primary
-  : STRING_LITERAL
-  | name;; variable_name
-  | external_value
-  | attribute_reference
-  ;
-
-;; (info "(gprbuild_ug)Expressions")
-;; we merge that string_list into term, and use 'string_list' for 
'string_expression {, string_expression}'
-string_list
-  : expression
-  | string_list COMMA expression
-  ;
-
-;; see string_list for info reference
-;; string_variable_name covered by string_primary
-term
-  : string_primary
-  | LEFT_PAREN RIGHT_PAREN
-  | aggregate_g
-  ;
-
-typed_string_declaration
-  : TYPE IDENTIFIER IS aggregate_g SEMICOLON
-    %((progn
-      (wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-indent-action [0 gpr-indent-broken gpr-indent-broken 
gpr-indent-broken 0])))%
-  ;
-
-with_clause
-  : WITH string_list SEMICOLON
-  ;
-
-;;; end of file
+;;; WisiToken grammar for GNAT project files
+;;
+;; Author: Stephen Leake <address@hidden>
+;; Maintainer: Stephen Leake <address@hidden>
+;; Created: Jan 2013
+;; Keywords: syntax
+
+%code copyright_license %{
+;;  Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
+
+;;  This program is free software; you can redistribute it and/or
+;;  modify it under the terms of the GNU General Public License as
+;;  published by the Free Software Foundation; either version 3, or (at
+;;  your option) any later version.
+;;
+;;  This software is distributed in the hope that it will be useful,
+;;  but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;;  General Public License for more details.
+;;
+;;  You should have received a copy of the GNU General Public License
+;;  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+}%
+
+%code actions spec post %{
+   Partial_Parse_Active : Boolean := False;
+}%
+
+;;; Commentary:
+;;
+;; This is a wisi grammar file for the gpr language. It is derived
+;; from the gprbuild user guide, with the following substitutions:
+;;
+;; simple_name -> IDENTIFIER
+;;
+;; and some simplifications. Repeating constructs are implemented with
+;; extra productions. Optional constructs are implemented by repeated
+;; productions
+
+;; GNAT GPL 2017 (info "(gprbuild_ug) Configuration File Reference")
+
+%token <punctuation> AMPERSAND "&"
+%token <punctuation> COLON ":"
+%token <punctuation> COLON_EQUALS ":="
+%token <punctuation> COMMA ","
+%token <punctuation> DOT "."
+%token <punctuation> EQUAL_GREATER "=>"
+%token <punctuation> QUOTE "'"
+%token <punctuation> SEMICOLON ";"
+%token <punctuation> VERTICAL_BAR "|"
+
+%case_insensitive
+
+%keyword ABSTRACT "abstract"
+%keyword AT "at"
+%keyword AGGREGATE "aggregate"
+%keyword CASE "case"
+%keyword CONFIGURATION "configuration"
+%keyword END "end"
+%keyword EXTENDS "extends"
+%keyword EXTERNAL "external"
+%keyword EXTERNAL_AS_LIST "external_as_list"
+%keyword FOR "for"
+%keyword IS "is"
+%keyword LEFT_PAREN "("
+%keyword LIBRARY "library"
+%keyword NULL "null"
+%keyword OTHERS "others"
+%keyword PACKAGE "package"
+%keyword PROJECT "project"
+%keyword RENAMES "renames"
+%keyword RIGHT_PAREN ")"
+%keyword STANDARD "standard"
+%keyword TYPE "type"
+%keyword USE "use"
+%keyword WHEN "when"
+%keyword WITH "with"
+
+%non_grammar <non-reporting> WHITESPACE %[ [ \t] ]%
+
+;; handle DOS or Unix newline
+%non_grammar <new-line> NEW_LINE %[ [\x0a]|[\x0d][\x0a] ]%
+
+%non_grammar <comment> COMMENT %[ "--"[^\n]* ]%
+
+%token <number> NUMERIC_LITERAL
+    %[ [0-9]+ ]%
+  "1234567890"
+
+%token <symbol> IDENTIFIER
+    %[ [a-zA-Z\x80-\U0010FFFF][0-9a-zA-Z_\x80-\U0010FFFF]* ]%
+  "A_Bogus_Identifier"
+
+%token <string-double> STRING_LITERAL
+    %[ (["][\x20-\x21\x23-\U0010FFFF]*["])+ ]%
+  '""'
+
+%start compilation_unit
+
+%generate LR1 Ada_Emacs re2c Process
+;; LR1 gives better error correction performance.
+
+%elisp_face font-lock-function-name-face
+%elisp_face nil
+
+%mckenzie_cost_default 4 4 2 2
+%mckenzie_enqueue_limit 10_000
+%mckenzie_check_limit 3
+%mckenzie_check_delta_limit 200
+
+%end_names_optional_option End_Names_Optional
+
+%conflict SHIFT/REDUCE in state aggregate_g, aggregate_g  on token RIGHT_PAREN
+%conflict SHIFT/REDUCE in state case_statement, case_statement  on token WHEN
+
+;; grammar rules, non-terminal alphabetical order
+
+aggregate_g
+  : LEFT_PAREN string_list RIGHT_PAREN
+    %((wisi-indent-action [0 (wisi-anchored 1 1) (wisi-anchored 1 0)]))%
+  ;
+
+attribute_declaration
+  : FOR IDENTIFIER USE expression SEMICOLON
+    %((progn
+        (wisi-statement-action [1 statement-start 5 statement-end])
+        (wisi-name-action 2)
+        (wisi-face-apply-action [2 nil font-lock-function-name-face])
+        (wisi-indent-action [0 gpr-indent-broken 0 gpr-indent-broken 0])))%
+  | FOR IDENTIFIER LEFT_PAREN discrete_choice RIGHT_PAREN USE expression 
SEMICOLON
+    %((progn
+        (wisi-statement-action [1 statement-start 8 statement-end])
+        (wisi-name-action 2)
+        (wisi-face-apply-action [2 nil font-lock-function-name-face])
+        (wisi-indent-action [0 gpr-indent-broken (- gpr-indent-broken 1) 
gpr-indent-broken (- gpr-indent-broken 1) 0
+                               gpr-indent-broken 0])))%
+  | FOR IDENTIFIER LEFT_PAREN discrete_choice RIGHT_PAREN USE expression AT 
NUMERIC_LITERAL SEMICOLON
+    %((progn
+        (wisi-statement-action [1 statement-start 10 statement-end])
+        (wisi-name-action 2)
+        (wisi-face-apply-action [2 nil font-lock-function-name-face])
+        (wisi-indent-action [0 gpr-indent-broken (- gpr-indent-broken 1) 
gpr-indent-broken (- gpr-indent-broken 1) 0
+                             gpr-indent-broken 0 0 0])))%
+  | FOR EXTERNAL LEFT_PAREN STRING_LITERAL RIGHT_PAREN USE expression SEMICOLON
+    %((progn
+        (wisi-statement-action [1 statement-start 8 statement-end])
+        (wisi-indent-action [0 gpr-indent-broken (- gpr-indent-broken 1) 
gpr-indent-broken (- gpr-indent-broken 1) 0
+                               gpr-indent-broken 0])))%
+  ;
+
+;; (info "(gprbuild_ug)Attributes")
+attribute_prefix
+  : PROJECT
+  | name
+  ;
+
+attribute_reference
+  : attribute_prefix QUOTE IDENTIFIER
+  | attribute_prefix QUOTE IDENTIFIER LEFT_PAREN STRING_LITERAL RIGHT_PAREN
+  ;
+
+;; (info "(gprbuild_ug)Case Statements")
+case_statement
+  : CASE name IS case_items END CASE SEMICOLON
+    %((progn
+        (wisi-statement-action [1 statement-start 7 statement-end])
+        (wisi-indent-action [0 gpr-indent-broken 0 [gpr-indent-when 
gpr-indent-when] 0 0 0])))%
+  ;
+
+;; declarations allowed in a case statement are a subset of
+;; declarative_items, but this simplifies the grammar.
+case_item
+  : WHEN discrete_choice_list EQUAL_GREATER declarative_items_opt
+    %((progn
+        (wisi-statement-action [1 motion])
+        (wisi-indent-action [0 gpr-indent-broken gpr-indent gpr-indent])))%
+  ;
+
+case_items
+  : ;; empty
+  | case_item
+  | case_items case_item
+  ;
+
+;; Compute indent for trailing comments.
+compilation_unit
+  : context_clause_opt project_qualifier_opt project_declaration_opt
+    %((wisi-indent-action [0 0 [0 0]]))%
+  ;
+
+context_clause
+  : with_clause
+  | context_clause with_clause
+  ;
+
+context_clause_opt
+  : ;; empty
+  | context_clause
+  ;
+
+;; (info "(gprbuild_ug)Declarations")
+declarative_item
+  : simple_declarative_item
+  | typed_string_declaration
+  | package_declaration
+  ;
+
+declarative_items
+  : declarative_item
+  | declarative_items declarative_item
+  ;
+
+declarative_items_opt
+  : ;; empty
+  | declarative_items
+  ;
+
+discrete_choice
+  : ;; empty
+  | STRING_LITERAL
+  | OTHERS
+  ;
+
+discrete_choice_list
+  : discrete_choice
+  | discrete_choice_list VERTICAL_BAR discrete_choice
+  ;
+
+;; (info "(gprbuild_ug)Expressions")
+expression
+  : term
+  | expression AMPERSAND term
+  ;
+
+external_value
+  : EXTERNAL aggregate_g
+  | EXTERNAL_AS_LIST aggregate_g
+  ;
+
+identifier_opt
+  : ;; empty
+  | IDENTIFIER
+    %()%
+    %((wisi-propagate-name 1))%
+  ;
+
+name
+  : identifier_opt
+  | name DOT IDENTIFIER
+  ;
+
+;; (info "(gprbuild_ug)Packages")
+package_declaration
+  : package_spec
+  | package_extension
+  | package_renaming
+  ;
+
+package_spec
+  : PACKAGE identifier_opt IS declarative_items_opt END identifier_opt 
SEMICOLON
+    %((progn
+        (wisi-statement-action [1 statement-start 7 statement-end])
+        (wisi-name-action 2)
+        (wisi-face-apply-action [2 nil font-lock-function-name-face 6 nil 
font-lock-function-name-face])
+        (wisi-indent-action [0 gpr-indent-broken 0 [gpr-indent gpr-indent] 0 0 
0])))%
+    %((wisi-match-names 2 6))%
+  ;
+
+package_extension
+  : PACKAGE identifier_opt EXTENDS name IS declarative_items_opt END 
identifier_opt SEMICOLON
+    %((progn
+        (wisi-statement-action [1 statement-start 9 statement-end])
+        (wisi-name-action 2)
+        (wisi-face-apply-action [2 nil font-lock-function-name-face 8 nil 
font-lock-function-name-face])
+        (wisi-indent-action [0 gpr-indent-broken 0 gpr-indent-broken 0 
[gpr-indent gpr-indent] 0 0 0])))%
+    %((wisi-match-names 2 8))%
+  ;
+
+package_renaming
+  : PACKAGE identifier_opt RENAMES name SEMICOLON
+    %((progn
+        (wisi-statement-action [1 statement-start 5 statement-end])
+        (wisi-face-apply-action [2 nil font-lock-function-name-face 4 nil 
font-lock-function-name-face])))%
+  ;
+
+project_declaration_opt
+  : ;; empty
+  | simple_project_declaration
+  | project_extension
+  ;
+
+project_extension
+  : PROJECT identifier_opt EXTENDS STRING_LITERAL IS declarative_items_opt END 
identifier_opt SEMICOLON
+    %((progn
+        (wisi-statement-action [1 statement-start 9 statement-end])
+        (wisi-name-action 2)
+        (wisi-face-apply-action [2 nil font-lock-function-name-face 8 nil 
font-lock-function-name-face])
+        (wisi-indent-action [0 gpr-indent-broken 0 gpr-indent-broken 0 
[gpr-indent gpr-indent] 0 0 0])))%
+    %((wisi-match-names 2 8))%
+  ;
+
+;; (info "(gprbuild_ug)Qualified Projects")
+project_qualifier_opt
+  : ;; empty
+  | ABSTRACT
+  | STANDARD
+  | AGGREGATE
+  | AGGREGATE LIBRARY
+  | LIBRARY
+  | CONFIGURATION
+  ;
+
+;; (info "(gprbuild_ug)Declarations" "*info gpr*")
+simple_declarative_item
+  : IDENTIFIER COLON_EQUALS expression SEMICOLON ;; variable_declaration
+    %((progn
+        (wisi-statement-action [1 statement-start 4 statement-end])
+        (wisi-indent-action [0 gpr-indent-broken gpr-indent-broken 0])))%
+  | IDENTIFIER COLON IDENTIFIER COLON_EQUALS expression SEMICOLON ;; 
typed_variable_declaration
+    %((progn
+        (wisi-statement-action [1 statement-start 6 statement-end])
+        (wisi-indent-action [0 gpr-indent-broken gpr-indent-broken 
gpr-indent-broken gpr-indent-broken 0])))%
+  | attribute_declaration
+  | case_statement
+  | NULL SEMICOLON
+    %((wisi-statement-action [1 statement-start 2 statement-end]))%
+  ;
+
+simple_project_declaration
+  : PROJECT identifier_opt IS declarative_items_opt END identifier_opt 
SEMICOLON
+    %((progn
+        (wisi-statement-action [1 statement-start 7 statement-end])
+        (wisi-name-action 2)
+        (wisi-face-apply-action [2 nil font-lock-function-name-face 6 nil 
font-lock-function-name-face])
+        (wisi-indent-action [0 gpr-indent-broken 0 [gpr-indent gpr-indent] 0 0 
0])))%
+    %((wisi-match-names 2 6))%
+  ;
+
+;; (info "(gprbuild_ug)Expressions")
+string_primary
+  : STRING_LITERAL
+  | name;; variable_name
+  | external_value
+  | attribute_reference
+  ;
+
+;; (info "(gprbuild_ug)Expressions")
+;; we merge that string_list into term, and use 'string_list' for 
'string_expression {, string_expression}'
+string_list
+  : expression
+  | string_list COMMA expression
+  ;
+
+;; see string_list for info reference
+;; string_variable_name covered by string_primary
+term
+  : string_primary
+  | LEFT_PAREN RIGHT_PAREN
+  | aggregate_g
+  ;
+
+typed_string_declaration
+  : TYPE IDENTIFIER IS aggregate_g SEMICOLON
+    %((progn
+        (wisi-statement-action [1 statement-start 5 statement-end])
+        (wisi-indent-action [0 gpr-indent-broken gpr-indent-broken 
gpr-indent-broken 0])))%
+  ;
+
+with_clause
+  : WITH string_list SEMICOLON
+  ;
+
+;;; end of file
diff --git a/packages/ada-mode/gpr_mode_wisi_parse.ads 
b/packages/ada-mode/gpr_mode_wisi_parse.ads
index 4aed022..623d1da 100644
--- a/packages/ada-mode/gpr_mode_wisi_parse.ads
+++ b/packages/ada-mode/gpr_mode_wisi_parse.ads
@@ -20,7 +20,7 @@ pragma License (GPL);
 
 with Gen_Emacs_Wisi_LR_Parse;
 with Gpr_Process_Actions;
-with Gpr_Process_LR1_Main;
+with Gpr_Process_Main;
 with Wisi.Gpr;
 procedure Gpr_Mode_Wisi_Parse is new Gen_Emacs_Wisi_LR_Parse
   (Parse_Data_Type                => Wisi.Gpr.Parse_Data_Type,
@@ -31,4 +31,4 @@ procedure Gpr_Mode_Wisi_Parse is new Gen_Emacs_Wisi_LR_Parse
    Language_Fixes                 => null,
    Language_Matching_Begin_Tokens => null,
    Language_String_ID_Set         => null,
-   Create_Parser                  => Gpr_Process_LR1_Main.Create_Parser);
+   Create_Parser                  => Gpr_Process_Main.Create_Parser);
diff --git a/packages/ada-mode/gpr_process_actions.adb 
b/packages/ada-mode/gpr_process_actions.adb
index c050e7e..f01ac6a 100644
--- a/packages/ada-mode/gpr_process_actions.adb
+++ b/packages/ada-mode/gpr_process_actions.adb
@@ -53,6 +53,7 @@ package body Gpr_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
+         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 1, 
0)));
       when Indent =>
@@ -73,6 +74,7 @@ package body Gpr_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (8, Statement_End)));
+         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 1, 
0)));
       when Indent =>
@@ -94,6 +96,7 @@ package body Gpr_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (10, Statement_End)));
+         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 1, 
0)));
       when Indent =>
@@ -137,7 +140,6 @@ package body Gpr_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
       when Face =>
          null;
       when Indent =>
@@ -208,7 +210,7 @@ package body Gpr_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
+         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 1, 0), (6, 
1, 0)));
       when Indent =>
@@ -241,7 +243,7 @@ package body Gpr_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (9, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 6);
+         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 1, 0), (8, 
1, 0)));
       when Indent =>
@@ -293,7 +295,7 @@ package body Gpr_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (9, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 6);
+         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 1, 0), (8, 
1, 0)));
       when Indent =>
@@ -384,7 +386,7 @@ package body Gpr_Process_Actions is
       case Parse_Data.Post_Parse_Action is
       when Navigate =>
          Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Containing_Action (Parse_Data, Tree, Nonterm, Tokens, 1, 4);
+         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 1, 0), (6, 
1, 0)));
       when Indent =>
diff --git a/packages/ada-mode/gpr_process_lr1_main.adb 
b/packages/ada-mode/gpr_process_main.adb
similarity index 85%
rename from packages/ada-mode/gpr_process_lr1_main.adb
rename to packages/ada-mode/gpr_process_main.adb
index 2beca49..b25a523 100644
--- a/packages/ada-mode/gpr_process_lr1_main.adb
+++ b/packages/ada-mode/gpr_process_main.adb
@@ -20,7 +20,7 @@
 with Gpr_Process_Actions; use Gpr_Process_Actions;
 with WisiToken.Lexer.re2c;
 with gpr_re2c_c;
-package body Gpr_Process_LR1_Main is
+package body Gpr_Process_Main is
 
    package Lexer is new WisiToken.Lexer.re2c
      (gpr_re2c_c.New_Lexer,
@@ -74,6 +74,7 @@ package body Gpr_Process_LR1_Main is
       declare
          procedure Subr_1
          is begin
+            Table.States (0).Action_List.Set_Capacity (8);
             Add_Action (Table.States (0), 3, Reduce, (50, 0), 0, null, null);
             Add_Action (Table.States (0), 5, Reduce, (50, 0), 0, null, null);
             Add_Action (Table.States (0), 7, Reduce, (50, 0), 0, null, null);
@@ -82,12 +83,13 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (0), 22, Reduce, (50, 0), 0, null, null);
             Add_Action (Table.States (0), 26, 1);
             Add_Action (Table.States (0), 39, Reduce, (50, 0), 0, null, null);
-            Add_Error (Table.States (0));
+            Table.States (0).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (0), 48, 2);
             Add_Goto (Table.States (0), 49, 3);
             Add_Goto (Table.States (0), 50, 4);
             Add_Goto (Table.States (0), 73, 5);
             Table.States (0).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 48, 0)));
+            Table.States (1).Action_List.Set_Capacity (11);
             Add_Action (Table.States (1), 10, 6);
             Add_Action (Table.States (1), 11, 7);
             Add_Action (Table.States (1), 14, 8);
@@ -99,7 +101,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (1), 34, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (1), 37, 10);
             Add_Action (Table.States (1), 38, 11);
-            Add_Error (Table.States (1));
+            Table.States (1).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (1), 41, 12);
             Add_Goto (Table.States (1), 43, 13);
             Add_Goto (Table.States (1), 44, 14);
@@ -112,9 +114,10 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (1), 71, 21);
             Table.States (1).Kernel := To_Vector ((0 => (73, 26, 1, False)));
             Table.States (1).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 70, 0)));
+            Table.States (2).Action_List.Set_Capacity (1);
             Add_Action (Table.States (2), 39, Accept_It, (40, 0), 1, null, 
null);
-            Add_Error (Table.States (2));
             Table.States (2).Kernel := To_Vector ((0 => (40, 48, 1, False)));
+            Table.States (3).Action_List.Set_Capacity (8);
             Add_Action (Table.States (3), 3, Reduce, (50, 1), 1, null, null);
             Add_Action (Table.States (3), 5, Reduce, (50, 1), 1, null, null);
             Add_Action (Table.States (3), 7, Reduce, (50, 1), 1, null, null);
@@ -123,10 +126,11 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (3), 22, Reduce, (50, 1), 1, null, null);
             Add_Action (Table.States (3), 26, 1);
             Add_Action (Table.States (3), 39, Reduce, (50, 1), 1, null, null);
-            Add_Error (Table.States (3));
+            Table.States (3).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (3), 73, 22);
             Table.States (3).Kernel := To_Vector (((49, 49, 2, True), (50, 49, 
0, False)));
             Table.States (3).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 50, 1)));
+            Table.States (4).Action_List.Set_Capacity (7);
             Add_Action (Table.States (4), 3, 23);
             Add_Action (Table.States (4), 5, 24);
             Add_Action (Table.States (4), 7, 25);
@@ -134,23 +138,27 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (4), 19, Reduce, (66, 0), 0, null, null);
             Add_Action (Table.States (4), 22, 27);
             Add_Action (Table.States (4), 39, Reduce, (66, 0), 0, null, null);
-            Add_Error (Table.States (4));
+            Table.States (4).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (4), 66, 28);
             Table.States (4).Kernel := To_Vector ((0 => (48, 50, 0, False)));
             Table.States (4).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 66, 0)));
+            Table.States (5).Action_List.Set_Capacity (8);
             Add_Action (Table.States (5), (3, 5, 7, 15, 19, 22, 26, 39), (49, 
0), 1, null, null);
             Table.States (5).Kernel := To_Vector ((0 => (49, 73, 0, False)));
             Table.States (5).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 49, 1)));
+            Table.States (6).Action_List.Set_Capacity (1);
             Add_Action (Table.States (6), 14, 29);
-            Add_Error (Table.States (6));
+            Table.States (6).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (6), 41, 30);
             Table.States (6).Kernel := To_Vector ((0 => (57, 10, 2, False)));
             Table.States (6).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 29)));
+            Table.States (7).Action_List.Set_Capacity (1);
             Add_Action (Table.States (7), 14, 29);
-            Add_Error (Table.States (7));
+            Table.States (7).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (7), 41, 31);
             Table.States (7).Kernel := To_Vector ((0 => (57, 11, 2, False)));
             Table.States (7).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 29)));
+            Table.States (8).Action_List.Set_Capacity (11);
             Add_Action (Table.States (8), 10, 32);
             Add_Action (Table.States (8), 11, 33);
             Add_Action (Table.States (8), 14, 34);
@@ -163,7 +171,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (8), 33, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (8), 37, 36);
             Add_Action (Table.States (8), 38, 37);
-            Add_Error (Table.States (8));
+            Table.States (8).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (8), 41, 38);
             Add_Goto (Table.States (8), 43, 39);
             Add_Goto (Table.States (8), 44, 40);
@@ -176,86 +184,102 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (8), 71, 47);
             Table.States (8).Kernel := To_Vector (((41, 14, 1, False), (71, 
14, 1, False)));
             Table.States (8).Minimal_Complete_Actions := To_Vector (((Reduce, 
70, 0), (Shift, 21, 35)));
+            Table.States (9).Action_List.Set_Capacity (1);
             Add_Action (Table.States (9), (1 =>  33), (43, 0), 1, null, null);
             Table.States (9).Kernel := To_Vector ((0 => (43, 19, 0, False)));
             Table.States (9).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 43, 1)));
+            Table.States (10).Action_List.Set_Capacity (5);
             Add_Action (Table.States (10), (27, 30, 31, 33, 34), (58, 1), 1, 
null, identifier_opt_1_check'Access);
             Table.States (10).Kernel := To_Vector ((0 => (58, 37, 0, False)));
             Table.States (10).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 1)));
+            Table.States (11).Action_List.Set_Capacity (3);
             Add_Action (Table.States (11), (27, 30, 34), (69, 0), 1, null, 
null);
             Table.States (11).Kernel := To_Vector ((0 => (69, 38, 0, False)));
             Table.States (11).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 69, 1)));
+            Table.States (12).Action_List.Set_Capacity (3);
             Add_Action (Table.States (12), (27, 30, 34), (71, 2), 1, null, 
null);
             Table.States (12).Kernel := To_Vector ((0 => (71, 41, 0, False)));
             Table.States (12).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 1)));
+            Table.States (13).Action_List.Set_Capacity (1);
             Add_Action (Table.States (13), 33, 48);
-            Add_Error (Table.States (13));
             Table.States (13).Kernel := To_Vector (((44, 43, 2, False), (44, 
43, 5, False)));
             Table.States (13).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 33, 48)));
+            Table.States (14).Action_List.Set_Capacity (3);
             Add_Action (Table.States (14), (27, 30, 34), (69, 3), 1, null, 
null);
             Table.States (14).Kernel := To_Vector ((0 => (69, 44, 0, False)));
             Table.States (14).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 69, 1)));
+            Table.States (15).Action_List.Set_Capacity (3);
             Add_Action (Table.States (15), 27, 49);
             Add_Action (Table.States (15), 30, Reduce, (70, 0), 1, null, null);
             Add_Action (Table.States (15), 34, Reduce, (70, 0), 1, null, null);
-            Add_Error (Table.States (15));
             Table.States (15).Kernel := To_Vector (((56, 56, 1, True), (70, 
56, 0, False)));
             Table.States (15).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 70, 1)));
+            Table.States (16).Action_List.Set_Capacity (3);
             Add_Action (Table.States (16), (27, 30, 34), (69, 2), 1, null, 
null);
             Table.States (16).Kernel := To_Vector ((0 => (69, 57, 0, False)));
             Table.States (16).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 69, 1)));
+            Table.States (17).Action_List.Set_Capacity (5);
             Add_Action (Table.States (17), (27, 30, 31, 33, 34), (59, 0), 1, 
null, null);
             Table.States (17).Kernel := To_Vector ((0 => (59, 58, 0, False)));
             Table.States (17).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 1)));
+            Table.States (18).Action_List.Set_Capacity (5);
             Add_Action (Table.States (18), 27, Reduce, (69, 1), 1, null, null);
             Add_Action (Table.States (18), 30, Reduce, (69, 1), 1, null, null);
             Add_Action (Table.States (18), 31, 50);
             Add_Action (Table.States (18), 33, Reduce, (43, 1), 1, null, null);
             Add_Action (Table.States (18), 34, Reduce, (69, 1), 1, null, null);
-            Add_Error (Table.States (18));
             Table.States (18).Kernel := To_Vector (((43, 59, 0, False), (59, 
59, 2, True), (69, 59, 0, False)));
             Table.States (18).Minimal_Complete_Actions := To_Vector (((Reduce, 
43, 1), (Reduce, 69, 1)));
+            Table.States (19).Action_List.Set_Capacity (3);
             Add_Action (Table.States (19), (27, 30, 34), (71, 0), 1, null, 
null);
             Table.States (19).Kernel := To_Vector ((0 => (71, 69, 0, False)));
             Table.States (19).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 1)));
+            Table.States (20).Action_List.Set_Capacity (2);
             Add_Action (Table.States (20), 30, 51);
             Add_Action (Table.States (20), 34, 52);
-            Add_Error (Table.States (20));
             Table.States (20).Kernel := To_Vector (((70, 70, 1, True), (73, 
70, 1, False)));
             Table.States (20).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 52)));
+            Table.States (21).Action_List.Set_Capacity (3);
             Add_Action (Table.States (21), (27, 30, 34), (56, 0), 1, null, 
null);
             Table.States (21).Kernel := To_Vector ((0 => (56, 71, 0, False)));
             Table.States (21).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 1)));
+            Table.States (22).Action_List.Set_Capacity (8);
             Add_Action (Table.States (22), (3, 5, 7, 15, 19, 22, 26, 39), (49, 
1), 2, null, null);
             Table.States (22).Kernel := To_Vector ((0 => (49, 73, 0, True)));
             Table.States (22).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 49, 2)));
             Table.States (22).Minimal_Complete_Actions_Recursive := True;
+            Table.States (23).Action_List.Set_Capacity (2);
             Add_Action (Table.States (23), (19, 39), (66, 1), 1, null, null);
             Table.States (23).Kernel := To_Vector ((0 => (66, 3, 0, False)));
             Table.States (23).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 66, 1)));
+            Table.States (24).Action_List.Set_Capacity (3);
             Add_Action (Table.States (24), 15, 53);
             Add_Action (Table.States (24), 19, Reduce, (66, 3), 1, null, null);
             Add_Action (Table.States (24), 39, Reduce, (66, 3), 1, null, null);
-            Add_Error (Table.States (24));
             Table.States (24).Kernel := To_Vector (((66, 5, 0, False), (66, 5, 
1, False)));
             Table.States (24).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 66, 1)));
+            Table.States (25).Action_List.Set_Capacity (2);
             Add_Action (Table.States (25), (19, 39), (66, 6), 1, null, null);
             Table.States (25).Kernel := To_Vector ((0 => (66, 7, 0, False)));
             Table.States (25).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 66, 1)));
+            Table.States (26).Action_List.Set_Capacity (2);
             Add_Action (Table.States (26), (19, 39), (66, 5), 1, null, null);
             Table.States (26).Kernel := To_Vector ((0 => (66, 15, 0, False)));
             Table.States (26).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 66, 1)));
+            Table.States (27).Action_List.Set_Capacity (2);
             Add_Action (Table.States (27), (19, 39), (66, 2), 1, null, null);
             Table.States (27).Kernel := To_Vector ((0 => (66, 22, 0, False)));
             Table.States (27).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 66, 1)));
+            Table.States (28).Action_List.Set_Capacity (2);
             Add_Action (Table.States (28), 19, 54);
             Add_Action (Table.States (28), 39, Reduce, (64, 0), 0, null, null);
-            Add_Error (Table.States (28));
+            Table.States (28).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (28), 64, 55);
             Add_Goto (Table.States (28), 65, 56);
             Add_Goto (Table.States (28), 68, 57);
             Table.States (28).Kernel := To_Vector ((0 => (48, 66, 0, False)));
             Table.States (28).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 64, 0)));
+            Table.States (29).Action_List.Set_Capacity (11);
             Add_Action (Table.States (29), 10, 32);
             Add_Action (Table.States (29), 11, 33);
             Add_Action (Table.States (29), 14, 34);
@@ -267,7 +291,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (29), 33, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (29), 37, 36);
             Add_Action (Table.States (29), 38, 37);
-            Add_Error (Table.States (29));
+            Table.States (29).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (29), 41, 38);
             Add_Goto (Table.States (29), 43, 39);
             Add_Goto (Table.States (29), 44, 40);
@@ -280,22 +304,27 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (29), 71, 47);
             Table.States (29).Kernel := To_Vector ((0 => (41, 14, 1, False)));
             Table.States (29).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 70, 0)));
+            Table.States (30).Action_List.Set_Capacity (3);
             Add_Action (Table.States (30), (27, 30, 34), (57, 0), 2, null, 
null);
             Table.States (30).Kernel := To_Vector ((0 => (57, 41, 0, False)));
             Table.States (30).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 57, 2)));
+            Table.States (31).Action_List.Set_Capacity (3);
             Add_Action (Table.States (31), (27, 30, 34), (57, 1), 2, null, 
null);
             Table.States (31).Kernel := To_Vector ((0 => (57, 41, 0, False)));
             Table.States (31).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 57, 2)));
+            Table.States (32).Action_List.Set_Capacity (1);
             Add_Action (Table.States (32), 14, 58);
-            Add_Error (Table.States (32));
+            Table.States (32).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (32), 41, 59);
             Table.States (32).Kernel := To_Vector ((0 => (57, 10, 2, False)));
             Table.States (32).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 58)));
+            Table.States (33).Action_List.Set_Capacity (1);
             Add_Action (Table.States (33), 14, 58);
-            Add_Error (Table.States (33));
+            Table.States (33).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (33), 41, 60);
             Table.States (33).Kernel := To_Vector ((0 => (57, 11, 2, False)));
             Table.States (33).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 58)));
+            Table.States (34).Action_List.Set_Capacity (11);
             Add_Action (Table.States (34), 10, 32);
             Add_Action (Table.States (34), 11, 33);
             Add_Action (Table.States (34), 14, 34);
@@ -308,7 +337,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (34), 33, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (34), 37, 36);
             Add_Action (Table.States (34), 38, 37);
-            Add_Error (Table.States (34));
+            Table.States (34).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (34), 41, 38);
             Add_Goto (Table.States (34), 43, 39);
             Add_Goto (Table.States (34), 44, 40);
@@ -321,60 +350,70 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (34), 71, 47);
             Table.States (34).Kernel := To_Vector (((41, 14, 1, False), (71, 
14, 1, False)));
             Table.States (34).Minimal_Complete_Actions := To_Vector (((Reduce, 
70, 0), (Shift, 21, 61)));
+            Table.States (35).Action_List.Set_Capacity (3);
             Add_Action (Table.States (35), (27, 30, 34), (71, 1), 2, null, 
null);
             Table.States (35).Kernel := To_Vector ((0 => (71, 21, 0, False)));
             Table.States (35).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 2)));
+            Table.States (36).Action_List.Set_Capacity (5);
             Add_Action (Table.States (36), (21, 27, 30, 31, 33), (58, 1), 1, 
null, identifier_opt_1_check'Access);
             Table.States (36).Kernel := To_Vector ((0 => (58, 37, 0, False)));
             Table.States (36).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 1)));
+            Table.States (37).Action_List.Set_Capacity (3);
             Add_Action (Table.States (37), (21, 27, 30), (69, 0), 1, null, 
null);
             Table.States (37).Kernel := To_Vector ((0 => (69, 38, 0, False)));
             Table.States (37).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 69, 1)));
+            Table.States (38).Action_List.Set_Capacity (3);
             Add_Action (Table.States (38), (21, 27, 30), (71, 2), 1, null, 
null);
             Table.States (38).Kernel := To_Vector ((0 => (71, 41, 0, False)));
             Table.States (38).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 1)));
+            Table.States (39).Action_List.Set_Capacity (1);
             Add_Action (Table.States (39), 33, 63);
-            Add_Error (Table.States (39));
             Table.States (39).Kernel := To_Vector (((44, 43, 2, False), (44, 
43, 5, False)));
             Table.States (39).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 33, 63)));
+            Table.States (40).Action_List.Set_Capacity (3);
             Add_Action (Table.States (40), (21, 27, 30), (69, 3), 1, null, 
null);
             Table.States (40).Kernel := To_Vector ((0 => (69, 44, 0, False)));
             Table.States (40).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 69, 1)));
+            Table.States (41).Action_List.Set_Capacity (3);
             Add_Action (Table.States (41), 21, Reduce, (70, 0), 1, null, null);
             Add_Action (Table.States (41), 27, 64);
             Add_Action (Table.States (41), 30, Reduce, (70, 0), 1, null, null);
-            Add_Error (Table.States (41));
             Table.States (41).Kernel := To_Vector (((56, 56, 1, True), (70, 
56, 0, False)));
             Table.States (41).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 70, 1)));
+            Table.States (42).Action_List.Set_Capacity (3);
             Add_Action (Table.States (42), (21, 27, 30), (69, 2), 1, null, 
null);
             Table.States (42).Kernel := To_Vector ((0 => (69, 57, 0, False)));
             Table.States (42).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 69, 1)));
+            Table.States (43).Action_List.Set_Capacity (5);
             Add_Action (Table.States (43), (21, 27, 30, 31, 33), (59, 0), 1, 
null, null);
             Table.States (43).Kernel := To_Vector ((0 => (59, 58, 0, False)));
             Table.States (43).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 1)));
+            Table.States (44).Action_List.Set_Capacity (5);
             Add_Action (Table.States (44), 21, Reduce, (69, 1), 1, null, null);
             Add_Action (Table.States (44), 27, Reduce, (69, 1), 1, null, null);
             Add_Action (Table.States (44), 30, Reduce, (69, 1), 1, null, null);
             Add_Action (Table.States (44), 31, 65);
             Add_Action (Table.States (44), 33, Reduce, (43, 1), 1, null, null);
-            Add_Error (Table.States (44));
             Table.States (44).Kernel := To_Vector (((43, 59, 0, False), (59, 
59, 2, True), (69, 59, 0, False)));
             Table.States (44).Minimal_Complete_Actions := To_Vector (((Reduce, 
43, 1), (Reduce, 69, 1)));
+            Table.States (45).Action_List.Set_Capacity (3);
             Add_Action (Table.States (45), (21, 27, 30), (71, 0), 1, null, 
null);
             Table.States (45).Kernel := To_Vector ((0 => (71, 69, 0, False)));
             Table.States (45).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 1)));
+            Table.States (46).Action_List.Set_Capacity (2);
             Add_Action (Table.States (46), 21, 66);
             Add_Action (Table.States (46), 30, 67);
-            Add_Error (Table.States (46));
             Table.States (46).Kernel := To_Vector (((41, 70, 1, False), (70, 
70, 1, True)));
             Table.States (46).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 66)));
+            Table.States (47).Action_List.Set_Capacity (3);
             Add_Action (Table.States (47), (21, 27, 30), (56, 0), 1, null, 
null);
             Table.States (47).Kernel := To_Vector ((0 => (56, 71, 0, False)));
             Table.States (47).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 1)));
+            Table.States (48).Action_List.Set_Capacity (1);
             Add_Action (Table.States (48), 37, 68);
-            Add_Error (Table.States (48));
             Table.States (48).Kernel := To_Vector (((44, 33, 1, False), (44, 
33, 4, False)));
             Table.States (48).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 68)));
+            Table.States (49).Action_List.Set_Capacity (11);
             Add_Action (Table.States (49), 10, 6);
             Add_Action (Table.States (49), 11, 7);
             Add_Action (Table.States (49), 14, 8);
@@ -386,7 +425,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (49), 34, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (49), 37, 10);
             Add_Action (Table.States (49), 38, 11);
-            Add_Error (Table.States (49));
+            Table.States (49).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (49), 41, 12);
             Add_Goto (Table.States (49), 43, 13);
             Add_Goto (Table.States (49), 44, 14);
@@ -398,11 +437,12 @@ package body Gpr_Process_LR1_Main is
             Table.States (49).Kernel := To_Vector ((0 => (56, 27, 0, True)));
             Table.States (49).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 0)));
             Table.States (49).Minimal_Complete_Actions_Recursive := True;
+            Table.States (50).Action_List.Set_Capacity (1);
             Add_Action (Table.States (50), 37, 70);
-            Add_Error (Table.States (50));
             Table.States (50).Kernel := To_Vector ((0 => (59, 31, 1, True)));
             Table.States (50).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 70)));
             Table.States (50).Minimal_Complete_Actions_Recursive := True;
+            Table.States (51).Action_List.Set_Capacity (11);
             Add_Action (Table.States (51), 10, 6);
             Add_Action (Table.States (51), 11, 7);
             Add_Action (Table.States (51), 14, 8);
@@ -414,7 +454,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (51), 34, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (51), 37, 10);
             Add_Action (Table.States (51), 38, 11);
-            Add_Error (Table.States (51));
+            Table.States (51).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (51), 41, 12);
             Add_Goto (Table.States (51), 43, 13);
             Add_Goto (Table.States (51), 44, 14);
@@ -427,28 +467,35 @@ package body Gpr_Process_LR1_Main is
             Table.States (51).Kernel := To_Vector ((0 => (70, 30, 0, True)));
             Table.States (51).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 0)));
             Table.States (51).Minimal_Complete_Actions_Recursive := True;
+            Table.States (52).Action_List.Set_Capacity (8);
             Add_Action (Table.States (52), (3, 5, 7, 15, 19, 22, 26, 39), (73, 
0), 3, null, null);
             Table.States (52).Kernel := To_Vector ((0 => (73, 34, 0, False)));
             Table.States (52).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 73, 3)));
+            Table.States (53).Action_List.Set_Capacity (2);
             Add_Action (Table.States (53), (19, 39), (66, 4), 2, null, null);
             Table.States (53).Kernel := To_Vector ((0 => (66, 15, 0, False)));
             Table.States (53).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 66, 2)));
+            Table.States (54).Action_List.Set_Capacity (3);
             Add_Action (Table.States (54), 9, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (54), 13, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (54), 37, 72);
-            Add_Error (Table.States (54));
+            Table.States (54).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (54), 58, 73);
             Table.States (54).Kernel := To_Vector (((65, 19, 5, False), (68, 
19, 3, False)));
             Table.States (54).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 0)));
+            Table.States (55).Action_List.Set_Capacity (1);
             Add_Action (Table.States (55), (1 =>  39), (48, 0), 3, 
compilation_unit_0'Access, null);
             Table.States (55).Kernel := To_Vector ((0 => (48, 64, 0, False)));
             Table.States (55).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 48, 3)));
+            Table.States (56).Action_List.Set_Capacity (1);
             Add_Action (Table.States (56), (1 =>  39), (64, 2), 1, null, null);
             Table.States (56).Kernel := To_Vector ((0 => (64, 65, 0, False)));
             Table.States (56).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 64, 1)));
+            Table.States (57).Action_List.Set_Capacity (1);
             Add_Action (Table.States (57), (1 =>  39), (64, 1), 1, null, null);
             Table.States (57).Kernel := To_Vector ((0 => (64, 68, 0, False)));
             Table.States (57).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 64, 1)));
+            Table.States (58).Action_List.Set_Capacity (11);
             Add_Action (Table.States (58), 10, 32);
             Add_Action (Table.States (58), 11, 33);
             Add_Action (Table.States (58), 14, 34);
@@ -460,7 +507,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (58), 33, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (58), 37, 36);
             Add_Action (Table.States (58), 38, 37);
-            Add_Error (Table.States (58));
+            Table.States (58).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (58), 41, 38);
             Add_Goto (Table.States (58), 43, 39);
             Add_Goto (Table.States (58), 44, 40);
@@ -473,24 +520,28 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (58), 71, 47);
             Table.States (58).Kernel := To_Vector ((0 => (41, 14, 1, False)));
             Table.States (58).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 70, 0)));
+            Table.States (59).Action_List.Set_Capacity (3);
             Add_Action (Table.States (59), (21, 27, 30), (57, 0), 2, null, 
null);
             Table.States (59).Kernel := To_Vector ((0 => (57, 41, 0, False)));
             Table.States (59).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 57, 2)));
+            Table.States (60).Action_List.Set_Capacity (3);
             Add_Action (Table.States (60), (21, 27, 30), (57, 1), 2, null, 
null);
             Table.States (60).Kernel := To_Vector ((0 => (57, 41, 0, False)));
             Table.States (60).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 57, 2)));
+            Table.States (61).Action_List.Set_Capacity (3);
             Add_Action (Table.States (61), (21, 27, 30), (71, 1), 2, null, 
null);
             Table.States (61).Kernel := To_Vector ((0 => (71, 21, 0, False)));
             Table.States (61).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 2)));
+            Table.States (62).Action_List.Set_Capacity (2);
             Add_Action (Table.States (62), 21, 74);
             Add_Action (Table.States (62), 30, 67);
-            Add_Error (Table.States (62));
             Table.States (62).Kernel := To_Vector (((41, 70, 1, False), (70, 
70, 1, True)));
             Table.States (62).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 74)));
+            Table.States (63).Action_List.Set_Capacity (1);
             Add_Action (Table.States (63), 37, 75);
-            Add_Error (Table.States (63));
             Table.States (63).Kernel := To_Vector (((44, 33, 1, False), (44, 
33, 4, False)));
             Table.States (63).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 75)));
+            Table.States (64).Action_List.Set_Capacity (11);
             Add_Action (Table.States (64), 10, 32);
             Add_Action (Table.States (64), 11, 33);
             Add_Action (Table.States (64), 14, 34);
@@ -502,7 +553,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (64), 33, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (64), 37, 36);
             Add_Action (Table.States (64), 38, 37);
-            Add_Error (Table.States (64));
+            Table.States (64).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (64), 41, 38);
             Add_Goto (Table.States (64), 43, 39);
             Add_Goto (Table.States (64), 44, 40);
@@ -514,14 +565,16 @@ package body Gpr_Process_LR1_Main is
             Table.States (64).Kernel := To_Vector ((0 => (56, 27, 0, True)));
             Table.States (64).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 0)));
             Table.States (64).Minimal_Complete_Actions_Recursive := True;
+            Table.States (65).Action_List.Set_Capacity (1);
             Add_Action (Table.States (65), 37, 77);
-            Add_Error (Table.States (65));
             Table.States (65).Kernel := To_Vector ((0 => (59, 31, 1, True)));
             Table.States (65).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 77)));
             Table.States (65).Minimal_Complete_Actions_Recursive := True;
+            Table.States (66).Action_List.Set_Capacity (3);
             Add_Action (Table.States (66), (27, 30, 34), (41, 0), 3, 
aggregate_g_0'Access, null);
             Table.States (66).Kernel := To_Vector ((0 => (41, 21, 0, False)));
             Table.States (66).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 41, 3)));
+            Table.States (67).Action_List.Set_Capacity (11);
             Add_Action (Table.States (67), 10, 32);
             Add_Action (Table.States (67), 11, 33);
             Add_Action (Table.States (67), 14, 34);
@@ -533,7 +586,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (67), 33, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (67), 37, 36);
             Add_Action (Table.States (67), 38, 37);
-            Add_Error (Table.States (67));
+            Table.States (67).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (67), 41, 38);
             Add_Goto (Table.States (67), 43, 39);
             Add_Goto (Table.States (67), 44, 40);
@@ -546,69 +599,76 @@ package body Gpr_Process_LR1_Main is
             Table.States (67).Kernel := To_Vector ((0 => (70, 30, 0, True)));
             Table.States (67).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 0)));
             Table.States (67).Minimal_Complete_Actions_Recursive := True;
+            Table.States (68).Action_List.Set_Capacity (4);
             Add_Action (Table.States (68), 14, 79);
             Add_Action (Table.States (68), 27, Reduce, (44, 0), 3, null, null);
             Add_Action (Table.States (68), 30, Reduce, (44, 0), 3, null, null);
             Add_Action (Table.States (68), 34, Reduce, (44, 0), 3, null, null);
-            Add_Error (Table.States (68));
             Table.States (68).Kernel := To_Vector (((44, 37, 0, False), (44, 
37, 3, False)));
             Table.States (68).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 44, 3)));
+            Table.States (69).Action_List.Set_Capacity (3);
             Add_Action (Table.States (69), (27, 30, 34), (56, 1), 3, null, 
null);
             Table.States (69).Kernel := To_Vector ((0 => (56, 71, 0, True)));
             Table.States (69).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 3)));
             Table.States (69).Minimal_Complete_Actions_Recursive := True;
+            Table.States (70).Action_List.Set_Capacity (5);
             Add_Action (Table.States (70), (27, 30, 31, 33, 34), (59, 1), 3, 
null, null);
             Table.States (70).Kernel := To_Vector ((0 => (59, 37, 0, True)));
             Table.States (70).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 3)));
             Table.States (70).Minimal_Complete_Actions_Recursive := True;
+            Table.States (71).Action_List.Set_Capacity (3);
             Add_Action (Table.States (71), 27, 49);
             Add_Action (Table.States (71), 30, Reduce, (70, 1), 3, null, null);
             Add_Action (Table.States (71), 34, Reduce, (70, 1), 3, null, null);
-            Add_Error (Table.States (71));
             Table.States (71).Kernel := To_Vector (((56, 56, 1, True), (70, 
56, 0, True)));
             Table.States (71).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 70, 3)));
             Table.States (71).Minimal_Complete_Actions_Recursive := True;
+            Table.States (72).Action_List.Set_Capacity (2);
             Add_Action (Table.States (72), (9, 13), (58, 1), 1, null, 
identifier_opt_1_check'Access);
             Table.States (72).Kernel := To_Vector ((0 => (58, 37, 0, False)));
             Table.States (72).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 1)));
+            Table.States (73).Action_List.Set_Capacity (2);
             Add_Action (Table.States (73), 9, 80);
             Add_Action (Table.States (73), 13, 81);
-            Add_Error (Table.States (73));
             Table.States (73).Kernel := To_Vector (((65, 58, 5, False), (68, 
58, 3, False)));
             Table.States (73).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 81)));
+            Table.States (74).Action_List.Set_Capacity (3);
             Add_Action (Table.States (74), (21, 27, 30), (41, 0), 3, 
aggregate_g_0'Access, null);
             Table.States (74).Kernel := To_Vector ((0 => (41, 21, 0, False)));
             Table.States (74).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 41, 3)));
+            Table.States (75).Action_List.Set_Capacity (4);
             Add_Action (Table.States (75), 14, 82);
             Add_Action (Table.States (75), 21, Reduce, (44, 0), 3, null, null);
             Add_Action (Table.States (75), 27, Reduce, (44, 0), 3, null, null);
             Add_Action (Table.States (75), 30, Reduce, (44, 0), 3, null, null);
-            Add_Error (Table.States (75));
             Table.States (75).Kernel := To_Vector (((44, 37, 0, False), (44, 
37, 3, False)));
             Table.States (75).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 44, 3)));
+            Table.States (76).Action_List.Set_Capacity (3);
             Add_Action (Table.States (76), (21, 27, 30), (56, 1), 3, null, 
null);
             Table.States (76).Kernel := To_Vector ((0 => (56, 71, 0, True)));
             Table.States (76).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 3)));
             Table.States (76).Minimal_Complete_Actions_Recursive := True;
+            Table.States (77).Action_List.Set_Capacity (5);
             Add_Action (Table.States (77), (21, 27, 30, 31, 33), (59, 1), 3, 
null, null);
             Table.States (77).Kernel := To_Vector ((0 => (59, 37, 0, True)));
             Table.States (77).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 3)));
             Table.States (77).Minimal_Complete_Actions_Recursive := True;
+            Table.States (78).Action_List.Set_Capacity (3);
             Add_Action (Table.States (78), 21, Reduce, (70, 1), 3, null, null);
             Add_Action (Table.States (78), 27, 64);
             Add_Action (Table.States (78), 30, Reduce, (70, 1), 3, null, null);
-            Add_Error (Table.States (78));
             Table.States (78).Kernel := To_Vector (((56, 56, 1, True), (70, 
56, 0, True)));
             Table.States (78).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 70, 3)));
             Table.States (78).Minimal_Complete_Actions_Recursive := True;
+            Table.States (79).Action_List.Set_Capacity (1);
             Add_Action (Table.States (79), 38, 83);
-            Add_Error (Table.States (79));
             Table.States (79).Kernel := To_Vector ((0 => (44, 14, 2, False)));
             Table.States (79).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 83)));
+            Table.States (80).Action_List.Set_Capacity (1);
             Add_Action (Table.States (80), 38, 84);
-            Add_Error (Table.States (80));
             Table.States (80).Kernel := To_Vector ((0 => (65, 9, 4, False)));
             Table.States (80).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 84)));
+            Table.States (81).Action_List.Set_Capacity (7);
             Add_Action (Table.States (81), 6, 85);
             Add_Action (Table.States (81), 8, Reduce, (53, 0), 0, null, null);
             Add_Action (Table.States (81), 12, 86);
@@ -616,7 +676,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (81), 18, 88);
             Add_Action (Table.States (81), 23, 89);
             Add_Action (Table.States (81), 37, 90);
-            Add_Error (Table.States (81));
+            Table.States (81).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (81), 42, 91);
             Add_Goto (Table.States (81), 45, 92);
             Add_Goto (Table.States (81), 51, 93);
@@ -630,62 +690,68 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (81), 72, 101);
             Table.States (81).Kernel := To_Vector ((0 => (68, 13, 2, False)));
             Table.States (81).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 53, 0)));
+            Table.States (82).Action_List.Set_Capacity (1);
             Add_Action (Table.States (82), 38, 102);
-            Add_Error (Table.States (82));
             Table.States (82).Kernel := To_Vector ((0 => (44, 14, 2, False)));
             Table.States (82).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 102)));
+            Table.States (83).Action_List.Set_Capacity (1);
             Add_Action (Table.States (83), 21, 103);
-            Add_Error (Table.States (83));
             Table.States (83).Kernel := To_Vector ((0 => (44, 38, 1, False)));
             Table.States (83).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 103)));
+            Table.States (84).Action_List.Set_Capacity (1);
             Add_Action (Table.States (84), 13, 104);
-            Add_Error (Table.States (84));
             Table.States (84).Kernel := To_Vector ((0 => (65, 38, 3, False)));
             Table.States (84).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 104)));
+            Table.States (85).Action_List.Set_Capacity (3);
             Add_Action (Table.States (85), 13, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (85), 31, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (85), 37, 105);
-            Add_Error (Table.States (85));
+            Table.States (85).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (85), 58, 106);
             Add_Goto (Table.States (85), 59, 107);
             Table.States (85).Kernel := To_Vector ((0 => (45, 6, 4, False)));
             Table.States (85).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 0)));
+            Table.States (86).Action_List.Set_Capacity (2);
             Add_Action (Table.States (86), 10, 108);
             Add_Action (Table.States (86), 37, 109);
-            Add_Error (Table.States (86));
             Table.States (86).Kernel := To_Vector (((42, 12, 3, False), (42, 
12, 5, False), (42, 12, 7, False), (42,
             12, 6, False)));
             Table.States (86).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 109)));
+            Table.States (87).Action_List.Set_Capacity (1);
             Add_Action (Table.States (87), 34, 110);
-            Add_Error (Table.States (87));
             Table.States (87).Kernel := To_Vector ((0 => (67, 16, 1, False)));
             Table.States (87).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 110)));
+            Table.States (88).Action_List.Set_Capacity (4);
             Add_Action (Table.States (88), 9, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (88), 13, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (88), 20, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (88), 37, 111);
-            Add_Error (Table.States (88));
+            Table.States (88).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (88), 58, 112);
             Table.States (88).Kernel := To_Vector (((61, 18, 3, False), (62, 
18, 4, False), (63, 18, 2, False)));
             Table.States (88).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 0)));
+            Table.States (89).Action_List.Set_Capacity (1);
             Add_Action (Table.States (89), 37, 113);
-            Add_Error (Table.States (89));
             Table.States (89).Kernel := To_Vector ((0 => (72, 23, 5, False)));
             Table.States (89).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 113)));
+            Table.States (90).Action_List.Set_Capacity (2);
             Add_Action (Table.States (90), 28, 114);
             Add_Action (Table.States (90), 29, 115);
-            Add_Error (Table.States (90));
             Table.States (90).Kernel := To_Vector (((67, 37, 2, False), (67, 
37, 4, False)));
             Table.States (90).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 29, 115)));
+            Table.States (91).Action_List.Set_Capacity (7);
             Add_Action (Table.States (91), (6, 8, 12, 16, 18, 23, 37), (67, 
2), 1, null, null);
             Table.States (91).Kernel := To_Vector ((0 => (67, 42, 0, False)));
             Table.States (91).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 67, 1)));
+            Table.States (92).Action_List.Set_Capacity (7);
             Add_Action (Table.States (92), (6, 8, 12, 16, 18, 23, 37), (67, 
3), 1, null, null);
             Table.States (92).Kernel := To_Vector ((0 => (67, 45, 0, False)));
             Table.States (92).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 67, 1)));
+            Table.States (93).Action_List.Set_Capacity (7);
             Add_Action (Table.States (93), (6, 8, 12, 16, 18, 23, 37), (52, 
0), 1, null, null);
             Table.States (93).Kernel := To_Vector ((0 => (52, 51, 0, False)));
             Table.States (93).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 52, 1)));
+            Table.States (94).Action_List.Set_Capacity (7);
             Add_Action (Table.States (94), 6, 85);
             Add_Action (Table.States (94), 8, Reduce, (53, 1), 1, null, null);
             Add_Action (Table.States (94), 12, 86);
@@ -693,7 +759,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (94), 18, 88);
             Add_Action (Table.States (94), 23, 89);
             Add_Action (Table.States (94), 37, 90);
-            Add_Error (Table.States (94));
+            Table.States (94).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (94), 42, 91);
             Add_Goto (Table.States (94), 45, 92);
             Add_Goto (Table.States (94), 51, 116);
@@ -705,35 +771,43 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (94), 72, 101);
             Table.States (94).Kernel := To_Vector (((52, 52, 2, True), (53, 
52, 0, False)));
             Table.States (94).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 53, 1)));
+            Table.States (95).Action_List.Set_Capacity (1);
             Add_Action (Table.States (95), 8, 117);
-            Add_Error (Table.States (95));
             Table.States (95).Kernel := To_Vector ((0 => (68, 53, 2, False)));
             Table.States (95).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 117)));
+            Table.States (96).Action_List.Set_Capacity (7);
             Add_Action (Table.States (96), (6, 8, 12, 16, 18, 23, 37), (51, 
2), 1, null, null);
             Table.States (96).Kernel := To_Vector ((0 => (51, 60, 0, False)));
             Table.States (96).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 51, 1)));
+            Table.States (97).Action_List.Set_Capacity (7);
             Add_Action (Table.States (97), (6, 8, 12, 16, 18, 23, 37), (60, 
0), 1, null, null);
             Table.States (97).Kernel := To_Vector ((0 => (60, 61, 0, False)));
             Table.States (97).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 60, 1)));
+            Table.States (98).Action_List.Set_Capacity (7);
             Add_Action (Table.States (98), (6, 8, 12, 16, 18, 23, 37), (60, 
1), 1, null, null);
             Table.States (98).Kernel := To_Vector ((0 => (60, 62, 0, False)));
             Table.States (98).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 60, 1)));
+            Table.States (99).Action_List.Set_Capacity (7);
             Add_Action (Table.States (99), (6, 8, 12, 16, 18, 23, 37), (60, 
2), 1, null, null);
             Table.States (99).Kernel := To_Vector ((0 => (60, 63, 0, False)));
             Table.States (99).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 60, 1)));
+            Table.States (100).Action_List.Set_Capacity (7);
             Add_Action (Table.States (100), (6, 8, 12, 16, 18, 23, 37), (51, 
0), 1, null, null);
             Table.States (100).Kernel := To_Vector ((0 => (51, 67, 0, False)));
             Table.States (100).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 51, 1)));
+            Table.States (101).Action_List.Set_Capacity (7);
             Add_Action (Table.States (101), (6, 8, 12, 16, 18, 23, 37), (51, 
1), 1, null, null);
             Table.States (101).Kernel := To_Vector ((0 => (51, 72, 0, False)));
             Table.States (101).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 51, 1)));
+            Table.States (102).Action_List.Set_Capacity (1);
             Add_Action (Table.States (102), 21, 118);
-            Add_Error (Table.States (102));
             Table.States (102).Kernel := To_Vector ((0 => (44, 38, 1, False)));
             Table.States (102).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 118)));
+            Table.States (103).Action_List.Set_Capacity (3);
             Add_Action (Table.States (103), (27, 30, 34), (44, 1), 6, null, 
null);
             Table.States (103).Kernel := To_Vector ((0 => (44, 21, 0, False)));
             Table.States (103).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 44, 6)));
+            Table.States (104).Action_List.Set_Capacity (7);
             Add_Action (Table.States (104), 6, 85);
             Add_Action (Table.States (104), 8, Reduce, (53, 0), 0, null, null);
             Add_Action (Table.States (104), 12, 86);
@@ -741,7 +815,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (104), 18, 88);
             Add_Action (Table.States (104), 23, 89);
             Add_Action (Table.States (104), 37, 90);
-            Add_Error (Table.States (104));
+            Table.States (104).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (104), 42, 91);
             Add_Goto (Table.States (104), 45, 92);
             Add_Goto (Table.States (104), 51, 93);
@@ -758,47 +832,52 @@ package body Gpr_Process_LR1_Main is
          end Subr_1;
          procedure Subr_2
          is begin
+            Table.States (105).Action_List.Set_Capacity (2);
             Add_Action (Table.States (105), (13, 31), (58, 1), 1, null, 
identifier_opt_1_check'Access);
             Table.States (105).Kernel := To_Vector ((0 => (58, 37, 0, False)));
             Table.States (105).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 1)));
+            Table.States (106).Action_List.Set_Capacity (2);
             Add_Action (Table.States (106), (13, 31), (59, 0), 1, null, null);
             Table.States (106).Kernel := To_Vector ((0 => (59, 58, 0, False)));
             Table.States (106).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 1)));
+            Table.States (107).Action_List.Set_Capacity (2);
             Add_Action (Table.States (107), 13, 120);
             Add_Action (Table.States (107), 31, 121);
-            Add_Error (Table.States (107));
             Table.States (107).Kernel := To_Vector (((45, 59, 4, False), (59, 
59, 2, True)));
             Table.States (107).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 120)));
+            Table.States (108).Action_List.Set_Capacity (1);
             Add_Action (Table.States (108), 14, 122);
-            Add_Error (Table.States (108));
             Table.States (108).Kernel := To_Vector ((0 => (42, 10, 5, False)));
             Table.States (108).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 122)));
+            Table.States (109).Action_List.Set_Capacity (2);
             Add_Action (Table.States (109), 14, 123);
             Add_Action (Table.States (109), 24, 124);
-            Add_Error (Table.States (109));
             Table.States (109).Kernel := To_Vector (((42, 37, 2, False), (42, 
37, 4, False), (42, 37, 6, False)));
             Table.States (109).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 124)));
+            Table.States (110).Action_List.Set_Capacity (7);
             Add_Action (Table.States (110), (6, 8, 12, 16, 18, 23, 37), (67, 
4), 2, simple_declarative_item_4'Access,
             null);
             Table.States (110).Kernel := To_Vector ((0 => (67, 34, 0, False)));
             Table.States (110).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 67, 2)));
+            Table.States (111).Action_List.Set_Capacity (3);
             Add_Action (Table.States (111), (9, 13, 20), (58, 1), 1, null, 
identifier_opt_1_check'Access);
             Table.States (111).Kernel := To_Vector ((0 => (58, 37, 0, False)));
             Table.States (111).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 1)));
+            Table.States (112).Action_List.Set_Capacity (3);
             Add_Action (Table.States (112), 9, 125);
             Add_Action (Table.States (112), 13, 126);
             Add_Action (Table.States (112), 20, 127);
-            Add_Error (Table.States (112));
             Table.States (112).Kernel := To_Vector (((61, 58, 3, False), (62, 
58, 4, False), (63, 58, 2, False)));
             Table.States (112).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 20, 127)));
+            Table.States (113).Action_List.Set_Capacity (1);
             Add_Action (Table.States (113), 13, 128);
-            Add_Error (Table.States (113));
             Table.States (113).Kernel := To_Vector ((0 => (72, 37, 4, False)));
             Table.States (113).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 128)));
+            Table.States (114).Action_List.Set_Capacity (1);
             Add_Action (Table.States (114), 37, 129);
-            Add_Error (Table.States (114));
             Table.States (114).Kernel := To_Vector ((0 => (67, 28, 3, False)));
             Table.States (114).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 129)));
+            Table.States (115).Action_List.Set_Capacity (10);
             Add_Action (Table.States (115), 10, 130);
             Add_Action (Table.States (115), 11, 131);
             Add_Action (Table.States (115), 14, 132);
@@ -809,7 +888,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (115), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (115), 37, 133);
             Add_Action (Table.States (115), 38, 134);
-            Add_Error (Table.States (115));
+            Table.States (115).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (115), 41, 135);
             Add_Goto (Table.States (115), 43, 136);
             Add_Goto (Table.States (115), 44, 137);
@@ -821,47 +900,53 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (115), 71, 143);
             Table.States (115).Kernel := To_Vector ((0 => (67, 29, 1, False)));
             Table.States (115).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 0)));
+            Table.States (116).Action_List.Set_Capacity (7);
             Add_Action (Table.States (116), (6, 8, 12, 16, 18, 23, 37), (52, 
1), 2, null, null);
             Table.States (116).Kernel := To_Vector ((0 => (52, 51, 0, True)));
             Table.States (116).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 52, 2)));
             Table.States (116).Minimal_Complete_Actions_Recursive := True;
+            Table.States (117).Action_List.Set_Capacity (2);
             Add_Action (Table.States (117), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (117), 37, 144);
-            Add_Error (Table.States (117));
+            Table.States (117).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (117), 58, 145);
             Table.States (117).Kernel := To_Vector ((0 => (68, 8, 1, False)));
             Table.States (117).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 0)));
+            Table.States (118).Action_List.Set_Capacity (3);
             Add_Action (Table.States (118), (21, 27, 30), (44, 1), 6, null, 
null);
             Table.States (118).Kernel := To_Vector ((0 => (44, 21, 0, False)));
             Table.States (118).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 44, 6)));
+            Table.States (119).Action_List.Set_Capacity (1);
             Add_Action (Table.States (119), 8, 146);
-            Add_Error (Table.States (119));
             Table.States (119).Kernel := To_Vector ((0 => (65, 53, 2, False)));
             Table.States (119).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 146)));
+            Table.States (120).Action_List.Set_Capacity (2);
             Add_Action (Table.States (120), 8, Reduce, (47, 0), 0, null, null);
             Add_Action (Table.States (120), 25, 147);
             Add_Conflict (Table.States (120), 25, (47, 0), 0, null, null);
-            Add_Error (Table.States (120));
+            Table.States (120).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (120), 46, 148);
             Add_Goto (Table.States (120), 47, 149);
             Table.States (120).Kernel := To_Vector ((0 => (45, 13, 3, False)));
             Table.States (120).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 47, 0)));
+            Table.States (121).Action_List.Set_Capacity (1);
             Add_Action (Table.States (121), 37, 150);
-            Add_Error (Table.States (121));
             Table.States (121).Kernel := To_Vector ((0 => (59, 31, 1, True)));
             Table.States (121).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 150)));
             Table.States (121).Minimal_Complete_Actions_Recursive := True;
+            Table.States (122).Action_List.Set_Capacity (1);
             Add_Action (Table.States (122), 38, 151);
-            Add_Error (Table.States (122));
             Table.States (122).Kernel := To_Vector ((0 => (42, 14, 4, False)));
             Table.States (122).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 151)));
+            Table.States (123).Action_List.Set_Capacity (3);
             Add_Action (Table.States (123), 17, 152);
             Add_Action (Table.States (123), 21, Reduce, (54, 0), 0, null, 
null);
             Add_Action (Table.States (123), 38, 153);
-            Add_Error (Table.States (123));
+            Table.States (123).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (123), 54, 154);
             Table.States (123).Kernel := To_Vector (((42, 14, 3, False), (42, 
14, 5, False)));
             Table.States (123).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 54, 0)));
+            Table.States (124).Action_List.Set_Capacity (10);
             Add_Action (Table.States (124), 10, 130);
             Add_Action (Table.States (124), 11, 131);
             Add_Action (Table.States (124), 14, 132);
@@ -872,7 +957,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (124), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (124), 37, 133);
             Add_Action (Table.States (124), 38, 134);
-            Add_Error (Table.States (124));
+            Table.States (124).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (124), 41, 135);
             Add_Goto (Table.States (124), 43, 136);
             Add_Goto (Table.States (124), 44, 137);
@@ -884,14 +969,16 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (124), 71, 143);
             Table.States (124).Kernel := To_Vector ((0 => (42, 24, 1, False)));
             Table.States (124).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 0)));
+            Table.States (125).Action_List.Set_Capacity (3);
             Add_Action (Table.States (125), 13, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (125), 31, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (125), 37, 105);
-            Add_Error (Table.States (125));
+            Table.States (125).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (125), 58, 106);
             Add_Goto (Table.States (125), 59, 156);
             Table.States (125).Kernel := To_Vector ((0 => (62, 9, 3, False)));
             Table.States (125).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 0)));
+            Table.States (126).Action_List.Set_Capacity (7);
             Add_Action (Table.States (126), 6, 85);
             Add_Action (Table.States (126), 8, Reduce, (53, 0), 0, null, null);
             Add_Action (Table.States (126), 12, 86);
@@ -899,7 +986,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (126), 18, 88);
             Add_Action (Table.States (126), 23, 89);
             Add_Action (Table.States (126), 37, 90);
-            Add_Error (Table.States (126));
+            Table.States (126).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (126), 42, 91);
             Add_Goto (Table.States (126), 45, 92);
             Add_Goto (Table.States (126), 51, 93);
@@ -913,33 +1000,38 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (126), 72, 101);
             Table.States (126).Kernel := To_Vector ((0 => (61, 13, 2, False)));
             Table.States (126).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 53, 0)));
+            Table.States (127).Action_List.Set_Capacity (3);
             Add_Action (Table.States (127), 31, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (127), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (127), 37, 158);
-            Add_Error (Table.States (127));
+            Table.States (127).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (127), 58, 159);
             Add_Goto (Table.States (127), 59, 160);
             Table.States (127).Kernel := To_Vector ((0 => (63, 20, 1, False)));
             Table.States (127).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 0)));
+            Table.States (128).Action_List.Set_Capacity (1);
             Add_Action (Table.States (128), 14, 161);
-            Add_Error (Table.States (128));
+            Table.States (128).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (128), 41, 162);
             Table.States (128).Kernel := To_Vector ((0 => (72, 13, 3, False)));
             Table.States (128).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 161)));
+            Table.States (129).Action_List.Set_Capacity (1);
             Add_Action (Table.States (129), 29, 163);
-            Add_Error (Table.States (129));
             Table.States (129).Kernel := To_Vector ((0 => (67, 37, 2, False)));
             Table.States (129).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 29, 163)));
+            Table.States (130).Action_List.Set_Capacity (1);
             Add_Action (Table.States (130), 14, 164);
-            Add_Error (Table.States (130));
+            Table.States (130).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (130), 41, 165);
             Table.States (130).Kernel := To_Vector ((0 => (57, 10, 2, False)));
             Table.States (130).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 164)));
+            Table.States (131).Action_List.Set_Capacity (1);
             Add_Action (Table.States (131), 14, 164);
-            Add_Error (Table.States (131));
+            Table.States (131).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (131), 41, 166);
             Table.States (131).Kernel := To_Vector ((0 => (57, 11, 2, False)));
             Table.States (131).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 164)));
+            Table.States (132).Action_List.Set_Capacity (11);
             Add_Action (Table.States (132), 10, 32);
             Add_Action (Table.States (132), 11, 33);
             Add_Action (Table.States (132), 14, 34);
@@ -952,7 +1044,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (132), 33, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (132), 37, 36);
             Add_Action (Table.States (132), 38, 37);
-            Add_Error (Table.States (132));
+            Table.States (132).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (132), 41, 38);
             Add_Goto (Table.States (132), 43, 39);
             Add_Goto (Table.States (132), 44, 40);
@@ -965,120 +1057,139 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (132), 71, 47);
             Table.States (132).Kernel := To_Vector (((41, 14, 1, False), (71, 
14, 1, False)));
             Table.States (132).Minimal_Complete_Actions := To_Vector 
(((Reduce, 70, 0), (Shift, 21, 167)));
+            Table.States (133).Action_List.Set_Capacity (4);
             Add_Action (Table.States (133), (27, 31, 33, 34), (58, 1), 1, 
null, identifier_opt_1_check'Access);
             Table.States (133).Kernel := To_Vector ((0 => (58, 37, 0, False)));
             Table.States (133).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 1)));
+            Table.States (134).Action_List.Set_Capacity (2);
             Add_Action (Table.States (134), (27, 34), (69, 0), 1, null, null);
             Table.States (134).Kernel := To_Vector ((0 => (69, 38, 0, False)));
             Table.States (134).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 69, 1)));
+            Table.States (135).Action_List.Set_Capacity (2);
             Add_Action (Table.States (135), (27, 34), (71, 2), 1, null, null);
             Table.States (135).Kernel := To_Vector ((0 => (71, 41, 0, False)));
             Table.States (135).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 1)));
+            Table.States (136).Action_List.Set_Capacity (1);
             Add_Action (Table.States (136), 33, 169);
-            Add_Error (Table.States (136));
             Table.States (136).Kernel := To_Vector (((44, 43, 2, False), (44, 
43, 5, False)));
             Table.States (136).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 33, 169)));
+            Table.States (137).Action_List.Set_Capacity (2);
             Add_Action (Table.States (137), (27, 34), (69, 3), 1, null, null);
             Table.States (137).Kernel := To_Vector ((0 => (69, 44, 0, False)));
             Table.States (137).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 69, 1)));
+            Table.States (138).Action_List.Set_Capacity (2);
             Add_Action (Table.States (138), 27, 170);
             Add_Action (Table.States (138), 34, 171);
-            Add_Error (Table.States (138));
             Table.States (138).Kernel := To_Vector (((56, 56, 1, True), (67, 
56, 1, False)));
             Table.States (138).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 171)));
+            Table.States (139).Action_List.Set_Capacity (2);
             Add_Action (Table.States (139), (27, 34), (69, 2), 1, null, null);
             Table.States (139).Kernel := To_Vector ((0 => (69, 57, 0, False)));
             Table.States (139).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 69, 1)));
+            Table.States (140).Action_List.Set_Capacity (4);
             Add_Action (Table.States (140), (27, 31, 33, 34), (59, 0), 1, 
null, null);
             Table.States (140).Kernel := To_Vector ((0 => (59, 58, 0, False)));
             Table.States (140).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 1)));
+            Table.States (141).Action_List.Set_Capacity (4);
             Add_Action (Table.States (141), 27, Reduce, (69, 1), 1, null, 
null);
             Add_Action (Table.States (141), 31, 172);
             Add_Action (Table.States (141), 33, Reduce, (43, 1), 1, null, 
null);
             Add_Action (Table.States (141), 34, Reduce, (69, 1), 1, null, 
null);
-            Add_Error (Table.States (141));
             Table.States (141).Kernel := To_Vector (((43, 59, 0, False), (59, 
59, 2, True), (69, 59, 0, False)));
             Table.States (141).Minimal_Complete_Actions := To_Vector 
(((Reduce, 43, 1), (Reduce, 69, 1)));
+            Table.States (142).Action_List.Set_Capacity (2);
             Add_Action (Table.States (142), (27, 34), (71, 0), 1, null, null);
             Table.States (142).Kernel := To_Vector ((0 => (71, 69, 0, False)));
             Table.States (142).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 1)));
+            Table.States (143).Action_List.Set_Capacity (2);
             Add_Action (Table.States (143), (27, 34), (56, 0), 1, null, null);
             Table.States (143).Kernel := To_Vector ((0 => (56, 71, 0, False)));
             Table.States (143).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 1)));
+            Table.States (144).Action_List.Set_Capacity (1);
             Add_Action (Table.States (144), (1 =>  34), (58, 1), 1, null, 
identifier_opt_1_check'Access);
             Table.States (144).Kernel := To_Vector ((0 => (58, 37, 0, False)));
             Table.States (144).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 1)));
+            Table.States (145).Action_List.Set_Capacity (1);
             Add_Action (Table.States (145), 34, 173);
-            Add_Error (Table.States (145));
             Table.States (145).Kernel := To_Vector ((0 => (68, 58, 1, False)));
             Table.States (145).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 173)));
+            Table.States (146).Action_List.Set_Capacity (2);
             Add_Action (Table.States (146), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (146), 37, 144);
-            Add_Error (Table.States (146));
+            Table.States (146).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (146), 58, 174);
             Table.States (146).Kernel := To_Vector ((0 => (65, 8, 1, False)));
             Table.States (146).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 0)));
+            Table.States (147).Action_List.Set_Capacity (4);
             Add_Action (Table.States (147), 17, 175);
             Add_Action (Table.States (147), 32, Reduce, (54, 0), 0, null, 
null);
             Add_Action (Table.States (147), 35, Reduce, (54, 0), 0, null, 
null);
             Add_Action (Table.States (147), 38, 176);
-            Add_Error (Table.States (147));
+            Table.States (147).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (147), 54, 177);
             Add_Goto (Table.States (147), 55, 178);
             Table.States (147).Kernel := To_Vector ((0 => (46, 25, 1, False)));
             Table.States (147).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 55, 0)));
+            Table.States (148).Action_List.Set_Capacity (2);
             Add_Action (Table.States (148), (8, 25), (47, 1), 1, null, null);
             Table.States (148).Kernel := To_Vector ((0 => (47, 46, 0, False)));
             Table.States (148).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 47, 1)));
+            Table.States (149).Action_List.Set_Capacity (2);
             Add_Action (Table.States (149), 8, 179);
             Add_Action (Table.States (149), 25, 147);
-            Add_Error (Table.States (149));
+            Table.States (149).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (149), 46, 180);
             Table.States (149).Kernel := To_Vector (((45, 47, 3, False), (47, 
47, 2, True)));
             Table.States (149).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 179)));
+            Table.States (150).Action_List.Set_Capacity (2);
             Add_Action (Table.States (150), (13, 31), (59, 1), 3, null, null);
             Table.States (150).Kernel := To_Vector ((0 => (59, 37, 0, True)));
             Table.States (150).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 3)));
             Table.States (150).Minimal_Complete_Actions_Recursive := True;
+            Table.States (151).Action_List.Set_Capacity (1);
             Add_Action (Table.States (151), 21, 181);
-            Add_Error (Table.States (151));
             Table.States (151).Kernel := To_Vector ((0 => (42, 38, 3, False)));
             Table.States (151).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 181)));
+            Table.States (152).Action_List.Set_Capacity (1);
             Add_Action (Table.States (152), (1 =>  21), (54, 2), 1, null, 
null);
             Table.States (152).Kernel := To_Vector ((0 => (54, 17, 0, False)));
             Table.States (152).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 54, 1)));
+            Table.States (153).Action_List.Set_Capacity (1);
             Add_Action (Table.States (153), (1 =>  21), (54, 1), 1, null, 
null);
             Table.States (153).Kernel := To_Vector ((0 => (54, 38, 0, False)));
             Table.States (153).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 54, 1)));
+            Table.States (154).Action_List.Set_Capacity (1);
             Add_Action (Table.States (154), 21, 182);
-            Add_Error (Table.States (154));
             Table.States (154).Kernel := To_Vector (((42, 54, 3, False), (42, 
54, 5, False)));
             Table.States (154).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 182)));
+            Table.States (155).Action_List.Set_Capacity (2);
             Add_Action (Table.States (155), 27, 170);
             Add_Action (Table.States (155), 34, 183);
-            Add_Error (Table.States (155));
             Table.States (155).Kernel := To_Vector (((42, 56, 1, False), (56, 
56, 1, True)));
             Table.States (155).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 183)));
+            Table.States (156).Action_List.Set_Capacity (2);
             Add_Action (Table.States (156), 13, 184);
             Add_Action (Table.States (156), 31, 121);
-            Add_Error (Table.States (156));
             Table.States (156).Kernel := To_Vector (((59, 59, 2, True), (62, 
59, 3, False)));
             Table.States (156).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 184)));
+            Table.States (157).Action_List.Set_Capacity (1);
             Add_Action (Table.States (157), 8, 185);
-            Add_Error (Table.States (157));
             Table.States (157).Kernel := To_Vector ((0 => (61, 53, 2, False)));
             Table.States (157).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 185)));
+            Table.States (158).Action_List.Set_Capacity (2);
             Add_Action (Table.States (158), (31, 34), (58, 1), 1, null, 
identifier_opt_1_check'Access);
             Table.States (158).Kernel := To_Vector ((0 => (58, 37, 0, False)));
             Table.States (158).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 1)));
+            Table.States (159).Action_List.Set_Capacity (2);
             Add_Action (Table.States (159), (31, 34), (59, 0), 1, null, null);
             Table.States (159).Kernel := To_Vector ((0 => (59, 58, 0, False)));
             Table.States (159).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 1)));
+            Table.States (160).Action_List.Set_Capacity (2);
             Add_Action (Table.States (160), 31, 186);
             Add_Action (Table.States (160), 34, 187);
-            Add_Error (Table.States (160));
             Table.States (160).Kernel := To_Vector (((59, 59, 2, True), (63, 
59, 1, False)));
             Table.States (160).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 187)));
+            Table.States (161).Action_List.Set_Capacity (11);
             Add_Action (Table.States (161), 10, 32);
             Add_Action (Table.States (161), 11, 33);
             Add_Action (Table.States (161), 14, 34);
@@ -1090,7 +1201,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (161), 33, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (161), 37, 36);
             Add_Action (Table.States (161), 38, 37);
-            Add_Error (Table.States (161));
+            Table.States (161).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (161), 41, 38);
             Add_Goto (Table.States (161), 43, 39);
             Add_Goto (Table.States (161), 44, 40);
@@ -1103,10 +1214,11 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (161), 71, 47);
             Table.States (161).Kernel := To_Vector ((0 => (41, 14, 1, False)));
             Table.States (161).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 70, 0)));
+            Table.States (162).Action_List.Set_Capacity (1);
             Add_Action (Table.States (162), 34, 189);
-            Add_Error (Table.States (162));
             Table.States (162).Kernel := To_Vector ((0 => (72, 41, 1, False)));
             Table.States (162).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 189)));
+            Table.States (163).Action_List.Set_Capacity (10);
             Add_Action (Table.States (163), 10, 130);
             Add_Action (Table.States (163), 11, 131);
             Add_Action (Table.States (163), 14, 132);
@@ -1117,7 +1229,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (163), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (163), 37, 133);
             Add_Action (Table.States (163), 38, 134);
-            Add_Error (Table.States (163));
+            Table.States (163).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (163), 41, 135);
             Add_Goto (Table.States (163), 43, 136);
             Add_Goto (Table.States (163), 44, 137);
@@ -1129,6 +1241,7 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (163), 71, 143);
             Table.States (163).Kernel := To_Vector ((0 => (67, 29, 1, False)));
             Table.States (163).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 0)));
+            Table.States (164).Action_List.Set_Capacity (11);
             Add_Action (Table.States (164), 10, 32);
             Add_Action (Table.States (164), 11, 33);
             Add_Action (Table.States (164), 14, 34);
@@ -1140,7 +1253,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (164), 33, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (164), 37, 36);
             Add_Action (Table.States (164), 38, 37);
-            Add_Error (Table.States (164));
+            Table.States (164).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (164), 41, 38);
             Add_Goto (Table.States (164), 43, 39);
             Add_Goto (Table.States (164), 44, 40);
@@ -1153,24 +1266,28 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (164), 71, 47);
             Table.States (164).Kernel := To_Vector ((0 => (41, 14, 1, False)));
             Table.States (164).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 70, 0)));
+            Table.States (165).Action_List.Set_Capacity (2);
             Add_Action (Table.States (165), (27, 34), (57, 0), 2, null, null);
             Table.States (165).Kernel := To_Vector ((0 => (57, 41, 0, False)));
             Table.States (165).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 57, 2)));
+            Table.States (166).Action_List.Set_Capacity (2);
             Add_Action (Table.States (166), (27, 34), (57, 1), 2, null, null);
             Table.States (166).Kernel := To_Vector ((0 => (57, 41, 0, False)));
             Table.States (166).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 57, 2)));
+            Table.States (167).Action_List.Set_Capacity (2);
             Add_Action (Table.States (167), (27, 34), (71, 1), 2, null, null);
             Table.States (167).Kernel := To_Vector ((0 => (71, 21, 0, False)));
             Table.States (167).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 2)));
+            Table.States (168).Action_List.Set_Capacity (2);
             Add_Action (Table.States (168), 21, 191);
             Add_Action (Table.States (168), 30, 67);
-            Add_Error (Table.States (168));
             Table.States (168).Kernel := To_Vector (((41, 70, 1, False), (70, 
70, 1, True)));
             Table.States (168).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 191)));
+            Table.States (169).Action_List.Set_Capacity (1);
             Add_Action (Table.States (169), 37, 192);
-            Add_Error (Table.States (169));
             Table.States (169).Kernel := To_Vector (((44, 33, 1, False), (44, 
33, 4, False)));
             Table.States (169).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 192)));
+            Table.States (170).Action_List.Set_Capacity (10);
             Add_Action (Table.States (170), 10, 130);
             Add_Action (Table.States (170), 11, 131);
             Add_Action (Table.States (170), 14, 132);
@@ -1181,7 +1298,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (170), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (170), 37, 133);
             Add_Action (Table.States (170), 38, 134);
-            Add_Error (Table.States (170));
+            Table.States (170).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (170), 41, 135);
             Add_Goto (Table.States (170), 43, 136);
             Add_Goto (Table.States (170), 44, 137);
@@ -1193,57 +1310,65 @@ package body Gpr_Process_LR1_Main is
             Table.States (170).Kernel := To_Vector ((0 => (56, 27, 0, True)));
             Table.States (170).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 0)));
             Table.States (170).Minimal_Complete_Actions_Recursive := True;
+            Table.States (171).Action_List.Set_Capacity (7);
             Add_Action (Table.States (171), (6, 8, 12, 16, 18, 23, 37), (67, 
0), 4, simple_declarative_item_0'Access,
             null);
             Table.States (171).Kernel := To_Vector ((0 => (67, 34, 0, False)));
             Table.States (171).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 67, 4)));
+            Table.States (172).Action_List.Set_Capacity (1);
             Add_Action (Table.States (172), 37, 194);
-            Add_Error (Table.States (172));
             Table.States (172).Kernel := To_Vector ((0 => (59, 31, 1, True)));
             Table.States (172).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 194)));
             Table.States (172).Minimal_Complete_Actions_Recursive := True;
+            Table.States (173).Action_List.Set_Capacity (1);
             Add_Action (Table.States (173), (1 =>  39), (68, 0), 7, 
simple_project_declaration_0'Access,
             simple_project_declaration_0_check'Access);
             Table.States (173).Kernel := To_Vector ((0 => (68, 34, 0, False)));
             Table.States (173).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 68, 7)));
+            Table.States (174).Action_List.Set_Capacity (1);
             Add_Action (Table.States (174), 34, 195);
-            Add_Error (Table.States (174));
             Table.States (174).Kernel := To_Vector ((0 => (65, 58, 1, False)));
             Table.States (174).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 195)));
+            Table.States (175).Action_List.Set_Capacity (2);
             Add_Action (Table.States (175), (32, 35), (54, 2), 1, null, null);
             Table.States (175).Kernel := To_Vector ((0 => (54, 17, 0, False)));
             Table.States (175).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 54, 1)));
+            Table.States (176).Action_List.Set_Capacity (2);
             Add_Action (Table.States (176), (32, 35), (54, 1), 1, null, null);
             Table.States (176).Kernel := To_Vector ((0 => (54, 38, 0, False)));
             Table.States (176).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 54, 1)));
+            Table.States (177).Action_List.Set_Capacity (2);
             Add_Action (Table.States (177), (32, 35), (55, 0), 1, null, null);
             Table.States (177).Kernel := To_Vector ((0 => (55, 54, 0, False)));
             Table.States (177).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 55, 1)));
+            Table.States (178).Action_List.Set_Capacity (2);
             Add_Action (Table.States (178), 32, 196);
             Add_Action (Table.States (178), 35, 197);
-            Add_Error (Table.States (178));
             Table.States (178).Kernel := To_Vector (((46, 55, 1, False), (55, 
55, 1, True)));
             Table.States (178).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 32, 196)));
+            Table.States (179).Action_List.Set_Capacity (1);
             Add_Action (Table.States (179), 6, 198);
-            Add_Error (Table.States (179));
             Table.States (179).Kernel := To_Vector ((0 => (45, 8, 2, False)));
             Table.States (179).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 6, 198)));
+            Table.States (180).Action_List.Set_Capacity (2);
             Add_Action (Table.States (180), (8, 25), (47, 2), 2, null, null);
             Table.States (180).Kernel := To_Vector ((0 => (47, 46, 0, True)));
             Table.States (180).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 47, 2)));
             Table.States (180).Minimal_Complete_Actions_Recursive := True;
+            Table.States (181).Action_List.Set_Capacity (1);
             Add_Action (Table.States (181), 24, 199);
-            Add_Error (Table.States (181));
             Table.States (181).Kernel := To_Vector ((0 => (42, 21, 2, False)));
             Table.States (181).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 199)));
+            Table.States (182).Action_List.Set_Capacity (1);
             Add_Action (Table.States (182), 24, 200);
-            Add_Error (Table.States (182));
             Table.States (182).Kernel := To_Vector (((42, 21, 2, False), (42, 
21, 4, False)));
             Table.States (182).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 200)));
+            Table.States (183).Action_List.Set_Capacity (7);
             Add_Action (Table.States (183), (6, 8, 12, 16, 18, 23, 37), (42, 
0), 5, attribute_declaration_0'Access,
             null);
             Table.States (183).Kernel := To_Vector ((0 => (42, 34, 0, False)));
             Table.States (183).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 42, 5)));
+            Table.States (184).Action_List.Set_Capacity (7);
             Add_Action (Table.States (184), 6, 85);
             Add_Action (Table.States (184), 8, Reduce, (53, 0), 0, null, null);
             Add_Action (Table.States (184), 12, 86);
@@ -1251,7 +1376,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (184), 18, 88);
             Add_Action (Table.States (184), 23, 89);
             Add_Action (Table.States (184), 37, 90);
-            Add_Error (Table.States (184));
+            Table.States (184).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (184), 42, 91);
             Add_Goto (Table.States (184), 45, 92);
             Add_Goto (Table.States (184), 51, 93);
@@ -1265,55 +1390,63 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (184), 72, 101);
             Table.States (184).Kernel := To_Vector ((0 => (62, 13, 2, False)));
             Table.States (184).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 53, 0)));
+            Table.States (185).Action_List.Set_Capacity (2);
             Add_Action (Table.States (185), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (185), 37, 144);
-            Add_Error (Table.States (185));
+            Table.States (185).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (185), 58, 202);
             Table.States (185).Kernel := To_Vector ((0 => (61, 8, 1, False)));
             Table.States (185).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 0)));
+            Table.States (186).Action_List.Set_Capacity (1);
             Add_Action (Table.States (186), 37, 203);
-            Add_Error (Table.States (186));
             Table.States (186).Kernel := To_Vector ((0 => (59, 31, 1, True)));
             Table.States (186).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 203)));
             Table.States (186).Minimal_Complete_Actions_Recursive := True;
+            Table.States (187).Action_List.Set_Capacity (7);
             Add_Action (Table.States (187), (6, 8, 12, 16, 18, 23, 37), (63, 
0), 5, package_renaming_0'Access, null);
             Table.States (187).Kernel := To_Vector ((0 => (63, 34, 0, False)));
             Table.States (187).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 63, 5)));
+            Table.States (188).Action_List.Set_Capacity (2);
             Add_Action (Table.States (188), 21, 204);
             Add_Action (Table.States (188), 30, 67);
-            Add_Error (Table.States (188));
             Table.States (188).Kernel := To_Vector (((41, 70, 1, False), (70, 
70, 1, True)));
             Table.States (188).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 204)));
+            Table.States (189).Action_List.Set_Capacity (7);
             Add_Action (Table.States (189), (6, 8, 12, 16, 18, 23, 37), (72, 
0), 5, typed_string_declaration_0'Access,
             null);
             Table.States (189).Kernel := To_Vector ((0 => (72, 34, 0, False)));
             Table.States (189).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 72, 5)));
+            Table.States (190).Action_List.Set_Capacity (2);
             Add_Action (Table.States (190), 27, 170);
             Add_Action (Table.States (190), 34, 205);
-            Add_Error (Table.States (190));
             Table.States (190).Kernel := To_Vector (((56, 56, 1, True), (67, 
56, 1, False)));
             Table.States (190).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 205)));
+            Table.States (191).Action_List.Set_Capacity (2);
             Add_Action (Table.States (191), (27, 34), (41, 0), 3, 
aggregate_g_0'Access, null);
             Table.States (191).Kernel := To_Vector ((0 => (41, 21, 0, False)));
             Table.States (191).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 41, 3)));
+            Table.States (192).Action_List.Set_Capacity (3);
             Add_Action (Table.States (192), 14, 206);
             Add_Action (Table.States (192), 27, Reduce, (44, 0), 3, null, 
null);
             Add_Action (Table.States (192), 34, Reduce, (44, 0), 3, null, 
null);
-            Add_Error (Table.States (192));
             Table.States (192).Kernel := To_Vector (((44, 37, 0, False), (44, 
37, 3, False)));
             Table.States (192).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 44, 3)));
+            Table.States (193).Action_List.Set_Capacity (2);
             Add_Action (Table.States (193), (27, 34), (56, 1), 3, null, null);
             Table.States (193).Kernel := To_Vector ((0 => (56, 71, 0, True)));
             Table.States (193).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 3)));
             Table.States (193).Minimal_Complete_Actions_Recursive := True;
+            Table.States (194).Action_List.Set_Capacity (4);
             Add_Action (Table.States (194), (27, 31, 33, 34), (59, 1), 3, 
null, null);
             Table.States (194).Kernel := To_Vector ((0 => (59, 37, 0, True)));
             Table.States (194).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 3)));
             Table.States (194).Minimal_Complete_Actions_Recursive := True;
+            Table.States (195).Action_List.Set_Capacity (1);
             Add_Action (Table.States (195), (1 =>  39), (65, 0), 9, 
project_extension_0'Access,
             project_extension_0_check'Access);
             Table.States (195).Kernel := To_Vector ((0 => (65, 34, 0, False)));
             Table.States (195).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 65, 9)));
+            Table.States (196).Action_List.Set_Capacity (8);
             Add_Action (Table.States (196), 6, 207);
             Add_Action (Table.States (196), 8, Reduce, (53, 0), 0, null, null);
             Add_Action (Table.States (196), 12, 208);
@@ -1322,7 +1455,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (196), 23, 211);
             Add_Action (Table.States (196), 25, Reduce, (53, 0), 0, null, 
null);
             Add_Action (Table.States (196), 37, 212);
-            Add_Error (Table.States (196));
+            Table.States (196).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (196), 42, 213);
             Add_Goto (Table.States (196), 45, 214);
             Add_Goto (Table.States (196), 51, 215);
@@ -1336,19 +1469,21 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (196), 72, 223);
             Table.States (196).Kernel := To_Vector ((0 => (46, 32, 0, False)));
             Table.States (196).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 53, 0)));
+            Table.States (197).Action_List.Set_Capacity (4);
             Add_Action (Table.States (197), 17, 175);
             Add_Action (Table.States (197), 32, Reduce, (54, 0), 0, null, 
null);
             Add_Action (Table.States (197), 35, Reduce, (54, 0), 0, null, 
null);
             Add_Action (Table.States (197), 38, 176);
-            Add_Error (Table.States (197));
+            Table.States (197).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (197), 54, 224);
             Table.States (197).Kernel := To_Vector ((0 => (55, 35, 0, True)));
             Table.States (197).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 54, 0)));
             Table.States (197).Minimal_Complete_Actions_Recursive := True;
+            Table.States (198).Action_List.Set_Capacity (1);
             Add_Action (Table.States (198), 34, 225);
-            Add_Error (Table.States (198));
             Table.States (198).Kernel := To_Vector ((0 => (45, 6, 1, False)));
             Table.States (198).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 225)));
+            Table.States (199).Action_List.Set_Capacity (10);
             Add_Action (Table.States (199), 10, 130);
             Add_Action (Table.States (199), 11, 131);
             Add_Action (Table.States (199), 14, 132);
@@ -1359,7 +1494,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (199), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (199), 37, 133);
             Add_Action (Table.States (199), 38, 134);
-            Add_Error (Table.States (199));
+            Table.States (199).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (199), 41, 135);
             Add_Goto (Table.States (199), 43, 136);
             Add_Goto (Table.States (199), 44, 137);
@@ -1371,6 +1506,7 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (199), 71, 143);
             Table.States (199).Kernel := To_Vector ((0 => (42, 24, 1, False)));
             Table.States (199).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 0)));
+            Table.States (200).Action_List.Set_Capacity (11);
             Add_Action (Table.States (200), 4, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (200), 10, 227);
             Add_Action (Table.States (200), 11, 228);
@@ -1382,7 +1518,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (200), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (200), 37, 230);
             Add_Action (Table.States (200), 38, 231);
-            Add_Error (Table.States (200));
+            Table.States (200).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (200), 41, 232);
             Add_Goto (Table.States (200), 43, 233);
             Add_Goto (Table.States (200), 44, 234);
@@ -1394,76 +1530,85 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (200), 71, 240);
             Table.States (200).Kernel := To_Vector (((42, 24, 1, False), (42, 
24, 3, False)));
             Table.States (200).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 0)));
+            Table.States (201).Action_List.Set_Capacity (1);
             Add_Action (Table.States (201), 8, 241);
-            Add_Error (Table.States (201));
             Table.States (201).Kernel := To_Vector ((0 => (62, 53, 2, False)));
             Table.States (201).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 241)));
+            Table.States (202).Action_List.Set_Capacity (1);
             Add_Action (Table.States (202), 34, 242);
-            Add_Error (Table.States (202));
             Table.States (202).Kernel := To_Vector ((0 => (61, 58, 1, False)));
             Table.States (202).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 242)));
+            Table.States (203).Action_List.Set_Capacity (2);
             Add_Action (Table.States (203), (31, 34), (59, 1), 3, null, null);
             Table.States (203).Kernel := To_Vector ((0 => (59, 37, 0, True)));
             Table.States (203).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 3)));
             Table.States (203).Minimal_Complete_Actions_Recursive := True;
+            Table.States (204).Action_List.Set_Capacity (1);
             Add_Action (Table.States (204), (1 =>  34), (41, 0), 3, 
aggregate_g_0'Access, null);
             Table.States (204).Kernel := To_Vector ((0 => (41, 21, 0, False)));
             Table.States (204).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 41, 3)));
+            Table.States (205).Action_List.Set_Capacity (7);
             Add_Action (Table.States (205), (6, 8, 12, 16, 18, 23, 37), (67, 
1), 6, simple_declarative_item_1'Access,
             null);
             Table.States (205).Kernel := To_Vector ((0 => (67, 34, 0, False)));
             Table.States (205).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 67, 6)));
+            Table.States (206).Action_List.Set_Capacity (1);
             Add_Action (Table.States (206), 38, 243);
-            Add_Error (Table.States (206));
             Table.States (206).Kernel := To_Vector ((0 => (44, 14, 2, False)));
             Table.States (206).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 243)));
+            Table.States (207).Action_List.Set_Capacity (3);
             Add_Action (Table.States (207), 13, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (207), 31, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (207), 37, 105);
-            Add_Error (Table.States (207));
+            Table.States (207).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (207), 58, 106);
             Add_Goto (Table.States (207), 59, 244);
             Table.States (207).Kernel := To_Vector ((0 => (45, 6, 4, False)));
             Table.States (207).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 0)));
+            Table.States (208).Action_List.Set_Capacity (2);
             Add_Action (Table.States (208), 10, 245);
             Add_Action (Table.States (208), 37, 246);
-            Add_Error (Table.States (208));
             Table.States (208).Kernel := To_Vector (((42, 12, 3, False), (42, 
12, 5, False), (42, 12, 7, False), (42,
             12, 6, False)));
             Table.States (208).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 246)));
+            Table.States (209).Action_List.Set_Capacity (1);
             Add_Action (Table.States (209), 34, 247);
-            Add_Error (Table.States (209));
             Table.States (209).Kernel := To_Vector ((0 => (67, 16, 1, False)));
             Table.States (209).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 247)));
+            Table.States (210).Action_List.Set_Capacity (4);
             Add_Action (Table.States (210), 9, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (210), 13, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (210), 20, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (210), 37, 111);
-            Add_Error (Table.States (210));
+            Table.States (210).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (210), 58, 248);
             Table.States (210).Kernel := To_Vector (((61, 18, 3, False), (62, 
18, 4, False), (63, 18, 2, False)));
             Table.States (210).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 0)));
          end Subr_2;
          procedure Subr_3
          is begin
+            Table.States (211).Action_List.Set_Capacity (1);
             Add_Action (Table.States (211), 37, 249);
-            Add_Error (Table.States (211));
             Table.States (211).Kernel := To_Vector ((0 => (72, 23, 5, False)));
             Table.States (211).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 249)));
+            Table.States (212).Action_List.Set_Capacity (2);
             Add_Action (Table.States (212), 28, 250);
             Add_Action (Table.States (212), 29, 251);
-            Add_Error (Table.States (212));
             Table.States (212).Kernel := To_Vector (((67, 37, 2, False), (67, 
37, 4, False)));
             Table.States (212).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 29, 251)));
+            Table.States (213).Action_List.Set_Capacity (8);
             Add_Action (Table.States (213), (6, 8, 12, 16, 18, 23, 25, 37), 
(67, 2), 1, null, null);
             Table.States (213).Kernel := To_Vector ((0 => (67, 42, 0, False)));
             Table.States (213).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 67, 1)));
+            Table.States (214).Action_List.Set_Capacity (8);
             Add_Action (Table.States (214), (6, 8, 12, 16, 18, 23, 25, 37), 
(67, 3), 1, null, null);
             Table.States (214).Kernel := To_Vector ((0 => (67, 45, 0, False)));
             Table.States (214).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 67, 1)));
+            Table.States (215).Action_List.Set_Capacity (8);
             Add_Action (Table.States (215), (6, 8, 12, 16, 18, 23, 25, 37), 
(52, 0), 1, null, null);
             Table.States (215).Kernel := To_Vector ((0 => (52, 51, 0, False)));
             Table.States (215).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 52, 1)));
+            Table.States (216).Action_List.Set_Capacity (8);
             Add_Action (Table.States (216), 6, 207);
             Add_Action (Table.States (216), 8, Reduce, (53, 1), 1, null, null);
             Add_Action (Table.States (216), 12, 208);
@@ -1472,7 +1617,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (216), 23, 211);
             Add_Action (Table.States (216), 25, Reduce, (53, 1), 1, null, 
null);
             Add_Action (Table.States (216), 37, 212);
-            Add_Error (Table.States (216));
+            Table.States (216).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (216), 42, 213);
             Add_Goto (Table.States (216), 45, 214);
             Add_Goto (Table.States (216), 51, 252);
@@ -1484,49 +1629,61 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (216), 72, 223);
             Table.States (216).Kernel := To_Vector (((52, 52, 2, True), (53, 
52, 0, False)));
             Table.States (216).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 53, 1)));
+            Table.States (217).Action_List.Set_Capacity (2);
             Add_Action (Table.States (217), (8, 25), (46, 0), 4, 
case_item_0'Access, null);
             Table.States (217).Kernel := To_Vector ((0 => (46, 53, 0, False)));
             Table.States (217).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 46, 4)));
+            Table.States (218).Action_List.Set_Capacity (8);
             Add_Action (Table.States (218), (6, 8, 12, 16, 18, 23, 25, 37), 
(51, 2), 1, null, null);
             Table.States (218).Kernel := To_Vector ((0 => (51, 60, 0, False)));
             Table.States (218).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 51, 1)));
+            Table.States (219).Action_List.Set_Capacity (8);
             Add_Action (Table.States (219), (6, 8, 12, 16, 18, 23, 25, 37), 
(60, 0), 1, null, null);
             Table.States (219).Kernel := To_Vector ((0 => (60, 61, 0, False)));
             Table.States (219).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 60, 1)));
+            Table.States (220).Action_List.Set_Capacity (8);
             Add_Action (Table.States (220), (6, 8, 12, 16, 18, 23, 25, 37), 
(60, 1), 1, null, null);
             Table.States (220).Kernel := To_Vector ((0 => (60, 62, 0, False)));
             Table.States (220).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 60, 1)));
+            Table.States (221).Action_List.Set_Capacity (8);
             Add_Action (Table.States (221), (6, 8, 12, 16, 18, 23, 25, 37), 
(60, 2), 1, null, null);
             Table.States (221).Kernel := To_Vector ((0 => (60, 63, 0, False)));
             Table.States (221).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 60, 1)));
+            Table.States (222).Action_List.Set_Capacity (8);
             Add_Action (Table.States (222), (6, 8, 12, 16, 18, 23, 25, 37), 
(51, 0), 1, null, null);
             Table.States (222).Kernel := To_Vector ((0 => (51, 67, 0, False)));
             Table.States (222).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 51, 1)));
+            Table.States (223).Action_List.Set_Capacity (8);
             Add_Action (Table.States (223), (6, 8, 12, 16, 18, 23, 25, 37), 
(51, 1), 1, null, null);
             Table.States (223).Kernel := To_Vector ((0 => (51, 72, 0, False)));
             Table.States (223).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 51, 1)));
+            Table.States (224).Action_List.Set_Capacity (2);
             Add_Action (Table.States (224), (32, 35), (55, 1), 3, null, null);
             Table.States (224).Kernel := To_Vector ((0 => (55, 54, 0, True)));
             Table.States (224).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 55, 3)));
             Table.States (224).Minimal_Complete_Actions_Recursive := True;
+            Table.States (225).Action_List.Set_Capacity (7);
             Add_Action (Table.States (225), (6, 8, 12, 16, 18, 23, 37), (45, 
0), 7, case_statement_0'Access, null);
             Table.States (225).Kernel := To_Vector ((0 => (45, 34, 0, False)));
             Table.States (225).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 45, 7)));
+            Table.States (226).Action_List.Set_Capacity (2);
             Add_Action (Table.States (226), 27, 170);
             Add_Action (Table.States (226), 34, 253);
-            Add_Error (Table.States (226));
             Table.States (226).Kernel := To_Vector (((42, 56, 1, False), (56, 
56, 1, True)));
             Table.States (226).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 253)));
+            Table.States (227).Action_List.Set_Capacity (1);
             Add_Action (Table.States (227), 14, 254);
-            Add_Error (Table.States (227));
+            Table.States (227).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (227), 41, 255);
             Table.States (227).Kernel := To_Vector ((0 => (57, 10, 2, False)));
             Table.States (227).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 254)));
+            Table.States (228).Action_List.Set_Capacity (1);
             Add_Action (Table.States (228), 14, 254);
-            Add_Error (Table.States (228));
+            Table.States (228).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (228), 41, 256);
             Table.States (228).Kernel := To_Vector ((0 => (57, 11, 2, False)));
             Table.States (228).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 254)));
+            Table.States (229).Action_List.Set_Capacity (11);
             Add_Action (Table.States (229), 10, 32);
             Add_Action (Table.States (229), 11, 33);
             Add_Action (Table.States (229), 14, 34);
@@ -1539,7 +1696,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (229), 33, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (229), 37, 36);
             Add_Action (Table.States (229), 38, 37);
-            Add_Error (Table.States (229));
+            Table.States (229).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (229), 41, 38);
             Add_Goto (Table.States (229), 43, 39);
             Add_Goto (Table.States (229), 44, 40);
@@ -1552,94 +1709,106 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (229), 71, 47);
             Table.States (229).Kernel := To_Vector (((41, 14, 1, False), (71, 
14, 1, False)));
             Table.States (229).Minimal_Complete_Actions := To_Vector 
(((Reduce, 70, 0), (Shift, 21, 257)));
+            Table.States (230).Action_List.Set_Capacity (5);
             Add_Action (Table.States (230), (4, 27, 31, 33, 34), (58, 1), 1, 
null, identifier_opt_1_check'Access);
             Table.States (230).Kernel := To_Vector ((0 => (58, 37, 0, False)));
             Table.States (230).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 1)));
+            Table.States (231).Action_List.Set_Capacity (3);
             Add_Action (Table.States (231), (4, 27, 34), (69, 0), 1, null, 
null);
             Table.States (231).Kernel := To_Vector ((0 => (69, 38, 0, False)));
             Table.States (231).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 69, 1)));
+            Table.States (232).Action_List.Set_Capacity (3);
             Add_Action (Table.States (232), (4, 27, 34), (71, 2), 1, null, 
null);
             Table.States (232).Kernel := To_Vector ((0 => (71, 41, 0, False)));
             Table.States (232).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 1)));
+            Table.States (233).Action_List.Set_Capacity (1);
             Add_Action (Table.States (233), 33, 259);
-            Add_Error (Table.States (233));
             Table.States (233).Kernel := To_Vector (((44, 43, 2, False), (44, 
43, 5, False)));
             Table.States (233).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 33, 259)));
+            Table.States (234).Action_List.Set_Capacity (3);
             Add_Action (Table.States (234), (4, 27, 34), (69, 3), 1, null, 
null);
             Table.States (234).Kernel := To_Vector ((0 => (69, 44, 0, False)));
             Table.States (234).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 69, 1)));
+            Table.States (235).Action_List.Set_Capacity (3);
             Add_Action (Table.States (235), 4, 260);
             Add_Action (Table.States (235), 27, 261);
             Add_Action (Table.States (235), 34, 262);
-            Add_Error (Table.States (235));
             Table.States (235).Kernel := To_Vector (((42, 56, 1, False), (42, 
56, 3, False), (56, 56, 1, True)));
             Table.States (235).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 262)));
+            Table.States (236).Action_List.Set_Capacity (3);
             Add_Action (Table.States (236), (4, 27, 34), (69, 2), 1, null, 
null);
             Table.States (236).Kernel := To_Vector ((0 => (69, 57, 0, False)));
             Table.States (236).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 69, 1)));
+            Table.States (237).Action_List.Set_Capacity (5);
             Add_Action (Table.States (237), (4, 27, 31, 33, 34), (59, 0), 1, 
null, null);
             Table.States (237).Kernel := To_Vector ((0 => (59, 58, 0, False)));
             Table.States (237).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 1)));
+            Table.States (238).Action_List.Set_Capacity (5);
             Add_Action (Table.States (238), 4, Reduce, (69, 1), 1, null, null);
             Add_Action (Table.States (238), 27, Reduce, (69, 1), 1, null, 
null);
             Add_Action (Table.States (238), 31, 263);
             Add_Action (Table.States (238), 33, Reduce, (43, 1), 1, null, 
null);
             Add_Action (Table.States (238), 34, Reduce, (69, 1), 1, null, 
null);
-            Add_Error (Table.States (238));
             Table.States (238).Kernel := To_Vector (((43, 59, 0, False), (59, 
59, 2, True), (69, 59, 0, False)));
             Table.States (238).Minimal_Complete_Actions := To_Vector 
(((Reduce, 43, 1), (Reduce, 69, 1)));
+            Table.States (239).Action_List.Set_Capacity (3);
             Add_Action (Table.States (239), (4, 27, 34), (71, 0), 1, null, 
null);
             Table.States (239).Kernel := To_Vector ((0 => (71, 69, 0, False)));
             Table.States (239).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 1)));
+            Table.States (240).Action_List.Set_Capacity (3);
             Add_Action (Table.States (240), (4, 27, 34), (56, 0), 1, null, 
null);
             Table.States (240).Kernel := To_Vector ((0 => (56, 71, 0, False)));
             Table.States (240).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 1)));
+            Table.States (241).Action_List.Set_Capacity (2);
             Add_Action (Table.States (241), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (241), 37, 144);
-            Add_Error (Table.States (241));
+            Table.States (241).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (241), 58, 264);
             Table.States (241).Kernel := To_Vector ((0 => (62, 8, 1, False)));
             Table.States (241).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 0)));
+            Table.States (242).Action_List.Set_Capacity (7);
             Add_Action (Table.States (242), (6, 8, 12, 16, 18, 23, 37), (61, 
0), 7, package_spec_0'Access,
             package_spec_0_check'Access);
             Table.States (242).Kernel := To_Vector ((0 => (61, 34, 0, False)));
             Table.States (242).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 61, 7)));
+            Table.States (243).Action_List.Set_Capacity (1);
             Add_Action (Table.States (243), 21, 265);
-            Add_Error (Table.States (243));
             Table.States (243).Kernel := To_Vector ((0 => (44, 38, 1, False)));
             Table.States (243).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 265)));
+            Table.States (244).Action_List.Set_Capacity (2);
             Add_Action (Table.States (244), 13, 266);
             Add_Action (Table.States (244), 31, 121);
-            Add_Error (Table.States (244));
             Table.States (244).Kernel := To_Vector (((45, 59, 4, False), (59, 
59, 2, True)));
             Table.States (244).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 266)));
+            Table.States (245).Action_List.Set_Capacity (1);
             Add_Action (Table.States (245), 14, 267);
-            Add_Error (Table.States (245));
             Table.States (245).Kernel := To_Vector ((0 => (42, 10, 5, False)));
             Table.States (245).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 267)));
+            Table.States (246).Action_List.Set_Capacity (2);
             Add_Action (Table.States (246), 14, 268);
             Add_Action (Table.States (246), 24, 269);
-            Add_Error (Table.States (246));
             Table.States (246).Kernel := To_Vector (((42, 37, 2, False), (42, 
37, 4, False), (42, 37, 6, False)));
             Table.States (246).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 269)));
+            Table.States (247).Action_List.Set_Capacity (8);
             Add_Action (Table.States (247), (6, 8, 12, 16, 18, 23, 25, 37), 
(67, 4), 2,
             simple_declarative_item_4'Access, null);
             Table.States (247).Kernel := To_Vector ((0 => (67, 34, 0, False)));
             Table.States (247).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 67, 2)));
+            Table.States (248).Action_List.Set_Capacity (3);
             Add_Action (Table.States (248), 9, 270);
             Add_Action (Table.States (248), 13, 271);
             Add_Action (Table.States (248), 20, 272);
-            Add_Error (Table.States (248));
             Table.States (248).Kernel := To_Vector (((61, 58, 3, False), (62, 
58, 4, False), (63, 58, 2, False)));
             Table.States (248).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 20, 272)));
+            Table.States (249).Action_List.Set_Capacity (1);
             Add_Action (Table.States (249), 13, 273);
-            Add_Error (Table.States (249));
             Table.States (249).Kernel := To_Vector ((0 => (72, 37, 4, False)));
             Table.States (249).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 273)));
+            Table.States (250).Action_List.Set_Capacity (1);
             Add_Action (Table.States (250), 37, 274);
-            Add_Error (Table.States (250));
             Table.States (250).Kernel := To_Vector ((0 => (67, 28, 3, False)));
             Table.States (250).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 274)));
+            Table.States (251).Action_List.Set_Capacity (10);
             Add_Action (Table.States (251), 10, 130);
             Add_Action (Table.States (251), 11, 131);
             Add_Action (Table.States (251), 14, 132);
@@ -1650,7 +1819,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (251), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (251), 37, 133);
             Add_Action (Table.States (251), 38, 134);
-            Add_Error (Table.States (251));
+            Table.States (251).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (251), 41, 135);
             Add_Goto (Table.States (251), 43, 136);
             Add_Goto (Table.States (251), 44, 137);
@@ -1662,14 +1831,17 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (251), 71, 143);
             Table.States (251).Kernel := To_Vector ((0 => (67, 29, 1, False)));
             Table.States (251).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 0)));
+            Table.States (252).Action_List.Set_Capacity (8);
             Add_Action (Table.States (252), (6, 8, 12, 16, 18, 23, 25, 37), 
(52, 1), 2, null, null);
             Table.States (252).Kernel := To_Vector ((0 => (52, 51, 0, True)));
             Table.States (252).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 52, 2)));
             Table.States (252).Minimal_Complete_Actions_Recursive := True;
+            Table.States (253).Action_List.Set_Capacity (7);
             Add_Action (Table.States (253), (6, 8, 12, 16, 18, 23, 37), (42, 
3), 8, attribute_declaration_3'Access,
             null);
             Table.States (253).Kernel := To_Vector ((0 => (42, 34, 0, False)));
             Table.States (253).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 42, 8)));
+            Table.States (254).Action_List.Set_Capacity (11);
             Add_Action (Table.States (254), 10, 32);
             Add_Action (Table.States (254), 11, 33);
             Add_Action (Table.States (254), 14, 34);
@@ -1681,7 +1853,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (254), 33, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (254), 37, 36);
             Add_Action (Table.States (254), 38, 37);
-            Add_Error (Table.States (254));
+            Table.States (254).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (254), 41, 38);
             Add_Goto (Table.States (254), 43, 39);
             Add_Goto (Table.States (254), 44, 40);
@@ -1694,28 +1866,32 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (254), 71, 47);
             Table.States (254).Kernel := To_Vector ((0 => (41, 14, 1, False)));
             Table.States (254).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 70, 0)));
+            Table.States (255).Action_List.Set_Capacity (3);
             Add_Action (Table.States (255), (4, 27, 34), (57, 0), 2, null, 
null);
             Table.States (255).Kernel := To_Vector ((0 => (57, 41, 0, False)));
             Table.States (255).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 57, 2)));
+            Table.States (256).Action_List.Set_Capacity (3);
             Add_Action (Table.States (256), (4, 27, 34), (57, 1), 2, null, 
null);
             Table.States (256).Kernel := To_Vector ((0 => (57, 41, 0, False)));
             Table.States (256).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 57, 2)));
+            Table.States (257).Action_List.Set_Capacity (3);
             Add_Action (Table.States (257), (4, 27, 34), (71, 1), 2, null, 
null);
             Table.States (257).Kernel := To_Vector ((0 => (71, 21, 0, False)));
             Table.States (257).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 2)));
+            Table.States (258).Action_List.Set_Capacity (2);
             Add_Action (Table.States (258), 21, 276);
             Add_Action (Table.States (258), 30, 67);
-            Add_Error (Table.States (258));
             Table.States (258).Kernel := To_Vector (((41, 70, 1, False), (70, 
70, 1, True)));
             Table.States (258).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 276)));
+            Table.States (259).Action_List.Set_Capacity (1);
             Add_Action (Table.States (259), 37, 277);
-            Add_Error (Table.States (259));
             Table.States (259).Kernel := To_Vector (((44, 33, 1, False), (44, 
33, 4, False)));
             Table.States (259).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 277)));
+            Table.States (260).Action_List.Set_Capacity (1);
             Add_Action (Table.States (260), 36, 278);
-            Add_Error (Table.States (260));
             Table.States (260).Kernel := To_Vector ((0 => (42, 4, 2, False)));
             Table.States (260).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 36, 278)));
+            Table.States (261).Action_List.Set_Capacity (11);
             Add_Action (Table.States (261), 4, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (261), 10, 227);
             Add_Action (Table.States (261), 11, 228);
@@ -1727,7 +1903,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (261), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (261), 37, 230);
             Add_Action (Table.States (261), 38, 231);
-            Add_Error (Table.States (261));
+            Table.States (261).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (261), 41, 232);
             Add_Goto (Table.States (261), 43, 233);
             Add_Goto (Table.States (261), 44, 234);
@@ -1739,41 +1915,46 @@ package body Gpr_Process_LR1_Main is
             Table.States (261).Kernel := To_Vector ((0 => (56, 27, 0, True)));
             Table.States (261).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 71, 0)));
             Table.States (261).Minimal_Complete_Actions_Recursive := True;
+            Table.States (262).Action_List.Set_Capacity (7);
             Add_Action (Table.States (262), (6, 8, 12, 16, 18, 23, 37), (42, 
1), 8, attribute_declaration_1'Access,
             null);
             Table.States (262).Kernel := To_Vector ((0 => (42, 34, 0, False)));
             Table.States (262).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 42, 8)));
+            Table.States (263).Action_List.Set_Capacity (1);
             Add_Action (Table.States (263), 37, 280);
-            Add_Error (Table.States (263));
             Table.States (263).Kernel := To_Vector ((0 => (59, 31, 1, True)));
             Table.States (263).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 280)));
             Table.States (263).Minimal_Complete_Actions_Recursive := True;
+            Table.States (264).Action_List.Set_Capacity (1);
             Add_Action (Table.States (264), 34, 281);
-            Add_Error (Table.States (264));
             Table.States (264).Kernel := To_Vector ((0 => (62, 58, 1, False)));
             Table.States (264).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 281)));
+            Table.States (265).Action_List.Set_Capacity (2);
             Add_Action (Table.States (265), (27, 34), (44, 1), 6, null, null);
             Table.States (265).Kernel := To_Vector ((0 => (44, 21, 0, False)));
             Table.States (265).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 44, 6)));
+            Table.States (266).Action_List.Set_Capacity (2);
             Add_Action (Table.States (266), 8, Reduce, (47, 0), 0, null, null);
             Add_Action (Table.States (266), 25, 147);
             Add_Conflict (Table.States (266), 25, (47, 0), 0, null, null);
-            Add_Error (Table.States (266));
+            Table.States (266).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (266), 46, 148);
             Add_Goto (Table.States (266), 47, 282);
             Table.States (266).Kernel := To_Vector ((0 => (45, 13, 3, False)));
             Table.States (266).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 47, 0)));
+            Table.States (267).Action_List.Set_Capacity (1);
             Add_Action (Table.States (267), 38, 283);
-            Add_Error (Table.States (267));
             Table.States (267).Kernel := To_Vector ((0 => (42, 14, 4, False)));
             Table.States (267).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 283)));
+            Table.States (268).Action_List.Set_Capacity (3);
             Add_Action (Table.States (268), 17, 152);
             Add_Action (Table.States (268), 21, Reduce, (54, 0), 0, null, 
null);
             Add_Action (Table.States (268), 38, 153);
-            Add_Error (Table.States (268));
+            Table.States (268).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (268), 54, 284);
             Table.States (268).Kernel := To_Vector (((42, 14, 3, False), (42, 
14, 5, False)));
             Table.States (268).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 54, 0)));
+            Table.States (269).Action_List.Set_Capacity (10);
             Add_Action (Table.States (269), 10, 130);
             Add_Action (Table.States (269), 11, 131);
             Add_Action (Table.States (269), 14, 132);
@@ -1784,7 +1965,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (269), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (269), 37, 133);
             Add_Action (Table.States (269), 38, 134);
-            Add_Error (Table.States (269));
+            Table.States (269).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (269), 41, 135);
             Add_Goto (Table.States (269), 43, 136);
             Add_Goto (Table.States (269), 44, 137);
@@ -1796,14 +1977,16 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (269), 71, 143);
             Table.States (269).Kernel := To_Vector ((0 => (42, 24, 1, False)));
             Table.States (269).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 0)));
+            Table.States (270).Action_List.Set_Capacity (3);
             Add_Action (Table.States (270), 13, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (270), 31, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (270), 37, 105);
-            Add_Error (Table.States (270));
+            Table.States (270).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (270), 58, 106);
             Add_Goto (Table.States (270), 59, 286);
             Table.States (270).Kernel := To_Vector ((0 => (62, 9, 3, False)));
             Table.States (270).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 0)));
+            Table.States (271).Action_List.Set_Capacity (7);
             Add_Action (Table.States (271), 6, 85);
             Add_Action (Table.States (271), 8, Reduce, (53, 0), 0, null, null);
             Add_Action (Table.States (271), 12, 86);
@@ -1811,7 +1994,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (271), 18, 88);
             Add_Action (Table.States (271), 23, 89);
             Add_Action (Table.States (271), 37, 90);
-            Add_Error (Table.States (271));
+            Table.States (271).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (271), 42, 91);
             Add_Goto (Table.States (271), 45, 92);
             Add_Goto (Table.States (271), 51, 93);
@@ -1825,91 +2008,99 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (271), 72, 101);
             Table.States (271).Kernel := To_Vector ((0 => (61, 13, 2, False)));
             Table.States (271).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 53, 0)));
+            Table.States (272).Action_List.Set_Capacity (3);
             Add_Action (Table.States (272), 31, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (272), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (272), 37, 158);
-            Add_Error (Table.States (272));
+            Table.States (272).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (272), 58, 159);
             Add_Goto (Table.States (272), 59, 288);
             Table.States (272).Kernel := To_Vector ((0 => (63, 20, 1, False)));
             Table.States (272).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 0)));
+            Table.States (273).Action_List.Set_Capacity (1);
             Add_Action (Table.States (273), 14, 161);
-            Add_Error (Table.States (273));
+            Table.States (273).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (273), 41, 289);
             Table.States (273).Kernel := To_Vector ((0 => (72, 13, 3, False)));
             Table.States (273).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 161)));
+            Table.States (274).Action_List.Set_Capacity (1);
             Add_Action (Table.States (274), 29, 290);
-            Add_Error (Table.States (274));
             Table.States (274).Kernel := To_Vector ((0 => (67, 37, 2, False)));
             Table.States (274).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 29, 290)));
+            Table.States (275).Action_List.Set_Capacity (2);
             Add_Action (Table.States (275), 27, 170);
             Add_Action (Table.States (275), 34, 291);
-            Add_Error (Table.States (275));
             Table.States (275).Kernel := To_Vector (((56, 56, 1, True), (67, 
56, 1, False)));
             Table.States (275).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 291)));
+            Table.States (276).Action_List.Set_Capacity (3);
             Add_Action (Table.States (276), (4, 27, 34), (41, 0), 3, 
aggregate_g_0'Access, null);
             Table.States (276).Kernel := To_Vector ((0 => (41, 21, 0, False)));
             Table.States (276).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 41, 3)));
+            Table.States (277).Action_List.Set_Capacity (4);
             Add_Action (Table.States (277), 4, Reduce, (44, 0), 3, null, null);
             Add_Action (Table.States (277), 14, 292);
             Add_Action (Table.States (277), 27, Reduce, (44, 0), 3, null, 
null);
             Add_Action (Table.States (277), 34, Reduce, (44, 0), 3, null, 
null);
-            Add_Error (Table.States (277));
             Table.States (277).Kernel := To_Vector (((44, 37, 0, False), (44, 
37, 3, False)));
             Table.States (277).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 44, 3)));
+            Table.States (278).Action_List.Set_Capacity (1);
             Add_Action (Table.States (278), 34, 293);
-            Add_Error (Table.States (278));
             Table.States (278).Kernel := To_Vector ((0 => (42, 36, 1, False)));
             Table.States (278).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 293)));
+            Table.States (279).Action_List.Set_Capacity (3);
             Add_Action (Table.States (279), (4, 27, 34), (56, 1), 3, null, 
null);
             Table.States (279).Kernel := To_Vector ((0 => (56, 71, 0, True)));
             Table.States (279).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 3)));
             Table.States (279).Minimal_Complete_Actions_Recursive := True;
+            Table.States (280).Action_List.Set_Capacity (5);
             Add_Action (Table.States (280), (4, 27, 31, 33, 34), (59, 1), 3, 
null, null);
             Table.States (280).Kernel := To_Vector ((0 => (59, 37, 0, True)));
             Table.States (280).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 59, 3)));
             Table.States (280).Minimal_Complete_Actions_Recursive := True;
+            Table.States (281).Action_List.Set_Capacity (7);
             Add_Action (Table.States (281), (6, 8, 12, 16, 18, 23, 37), (62, 
0), 9, package_extension_0'Access,
             package_extension_0_check'Access);
             Table.States (281).Kernel := To_Vector ((0 => (62, 34, 0, False)));
             Table.States (281).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 62, 9)));
+            Table.States (282).Action_List.Set_Capacity (2);
             Add_Action (Table.States (282), 8, 294);
             Add_Action (Table.States (282), 25, 147);
-            Add_Error (Table.States (282));
+            Table.States (282).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (282), 46, 180);
             Table.States (282).Kernel := To_Vector (((45, 47, 3, False), (47, 
47, 2, True)));
             Table.States (282).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 294)));
+            Table.States (283).Action_List.Set_Capacity (1);
             Add_Action (Table.States (283), 21, 295);
-            Add_Error (Table.States (283));
             Table.States (283).Kernel := To_Vector ((0 => (42, 38, 3, False)));
             Table.States (283).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 295)));
+            Table.States (284).Action_List.Set_Capacity (1);
             Add_Action (Table.States (284), 21, 296);
-            Add_Error (Table.States (284));
             Table.States (284).Kernel := To_Vector (((42, 54, 3, False), (42, 
54, 5, False)));
             Table.States (284).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 296)));
+            Table.States (285).Action_List.Set_Capacity (2);
             Add_Action (Table.States (285), 27, 170);
             Add_Action (Table.States (285), 34, 297);
-            Add_Error (Table.States (285));
             Table.States (285).Kernel := To_Vector (((42, 56, 1, False), (56, 
56, 1, True)));
             Table.States (285).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 297)));
+            Table.States (286).Action_List.Set_Capacity (2);
             Add_Action (Table.States (286), 13, 298);
             Add_Action (Table.States (286), 31, 121);
-            Add_Error (Table.States (286));
             Table.States (286).Kernel := To_Vector (((59, 59, 2, True), (62, 
59, 3, False)));
             Table.States (286).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 298)));
+            Table.States (287).Action_List.Set_Capacity (1);
             Add_Action (Table.States (287), 8, 299);
-            Add_Error (Table.States (287));
             Table.States (287).Kernel := To_Vector ((0 => (61, 53, 2, False)));
             Table.States (287).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 299)));
+            Table.States (288).Action_List.Set_Capacity (2);
             Add_Action (Table.States (288), 31, 186);
             Add_Action (Table.States (288), 34, 300);
-            Add_Error (Table.States (288));
             Table.States (288).Kernel := To_Vector (((59, 59, 2, True), (63, 
59, 1, False)));
             Table.States (288).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 300)));
+            Table.States (289).Action_List.Set_Capacity (1);
             Add_Action (Table.States (289), 34, 301);
-            Add_Error (Table.States (289));
             Table.States (289).Kernel := To_Vector ((0 => (72, 41, 1, False)));
             Table.States (289).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 301)));
+            Table.States (290).Action_List.Set_Capacity (10);
             Add_Action (Table.States (290), 10, 130);
             Add_Action (Table.States (290), 11, 131);
             Add_Action (Table.States (290), 14, 132);
@@ -1920,7 +2111,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (290), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (290), 37, 133);
             Add_Action (Table.States (290), 38, 134);
-            Add_Error (Table.States (290));
+            Table.States (290).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (290), 41, 135);
             Add_Goto (Table.States (290), 43, 136);
             Add_Goto (Table.States (290), 44, 137);
@@ -1932,34 +2123,38 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (290), 71, 143);
             Table.States (290).Kernel := To_Vector ((0 => (67, 29, 1, False)));
             Table.States (290).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 0)));
+            Table.States (291).Action_List.Set_Capacity (8);
             Add_Action (Table.States (291), (6, 8, 12, 16, 18, 23, 25, 37), 
(67, 0), 4,
             simple_declarative_item_0'Access, null);
             Table.States (291).Kernel := To_Vector ((0 => (67, 34, 0, False)));
             Table.States (291).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 67, 4)));
+            Table.States (292).Action_List.Set_Capacity (1);
             Add_Action (Table.States (292), 38, 303);
-            Add_Error (Table.States (292));
             Table.States (292).Kernel := To_Vector ((0 => (44, 14, 2, False)));
             Table.States (292).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 303)));
+            Table.States (293).Action_List.Set_Capacity (7);
             Add_Action (Table.States (293), (6, 8, 12, 16, 18, 23, 37), (42, 
2), 10, attribute_declaration_2'Access,
             null);
             Table.States (293).Kernel := To_Vector ((0 => (42, 34, 0, False)));
             Table.States (293).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 42, 10)));
+            Table.States (294).Action_List.Set_Capacity (1);
             Add_Action (Table.States (294), 6, 304);
-            Add_Error (Table.States (294));
             Table.States (294).Kernel := To_Vector ((0 => (45, 8, 2, False)));
             Table.States (294).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 6, 304)));
+            Table.States (295).Action_List.Set_Capacity (1);
             Add_Action (Table.States (295), 24, 305);
-            Add_Error (Table.States (295));
             Table.States (295).Kernel := To_Vector ((0 => (42, 21, 2, False)));
             Table.States (295).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 305)));
+            Table.States (296).Action_List.Set_Capacity (1);
             Add_Action (Table.States (296), 24, 306);
-            Add_Error (Table.States (296));
             Table.States (296).Kernel := To_Vector (((42, 21, 2, False), (42, 
21, 4, False)));
             Table.States (296).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 306)));
+            Table.States (297).Action_List.Set_Capacity (8);
             Add_Action (Table.States (297), (6, 8, 12, 16, 18, 23, 25, 37), 
(42, 0), 5, attribute_declaration_0'Access,
             null);
             Table.States (297).Kernel := To_Vector ((0 => (42, 34, 0, False)));
             Table.States (297).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 42, 5)));
+            Table.States (298).Action_List.Set_Capacity (7);
             Add_Action (Table.States (298), 6, 85);
             Add_Action (Table.States (298), 8, Reduce, (53, 0), 0, null, null);
             Add_Action (Table.States (298), 12, 86);
@@ -1967,7 +2162,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (298), 18, 88);
             Add_Action (Table.States (298), 23, 89);
             Add_Action (Table.States (298), 37, 90);
-            Add_Error (Table.States (298));
+            Table.States (298).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (298), 42, 91);
             Add_Goto (Table.States (298), 45, 92);
             Add_Goto (Table.States (298), 51, 93);
@@ -1981,33 +2176,37 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (298), 72, 101);
             Table.States (298).Kernel := To_Vector ((0 => (62, 13, 2, False)));
             Table.States (298).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 53, 0)));
+            Table.States (299).Action_List.Set_Capacity (2);
             Add_Action (Table.States (299), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (299), 37, 144);
-            Add_Error (Table.States (299));
+            Table.States (299).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (299), 58, 308);
             Table.States (299).Kernel := To_Vector ((0 => (61, 8, 1, False)));
             Table.States (299).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 0)));
+            Table.States (300).Action_List.Set_Capacity (8);
             Add_Action (Table.States (300), (6, 8, 12, 16, 18, 23, 25, 37), 
(63, 0), 5, package_renaming_0'Access,
             null);
             Table.States (300).Kernel := To_Vector ((0 => (63, 34, 0, False)));
             Table.States (300).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 63, 5)));
+            Table.States (301).Action_List.Set_Capacity (8);
             Add_Action (Table.States (301), (6, 8, 12, 16, 18, 23, 25, 37), 
(72, 0), 5,
             typed_string_declaration_0'Access, null);
             Table.States (301).Kernel := To_Vector ((0 => (72, 34, 0, False)));
             Table.States (301).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 72, 5)));
+            Table.States (302).Action_List.Set_Capacity (2);
             Add_Action (Table.States (302), 27, 170);
             Add_Action (Table.States (302), 34, 309);
-            Add_Error (Table.States (302));
             Table.States (302).Kernel := To_Vector (((56, 56, 1, True), (67, 
56, 1, False)));
             Table.States (302).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 309)));
+            Table.States (303).Action_List.Set_Capacity (1);
             Add_Action (Table.States (303), 21, 310);
-            Add_Error (Table.States (303));
             Table.States (303).Kernel := To_Vector ((0 => (44, 38, 1, False)));
             Table.States (303).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 310)));
+            Table.States (304).Action_List.Set_Capacity (1);
             Add_Action (Table.States (304), 34, 311);
-            Add_Error (Table.States (304));
             Table.States (304).Kernel := To_Vector ((0 => (45, 6, 1, False)));
             Table.States (304).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 311)));
+            Table.States (305).Action_List.Set_Capacity (10);
             Add_Action (Table.States (305), 10, 130);
             Add_Action (Table.States (305), 11, 131);
             Add_Action (Table.States (305), 14, 132);
@@ -2018,7 +2217,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (305), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (305), 37, 133);
             Add_Action (Table.States (305), 38, 134);
-            Add_Error (Table.States (305));
+            Table.States (305).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (305), 41, 135);
             Add_Goto (Table.States (305), 43, 136);
             Add_Goto (Table.States (305), 44, 137);
@@ -2030,6 +2229,7 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (305), 71, 143);
             Table.States (305).Kernel := To_Vector ((0 => (42, 24, 1, False)));
             Table.States (305).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 0)));
+            Table.States (306).Action_List.Set_Capacity (11);
             Add_Action (Table.States (306), 4, Reduce, (58, 0), 0, null, null);
             Add_Action (Table.States (306), 10, 227);
             Add_Action (Table.States (306), 11, 228);
@@ -2041,7 +2241,7 @@ package body Gpr_Process_LR1_Main is
             Add_Action (Table.States (306), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (306), 37, 230);
             Add_Action (Table.States (306), 38, 231);
-            Add_Error (Table.States (306));
+            Table.States (306).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (306), 41, 232);
             Add_Goto (Table.States (306), 43, 233);
             Add_Goto (Table.States (306), 44, 234);
@@ -2053,69 +2253,78 @@ package body Gpr_Process_LR1_Main is
             Add_Goto (Table.States (306), 71, 240);
             Table.States (306).Kernel := To_Vector (((42, 24, 1, False), (42, 
24, 3, False)));
             Table.States (306).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 56, 0)));
+            Table.States (307).Action_List.Set_Capacity (1);
             Add_Action (Table.States (307), 8, 314);
-            Add_Error (Table.States (307));
             Table.States (307).Kernel := To_Vector ((0 => (62, 53, 2, False)));
             Table.States (307).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 314)));
+            Table.States (308).Action_List.Set_Capacity (1);
             Add_Action (Table.States (308), 34, 315);
-            Add_Error (Table.States (308));
             Table.States (308).Kernel := To_Vector ((0 => (61, 58, 1, False)));
             Table.States (308).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 315)));
+            Table.States (309).Action_List.Set_Capacity (8);
             Add_Action (Table.States (309), (6, 8, 12, 16, 18, 23, 25, 37), 
(67, 1), 6,
             simple_declarative_item_1'Access, null);
             Table.States (309).Kernel := To_Vector ((0 => (67, 34, 0, False)));
             Table.States (309).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 67, 6)));
+            Table.States (310).Action_List.Set_Capacity (3);
             Add_Action (Table.States (310), (4, 27, 34), (44, 1), 6, null, 
null);
             Table.States (310).Kernel := To_Vector ((0 => (44, 21, 0, False)));
             Table.States (310).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 44, 6)));
+            Table.States (311).Action_List.Set_Capacity (8);
             Add_Action (Table.States (311), (6, 8, 12, 16, 18, 23, 25, 37), 
(45, 0), 7, case_statement_0'Access, null);
             Table.States (311).Kernel := To_Vector ((0 => (45, 34, 0, False)));
             Table.States (311).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 45, 7)));
+            Table.States (312).Action_List.Set_Capacity (2);
             Add_Action (Table.States (312), 27, 170);
             Add_Action (Table.States (312), 34, 316);
-            Add_Error (Table.States (312));
             Table.States (312).Kernel := To_Vector (((42, 56, 1, False), (56, 
56, 1, True)));
             Table.States (312).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 316)));
+            Table.States (313).Action_List.Set_Capacity (3);
             Add_Action (Table.States (313), 4, 317);
             Add_Action (Table.States (313), 27, 261);
             Add_Action (Table.States (313), 34, 318);
-            Add_Error (Table.States (313));
             Table.States (313).Kernel := To_Vector (((42, 56, 1, False), (42, 
56, 3, False), (56, 56, 1, True)));
             Table.States (313).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 318)));
+            Table.States (314).Action_List.Set_Capacity (2);
             Add_Action (Table.States (314), 34, Reduce, (58, 0), 0, null, 
null);
             Add_Action (Table.States (314), 37, 144);
-            Add_Error (Table.States (314));
+            Table.States (314).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (314), 58, 319);
             Table.States (314).Kernel := To_Vector ((0 => (62, 8, 1, False)));
             Table.States (314).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 58, 0)));
+            Table.States (315).Action_List.Set_Capacity (8);
             Add_Action (Table.States (315), (6, 8, 12, 16, 18, 23, 25, 37), 
(61, 0), 7, package_spec_0'Access,
             package_spec_0_check'Access);
             Table.States (315).Kernel := To_Vector ((0 => (61, 34, 0, False)));
             Table.States (315).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 61, 7)));
+            Table.States (316).Action_List.Set_Capacity (8);
             Add_Action (Table.States (316), (6, 8, 12, 16, 18, 23, 25, 37), 
(42, 3), 8, attribute_declaration_3'Access,
             null);
             Table.States (316).Kernel := To_Vector ((0 => (42, 34, 0, False)));
             Table.States (316).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 42, 8)));
+            Table.States (317).Action_List.Set_Capacity (1);
             Add_Action (Table.States (317), 36, 320);
-            Add_Error (Table.States (317));
             Table.States (317).Kernel := To_Vector ((0 => (42, 4, 2, False)));
             Table.States (317).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 36, 320)));
+            Table.States (318).Action_List.Set_Capacity (8);
             Add_Action (Table.States (318), (6, 8, 12, 16, 18, 23, 25, 37), 
(42, 1), 8, attribute_declaration_1'Access,
             null);
             Table.States (318).Kernel := To_Vector ((0 => (42, 34, 0, False)));
             Table.States (318).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 42, 8)));
+            Table.States (319).Action_List.Set_Capacity (1);
             Add_Action (Table.States (319), 34, 321);
-            Add_Error (Table.States (319));
             Table.States (319).Kernel := To_Vector ((0 => (62, 58, 1, False)));
             Table.States (319).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 321)));
+            Table.States (320).Action_List.Set_Capacity (1);
             Add_Action (Table.States (320), 34, 322);
-            Add_Error (Table.States (320));
             Table.States (320).Kernel := To_Vector ((0 => (42, 36, 1, False)));
             Table.States (320).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 322)));
+            Table.States (321).Action_List.Set_Capacity (8);
             Add_Action (Table.States (321), (6, 8, 12, 16, 18, 23, 25, 37), 
(62, 0), 9, package_extension_0'Access,
             package_extension_0_check'Access);
             Table.States (321).Kernel := To_Vector ((0 => (62, 34, 0, False)));
             Table.States (321).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 62, 9)));
+            Table.States (322).Action_List.Set_Capacity (8);
             Add_Action (Table.States (322), (6, 8, 12, 16, 18, 23, 25, 37), 
(42, 2), 10,
             attribute_declaration_2'Access, null);
             Table.States (322).Kernel := To_Vector ((0 => (42, 34, 0, False)));
@@ -2125,6 +2334,7 @@ package body Gpr_Process_LR1_Main is
          Subr_1;
          Subr_2;
          Subr_3;
+         Table.Error_Action := new Parse_Action_Node'((Verb => Error), null);
       end;
 
       WisiToken.Parse.LR.Parser.New_Parser
@@ -2139,4 +2349,4 @@ package body Gpr_Process_LR1_Main is
          Max_Parallel         => 15,
          Terminate_Same_State => True);
    end Create_Parser;
-end Gpr_Process_LR1_Main;
+end Gpr_Process_Main;
diff --git a/packages/ada-mode/gpr_process_lr1_main.ads 
b/packages/ada-mode/gpr_process_main.ads
similarity index 96%
rename from packages/ada-mode/gpr_process_lr1_main.ads
rename to packages/ada-mode/gpr_process_main.ads
index e3ea47c..6ad2193 100644
--- a/packages/ada-mode/gpr_process_lr1_main.ads
+++ b/packages/ada-mode/gpr_process_main.ads
@@ -19,7 +19,7 @@
 
 with WisiToken.Syntax_Trees;
 with WisiToken.Parse.LR.Parser;
-package Gpr_Process_LR1_Main is
+package Gpr_Process_Main is
 
    procedure Create_Parser
      (Parser                         :    out WisiToken.Parse.LR.Parser.Parser;
@@ -29,4 +29,4 @@ package Gpr_Process_LR1_Main is
       Trace                        : not null access WisiToken.Trace'Class;
       User_Data                    : in     
WisiToken.Syntax_Trees.User_Data_Access);
 
-end Gpr_Process_LR1_Main;
+end Gpr_Process_Main;
diff --git a/packages/ada-mode/run_ada_lalr_parse.ads 
b/packages/ada-mode/run_ada_lalr_parse.ads
deleted file mode 100644
index 7eac49d..0000000
--- a/packages/ada-mode/run_ada_lalr_parse.ads
+++ /dev/null
@@ -1,32 +0,0 @@
---  Abstract :
---
---  Run the Ada LALR parser standalone. Useful for debugging grammar issues.
---
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
---
---  This program is free software; you can redistribute it and/or
---  modify it under terms of the GNU General Public License as
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version. This program is distributed in the
---  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
---  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
---  PURPOSE. See the GNU General Public License for more details. You
---  should have received a copy of the GNU General Public License
---  distributed with this program; see file COPYING. If not, write to
---  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
---  MA 02110-1335, USA.
-
-pragma License (GPL);
-
-with Ada_Process_Actions;
-with Ada_Process_LALR_Main;
-with Gen_Run_Wisi_LR_Parse;
-with WisiToken.Parse.LR.McKenzie_Recover.Ada;
-with Wisi.Ada;
-procedure Run_Ada_LALR_Parse is new Gen_Run_Wisi_LR_Parse
-  (Wisi.Ada.Parse_Data_Type,
-   Ada_Process_Actions.Descriptor,
-   WisiToken.Parse.LR.McKenzie_Recover.Ada.Language_Fixes'Access,
-   WisiToken.Parse.LR.McKenzie_Recover.Ada.Matching_Begin_Tokens'Access,
-   WisiToken.Parse.LR.McKenzie_Recover.Ada.String_ID_Set'Access,
-   Ada_Process_LALR_Main.Create_Parser);
diff --git a/packages/ada-mode/run_ada_libadalang_parse.ads 
b/packages/ada-mode/run_ada_libadalang_parse.ads
deleted file mode 100644
index f3b3d19..0000000
--- a/packages/ada-mode/run_ada_libadalang_parse.ads
+++ /dev/null
@@ -1,25 +0,0 @@
---  Abstract :
---
---  Run the Ada parser standalone. Useful for debugging grammar issues.
---
---  Copyright (C) 2018 Free Software Foundation, Inc.
---
---  This program is free software; you can redistribute it and/or
---  modify it under terms of the GNU General Public License as
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version. This program is distributed in the
---  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
---  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
---  PURPOSE. See the GNU General Public License for more details. You
---  should have received a copy of the GNU General Public License
---  distributed with this program; see file COPYING. If not, write to
---  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
---  MA 02110-1335, USA.
-
-pragma License (GPL);
-
-with Ada_Process_Actions;
-with Gen_Run_Wisi_Libadalang_Parse;
-with Wisi.Ada;
-procedure Run_Ada_Libadalang_Parse is new Gen_Run_Wisi_Libadalang_Parse
-  (Wisi.Ada.Parse_Data_Type, Ada_Process_Actions.Descriptor);
diff --git a/packages/ada-mode/run_ada_lr1_parse.ads 
b/packages/ada-mode/run_ada_lr1_parse.ads
deleted file mode 100644
index 76984a7..0000000
--- a/packages/ada-mode/run_ada_lr1_parse.ads
+++ /dev/null
@@ -1,33 +0,0 @@
---  Abstract :
---
---  Run the Ada parser standalone. Useful for debugging grammar issues.
---
---  Copyright (C) 2017, 2018, 2019 Free Software Foundation, Inc.
---
---  This program is free software; you can redistribute it and/or
---  modify it under terms of the GNU General Public License as
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version. This program is distributed in the
---  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
---  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
---  PURPOSE. See the GNU General Public License for more details. You
---  should have received a copy of the GNU General Public License
---  distributed with this program; see file COPYING. If not, write to
---  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
---  MA 02110-1335, USA.
-
-pragma License (GPL);
-
-with Ada_Process_Actions;
-with Ada_Process_LR1_Main;
-with Gen_Run_Wisi_LR_Text_Rep_Parse;
-with WisiToken.Parse.LR.McKenzie_Recover.Ada;
-with Wisi.Ada;
-procedure Run_Ada_LR1_Parse is new Gen_Run_Wisi_LR_Text_Rep_Parse
-  (Wisi.Ada.Parse_Data_Type,
-   Ada_Process_Actions.Descriptor,
-   WisiToken.Parse.LR.McKenzie_Recover.Ada.Language_Fixes'Access,
-   WisiToken.Parse.LR.McKenzie_Recover.Ada.Matching_Begin_Tokens'Access,
-   WisiToken.Parse.LR.McKenzie_Recover.Ada.String_ID_Set'Access,
-   "ada_lr1_parse_table.txt",
-   Ada_Process_LR1_Main.Create_Parser);
diff --git a/packages/ada-mode/run_gpr_parse.ads 
b/packages/ada-mode/run_gpr_parse.ads
deleted file mode 100644
index ade3a5f..0000000
--- a/packages/ada-mode/run_gpr_parse.ads
+++ /dev/null
@@ -1,31 +0,0 @@
---  Abstract :
---
---  Run the gpr parser standalone. Useful for debugging grammar issues.
---
---  Copyright (C) 2017, 2018 Free Software Foundation, Inc.
---
---  This program is free software; you can redistribute it and/or
---  modify it under terms of the GNU General Public License as
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version. This program is distributed in the
---  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
---  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
---  PURPOSE. See the GNU General Public License for more details. You
---  should have received a copy of the GNU General Public License
---  distributed with this program; see file COPYING. If not, write to
---  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
---  MA 02110-1335, USA.
-
-pragma License (GPL);
-
-with Gen_Run_Wisi_LR_Parse;
-with Gpr_Process_Actions;
-with Gpr_Process_LR1_Main;
-with Wisi.Gpr;
-procedure Run_Gpr_Parse is new Gen_Run_Wisi_LR_Parse
-  (Wisi.Gpr.Parse_Data_Type,
-   Gpr_Process_Actions.Descriptor,
-   null,
-   null,
-   null,
-   Gpr_Process_LR1_Main.Create_Parser);
diff --git a/packages/ada-mode/run_wisi_common_parse.adb 
b/packages/ada-mode/run_wisi_common_parse.adb
deleted file mode 100644
index df51b7a..0000000
--- a/packages/ada-mode/run_wisi_common_parse.adb
+++ /dev/null
@@ -1,293 +0,0 @@
---  Abstract :
---
---  See spec.
---
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
---
---  This program is free software; you can redistribute it and/or
---  modify it under terms of the GNU General Public License as
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version. This program is distributed in the
---  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
---  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
---  PURPOSE. See the GNU General Public License for more details. You
---  should have received a copy of the GNU General Public License
---  distributed with this program; see file COPYING. If not, write to
---  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
---  MA 02110-1335, USA.
-
-pragma License (GPL);
-
-with Ada.Command_Line;
-with Ada.Exceptions;
-with Ada.IO_Exceptions;
-with Ada.Real_Time;
-with Ada.Text_IO;
-with GNAT.Traceback.Symbolic;
-with SAL;
-with System.Multiprocessors;
-package body Run_Wisi_Common_Parse is
-
-   procedure Usage (Parser : in out WisiToken.Parse.LR.Parser.Parser)
-   is
-      use all type WisiToken.Parse.LR.Parse_Table_Ptr;
-      use Ada.Text_IO;
-   begin
-      Put_Line
-        ("usage: <file_name> <parse_action> [partial parse params]" &
-           "[options]");
-      Put_Line ("parse_action: {Navigate | Face | Indent}");
-      Put_Line ("partial parse params: begin_byte_pos end_byte_pos 
goal_byte_pos begin_char_pos begin_line" &
-                  " end_line begin_indent");
-      Put_Line ("options:");
-      Put_Line ("--verbosity n m l:");
-      Put_Line ("   n: parser; m: mckenzie; l: action");
-      Put_Line ("   0 - only report parse errors");
-      Put_Line ("   1 - shows spawn/terminate parallel parsers, error recovery 
enter/exit");
-      Put_Line ("   2 - add each parser cycle, error recovery enqueue/check");
-      Put_Line ("   3 - parse stack in each cycle, error recovery parse 
actions");
-      Put_Line ("   4 - add lexer debug");
-      Put_Line ("--check_limit n  : set error recover token check limit" &
-                  (if Parser.Table = null then ""
-                   else "; default" & WisiToken.Token_Index'Image 
(Parser.Table.McKenzie_Param.Check_Limit)));
-      Put_Line ("--enqueue_limit n  : set error recover token enqueue limit" &
-                  (if Parser.Table = null then ""
-                   else "; default" & Integer'Image 
(Parser.Table.McKenzie_Param.Enqueue_Limit)));
-      Put_Line ("--max_parallel n  : set maximum count of parallel parsers 
(default" &
-                  Integer'Image 
(WisiToken.Parse.LR.Parser.Default_Max_Parallel) & ")");
-      Put_Line ("--task_count n : worker tasks in error recovery");
-      Put_Line ("--disable_recover : disable error recovery; default enabled");
-      Put_Line ("--debug_mode : tracebacks from unhandled exceptions; default 
disabled");
-      Put_Line ("--lang_params <language-specific params>");
-      Put_Line ("--repeat_count n : repeat parse count times, for profiling; 
default 1");
-      New_Line;
-   end Usage;
-
-   function Get_CL_Params (Parser : in out WisiToken.Parse.LR.Parser.Parser) 
return Command_Line_Params
-   is
-      use Ada.Command_Line;
-      use WisiToken;
-      Arg : Integer := 1;
-   begin
-      return Result : Command_Line_Params do
-         if Argument_Count < 1 then
-            Usage (Parser);
-            Set_Exit_Status (Failure);
-            raise Finish;
-
-         elsif Argument (Arg) = "--help" then
-            Usage (Parser);
-            raise Finish;
-
-         elsif Argument_Count < 2 then
-            Usage (Parser);
-            Set_Exit_Status (Failure);
-            raise Finish;
-         end if;
-
-         Result.Source_File_Name  := +Ada.Command_Line.Argument (1);
-         Result.Post_Parse_Action := Wisi.Post_Parse_Action_Type'Value 
(Ada.Command_Line.Argument (2));
-
-         if Argument_Count >= 3 and then Argument (3)(1) /= '-' then
-            Result.Begin_Byte_Pos := WisiToken.Buffer_Pos'Value (Argument (3));
-            Result.End_Byte_Pos   := WisiToken.Buffer_Pos'Value (Argument (4)) 
- 1; -- match emacs region
-            Result.Goal_Byte_Pos  := WisiToken.Buffer_Pos'Value (Argument (5));
-            Result.Begin_Char_Pos := WisiToken.Buffer_Pos'Value (Argument (6));
-            Result.Begin_Line     := WisiToken.Line_Number_Type'Value 
(Argument (7));
-            Result.End_Line       := WisiToken.Line_Number_Type'Value 
(Argument (8));
-            Result.Begin_Indent   := Integer'Value (Argument (9));
-            Arg                   := 10;
-         else
-            Result.Begin_Byte_Pos := WisiToken.Invalid_Buffer_Pos;
-            Result.End_Byte_Pos   := WisiToken.Invalid_Buffer_Pos;
-            Result.Begin_Char_Pos := WisiToken.Buffer_Pos'First;
-            Result.Begin_Line     := WisiToken.Line_Number_Type'First;
-            Arg                   := 3;
-         end if;
-
-         loop
-            exit when Arg > Argument_Count;
-
-            if Argument (Arg) = "--verbosity" then
-               WisiToken.Trace_Parse    := Integer'Value (Argument (Arg + 1));
-               WisiToken.Trace_McKenzie := Integer'Value (Argument (Arg + 2));
-               WisiToken.Trace_Action   := Integer'Value (Argument (Arg + 3));
-               Arg                      := Arg + 4;
-
-            elsif Argument (Arg) = "--check_limit" then
-               Parser.Table.McKenzie_Param.Check_Limit := Token_Index'Value 
(Argument (Arg + 1));
-               Arg := Arg + 2;
-
-            elsif Argument (Arg) = "--debug_mode" then
-               WisiToken.Debug_Mode := True;
-               Arg := Arg + 1;
-
-            elsif Argument (Arg) = "--disable_recover" then
-               Parser.Enable_McKenzie_Recover := False;
-               Arg := Arg + 1;
-
-            elsif Argument (Arg) = "--enqueue_limit" then
-               Parser.Table.McKenzie_Param.Enqueue_Limit := Integer'Value 
(Argument (Arg + 1));
-               Arg := Arg + 2;
-
-            elsif Argument (Arg) = "--lang_params" then
-               Result.Lang_Params := +Argument (Arg + 1);
-               Arg := Arg + 2;
-
-            elsif Argument (Arg) = "--max_parallel" then
-               Parser.Max_Parallel := SAL.Base_Peek_Type'Value (Argument (Arg 
+ 1));
-               Arg := Arg + 2;
-
-            elsif Argument (Arg) = "--repeat_count" then
-               Result.Repeat_Count := Integer'Value (Argument (Arg + 1));
-               Arg := Arg + 2;
-
-            elsif Argument (Arg) = "--task_count" then
-               Parser.Table.McKenzie_Param.Task_Count := 
System.Multiprocessors.CPU_Range'Value (Argument (Arg + 1));
-               Arg := Arg + 2;
-
-            else
-               Ada.Text_IO.Put_Line ("unrecognized option: '" & Argument (Arg) 
& "'");
-               Usage (Parser);
-               Set_Exit_Status (Failure);
-               raise SAL.Parameter_Error;
-            end if;
-         end loop;
-      end return;
-   exception
-   when Finish =>
-      raise;
-
-   when E : others =>
-      Ada.Text_IO.Put_Line (Ada.Exceptions.Exception_Name (E) & ": " & 
Ada.Exceptions.Exception_Message (E));
-      Usage (Parser);
-      Set_Exit_Status (Failure);
-      raise SAL.Parameter_Error;
-   end Get_CL_Params;
-
-   procedure Parse_File
-     (Parser     : in out WisiToken.Parse.LR.Parser.Parser;
-      Parse_Data : in out Wisi.Parse_Data_Type'Class;
-      Descriptor : in     WisiToken.Descriptor)
-   is
-      use Ada.Text_IO;
-      use WisiToken;
-
-      Cl_Params : Command_Line_Params; -- not initialized for exception handler
-      Start     : Ada.Real_Time.Time;
-   begin
-      Cl_Params := Get_CL_Params (Parser);
-
-      --  Do this after setting Trace_Parse so lexer verbosity is set
-      begin
-         Parser.Lexer.Reset_With_File
-           (-Cl_Params.Source_File_Name, Cl_Params.Begin_Byte_Pos, 
Cl_Params.End_Byte_Pos, Cl_Params.Begin_Char_Pos,
-            Cl_Params.Begin_Line);
-      exception
-      when Ada.IO_Exceptions.Name_Error =>
-         Put_Line (Standard_Error, "'" & (-Cl_Params.Source_File_Name) & "' 
cannot be opened");
-         return;
-      end;
-
-      if Cl_Params.End_Line = Invalid_Line_Number then
-         --  User did not provide; run lexer to get end line.
-         declare
-            Token : Base_Token;
-            Lexer_Error : Boolean;
-            pragma Unreferenced (Lexer_Error);
-         begin
-            loop
-               Lexer_Error := Parser.Lexer.Find_Next (Token);
-               exit when Token.ID = Descriptor.EOI_ID;
-            end loop;
-            Cl_Params.End_Line := Token.Line;
-         end;
-      end if;
-
-      Parse_Data.Initialize
-        (Post_Parse_Action => Cl_Params.Post_Parse_Action,
-         Descriptor        => Descriptor'Unrestricted_Access,
-         Source_File_Name  => -Cl_Params.Source_File_Name,
-         Begin_Line        => Cl_Params.Begin_Line,
-         End_Line          => Cl_Params.End_Line,
-         Begin_Indent      => Cl_Params.Begin_Indent,
-         Params            => -Cl_Params.Lang_Params);
-
-      if Cl_Params.Repeat_Count > 1 then
-         Start := Ada.Real_Time.Clock;
-      end if;
-
-      for I in 1 .. Cl_Params.Repeat_Count loop
-         declare
-            procedure Clean_Up
-            is
-               use all type SAL.Base_Peek_Type;
-            begin
-               Parser.Lexer.Discard_Rest_Of_Input;
-               if Cl_Params.Repeat_Count = 1 and Parser.Parsers.Count > 0 then
-                  Parse_Data.Put
-                    (Parser.Lexer.Errors,
-                     Parser.Parsers.First.State_Ref.Errors,
-                     Parser.Parsers.First.State_Ref.Tree);
-               end if;
-            end Clean_Up;
-
-         begin
-            Parse_Data.Reset;
-            Parser.Lexer.Reset;
-
-            begin
-               Parser.Parse;
-            exception
-            when WisiToken.Partial_Parse =>
-               null;
-            end;
-            Parser.Execute_Actions;
-
-            if Cl_Params.Repeat_Count = 1 then
-               Parse_Data.Put (Parser);
-               Parse_Data.Put
-                 (Parser.Lexer.Errors,
-                  Parser.Parsers.First.State_Ref.Errors,
-                  Parser.Parsers.First.State_Ref.Tree);
-            end if;
-         exception
-         when WisiToken.Syntax_Error =>
-            Clean_Up;
-            Put_Line ("(parse_error)");
-
-         when E : WisiToken.Parse_Error =>
-            Clean_Up;
-            Put_Line ("(parse_error """ & Ada.Exceptions.Exception_Message (E) 
& """)");
-
-         when E : WisiToken.Fatal_Error =>
-            Clean_Up;
-            Put_Line ("(error """ & Ada.Exceptions.Exception_Message (E) & 
""")");
-         end;
-      end loop;
-
-      if Cl_Params.Repeat_Count > 1 then
-         declare
-            use Ada.Real_Time;
-            Finish : constant Time := Clock;
-         begin
-            Put_Line ("Total time:" & Duration'Image (To_Duration (Finish - 
Start)));
-            Put_Line ("per iteration:" & Duration'Image (To_Duration ((Finish 
- Start) / Cl_Params.Repeat_Count)));
-         end;
-      end if;
-
-   exception
-   when SAL.Parameter_Error | Finish =>
-      --  From Get_CL_Params; already handled.
-      null;
-
-   when E : others =>
-      Ada.Command_Line.Set_Exit_Status (Ada.Command_Line.Failure);
-      New_Line (2);
-      Put_Line
-        ("(error ""unhandled exception: " & Ada.Exceptions.Exception_Name (E) 
& ": " &
-           Ada.Exceptions.Exception_Message (E) & """)");
-      Put_Line (GNAT.Traceback.Symbolic.Symbolic_Traceback (E));
-   end Parse_File;
-
-end Run_Wisi_Common_Parse;
diff --git a/packages/ada-mode/wisi-ada.adb b/packages/ada-mode/wisi-ada.adb
index ddab858..e73b2da 100644
--- a/packages/ada-mode/wisi-ada.adb
+++ b/packages/ada-mode/wisi-ada.adb
@@ -11,17 +11,18 @@
 --  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
 --  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
---  As a special exception under Section 7 of GPL version 3, you are granted
---  additional permissions described in the GCC Runtime Library Exception,
---  version 3.1, as published by the Free Software Foundation.
-
-pragma License (Modified_GPL);
+pragma License (GPL);
 
 with Ada.Strings.Fixed;
+with Ada.Strings.Unbounded;
+with Ada.Text_IO;
 with Ada_Process_Actions; --  token_enum_id
 package body Wisi.Ada is
    use WisiToken;
 
+   ----------
+   --  body local subprograms
+
    function Indent_Record
      (Data              : in out Parse_Data_Type;
       Anchor_Token      : in     Augmented_Token;
@@ -85,13 +86,355 @@ package body Wisi.Ada is
    end Indent_Record;
 
    ----------
-   --  Public subprograms
+   --  Refactor body subprograms
+
+   function Find_ID_At
+     (Tree       : in WisiToken.Syntax_Trees.Tree;
+      Terminals  : in Augmented_Token_Arrays.Vector;
+      ID         : in Token_ID;
+      Edit_Begin : in WisiToken.Buffer_Pos)
+     return WisiToken.Syntax_Trees.Node_Index
+   is
+      use WisiToken.Syntax_Trees;
+
+      function Match (Tree : in Syntax_Trees.Tree; Node : in Valid_Node_Index) 
return Boolean
+      is begin
+         return Tree.ID (Node) = ID and then
+           Terminals (Tree.Min_Terminal_Index (Node)).Byte_Region.First = 
Edit_Begin;
+      end Match;
+   begin
+      return Tree.Find_Descendant (Tree.Root, Predicate => Match'Access);
+   end Find_ID_At;
+
+   procedure Unrecognized
+     (Expecting  : in String;
+      Found      : in WisiToken.Syntax_Trees.Valid_Node_Index;
+      Edit_Begin : in WisiToken.Buffer_Pos)
+   with No_Return
+   is begin
+      raise SAL.Parameter_Error with "unrecognized subprogram call at 
byte_pos" & Edit_Begin'Image &
+        "; expecting " & Expecting & " found node" & Found'Image;
+   end Unrecognized;
+
+   procedure Method_Object_To_Object_Method
+     (Tree       : in     WisiToken.Syntax_Trees.Tree;
+      Data       : in out Parse_Data_Type;
+      Edit_Begin : in     WisiToken.Buffer_Pos)
+   is
+      --  Data.Tree contains one statement or declaration; Edit_Begin is at
+      --  start of a subprogram call. Convert the subprogram call from
+      --  Prefix.Method (Object, ...) to Object.Method (...).
+
+      use Ada_Process_Actions;
+      use Standard.Ada.Strings.Unbounded;
+      use Standard.Ada.Text_IO;
+      use WisiToken.Syntax_Trees;
+
+      Call             : Node_Index := Find_ID_At (Tree, Data.Terminals, 
+name_ID, Edit_Begin);
+      Edit_End         : WisiToken.Buffer_Pos;
+      Method           : Valid_Node_Index;
+      Temp             : Node_Index;
+      Association_List : Node_Index;
+      Object           : Valid_Node_Index;
+      Result           : Unbounded_String;
+   begin
+      if Call = Invalid_Node_Index then
+         --  Most likely the edit point is wrong.
+         raise SAL.Parameter_Error with "no 'name' found at byte_pos" & 
Edit_Begin'Image;
+      elsif not (Tree.RHS_Index (Call) in 1 | 3) then
+         raise SAL.Parameter_Error with "no subprogram call found at byte_pos" 
& Edit_Begin'Image &
+           " (found node" & Call'Image & ")";
+      end if;
+
+      if WisiToken.Trace_Action > Detail then
+         Put_Line (";; refactoring node" & Call'Image & " '" & Data.Get_Text 
(Tree, Call) & "'");
+      end if;
+
+      if Tree.RHS_Index (Call) = 3 then
+         --  Code looks like: Length (Container)'Old. We only want to edit
+         --  'Length (Container)', keeping the trailing 'Old.
+         Call := Tree.Child (Tree.Child (Call, 1), 1);
+      end if;
+
+      Association_List := Tree.Child (Tree.Child (Call, 2), 2);
+      Edit_End         := Tree.Byte_Region (Call).Last;
+      Method           := Tree.Child (Tree.Child (Call, 1), 1);
+      loop
+         case To_Token_Enum (Tree.ID (Method)) is
+         when selected_component_ID | attribute_reference_ID =>
+            Method := Tree.Child (Method, 3);
+
+         when qualified_expression_ID =>
+            Method := Tree.Child (Method, 3); -- aggregate
+            if Tree.ID (Tree.Child (Method, 2)) = +association_list_ID then
+               Method := Tree.Child (Method, 2);
+               if Tree.RHS_Index (Method) = 1 then
+                  Temp := Tree.Find_Descendant (Tree.Child (Method, 1), 
+expression_ID);
+                  if Temp = Invalid_Node_Index then
+                     Unrecognized ("expression", Tree.Child (Method, 1), 
Edit_Begin);
+                  else
+                     Method := Temp;
+                     exit;
+                  end if;
+               else
+                  Unrecognized ("association", Method, Edit_Begin);
+               end if;
+            else
+               Unrecognized ("association_list", Method, Edit_Begin);
+            end if;
+
+         when IDENTIFIER_ID | STRING_LITERAL_ID =>
+            exit;
+         when others =>
+            Unrecognized ("supported token", Method, Edit_Begin);
+         end case;
+      end loop;
+
+      Temp := Tree.Find_Descendant (Association_List, +expression_ID);
+      if Temp = Invalid_Node_Index then
+         Unrecognized ("expression", Association_List, Edit_Begin);
+      else
+         Object := Temp;
+      end if;
+
+      --  Build remaining arg list in Result.
+      loop
+         if Tree.RHS_Index (Association_List) = 0 then
+            Result := Get_Text (Data, Tree, Tree.Child (Association_List, 3)) &
+              (if Length (Result) = 0 then "" else ", ") &
+              Result;
+            Association_List := Tree.Child (Association_List, 1);
+         else
+            --  The remaining element in Association_List is the first one, 
which is Object.
+            if Length (Result) > 0 then
+               Result := " (" & Result & ")";
+            end if;
+            exit;
+         end if;
+      end loop;
+      Result := (Get_Text (Data, Tree, Object) & "." & Get_Text (Data, Tree, 
Method)) & Result;
+      Put_Line ("[" & Edit_Action_Code & Edit_Begin'Image & Edit_End'Image & " 
""" &
+                  Elisp_Escape_Quotes (To_String (Result)) & """]");
+   end Method_Object_To_Object_Method;
+
+   procedure Object_Method_To_Method_Object
+     (Tree       : in     WisiToken.Syntax_Trees.Tree;
+      Data       : in out Parse_Data_Type;
+      Edit_Begin : in     WisiToken.Buffer_Pos)
+   is
+      --  Data.Tree contains one statement or declaration; Edit_Begin is at
+      --  start of a subprogram call. Convert the subprogram call from
+      --  Object.Method (...) to Method (Object, ...).
+      use Ada_Process_Actions;
+      use Standard.Ada.Strings.Unbounded;
+      use Standard.Ada.Text_IO;
+      use WisiToken.Syntax_Trees;
+
+      Call          : Node_Index := Find_ID_At (Tree, Data.Terminals, 
+name_ID, Edit_Begin);
+      Edit_End      : WisiToken.Buffer_Pos;
+      Object_Method : Valid_Node_Index;
+      Method        : Unbounded_String;
+      Object        : Unbounded_String;
+      Result        : Unbounded_String;
+   begin
+      if Call = Invalid_Node_Index then
+         --  Most likely the edit point is wrong.
+         raise SAL.Parameter_Error with "no 'name' at byte_pos" & 
Edit_Begin'Image;
+      elsif not (Tree.RHS_Index (Call) in 1 | 2 | 3) then
+         raise SAL.Parameter_Error with "no subprogram call found at byte_pos" 
& Edit_Begin'Image &
+           " (found node" & Call'Image & ")";
+      end if;
+
+      if WisiToken.Trace_Action > Detail then
+         Put_Line (";; refactoring node" & Call'Image & " '" & Data.Get_Text 
(Tree, Call) & "'");
+      end if;
+
+      if Tree.RHS_Index (Call) = 3 then
+         --  Code looks like: Container.Length'Old. We only want to edit
+         --  'Container.Length', keeping the trailing 'Old.
+         Call := Tree.Child (Tree.Child (Call, 1), 1);
+      end if;
+
+      Edit_End      := Tree.Byte_Region (Call).Last;
+      Object_Method := Tree.Child (Call, 1);
+         loop
+            case To_Token_Enum (Tree.ID (Object_Method)) is
+            when name_ID =>
+               Object_Method := Tree.Child (Object_Method, 1);
+
+            when selected_component_ID =>
+               Object := +Get_Text (Data, Tree, Tree.Child (Object_Method, 1));
+               Method := +Get_Text (Data, Tree, Tree.Child (Object_Method, 3));
+               exit;
+
+            when others =>
+               Unrecognized ("supported token", Object_Method, Edit_Begin);
+            end case;
+         end loop;
+
+         Result := Method & " (" & Object;
+         if Tree.RHS_Index (Call) = 1 then
+            Result := Result & ", " & Get_Text (Data, Tree, Tree.Child 
(Tree.Child (Call, 2), 2));
+         end if;
+         Result := Result & ")";
+         Put_Line ("[" & Edit_Action_Code & Edit_Begin'Image & Edit_End'Image 
& " """ &
+                     Elisp_Escape_Quotes (To_String (Result)) & """]");
+   end Object_Method_To_Method_Object;
+
+   procedure Element_Object_To_Object_Index
+     (Tree       : in     WisiToken.Syntax_Trees.Tree;
+      Data       : in out Parse_Data_Type;
+      Edit_Begin : in     WisiToken.Buffer_Pos)
+   is
+      --  Data.Tree contains one statement or declaration; Edit_Begin is at
+      --  start of a subprogram call. Convert the subprogram call from
+      --  Prefix.Element (Object, Index) to Object (Index).
+
+      use Ada_Process_Actions;
+      use Standard.Ada.Text_IO;
+      use WisiToken.Syntax_Trees;
+
+      Call             : Node_Index := Find_ID_At (Tree, Data.Terminals, 
+name_ID, Edit_Begin);
+      Edit_End         : WisiToken.Buffer_Pos;
+      Temp             : Node_Index;
+      Association_List : Node_Index;
+      Object           : Valid_Node_Index;
+      Index            : Valid_Node_Index;
+   begin
+      if Call = Invalid_Node_Index then
+         --  Most likely the edit point is wrong.
+         raise SAL.Parameter_Error with "no 'name' found at byte_pos" & 
Edit_Begin'Image;
+      elsif not (Tree.RHS_Index (Call) in 1 | 2 | 3) then
+         raise SAL.Parameter_Error with "no subprogram call found at byte_pos" 
& Edit_Begin'Image &
+           " (found node" & Call'Image & ")";
+      end if;
+
+      if WisiToken.Trace_Action > Detail then
+         Put_Line (";; refactoring node" & Call'Image & " '" & Data.Get_Text 
(Tree, Call) & "'");
+      end if;
+
+      if Tree.RHS_Index (Call) = 2 then
+         --  Code looks like: Element (Container, I).Op. We only want to edit
+         --  the subprogram call, keeping the trailing .Op.
+         Call := Tree.Child (Tree.Child (Call, 1), 1);
+
+      elsif Tree.RHS_Index (Call) = 3 then
+         --  Code looks like: Element (Container, I)'Old. We only want to edit
+         --  the subprogram call, keeping the trailing 'Old.
+         Call := Tree.Child (Tree.Child (Call, 1), 1);
+      end if;
+
+      Association_List := Tree.Child (Tree.Child (Call, 2), 2);
+      Edit_End         := Tree.Byte_Region (Call).Last;
+
+      if Tree.RHS_Index (Association_List) /= 0 then
+         Unrecognized ("two args", Association_List, Edit_Begin);
+      end if;
+
+      Temp := Tree.Find_Descendant (Association_List, +expression_ID);
+      if Temp = Invalid_Node_Index then
+         Unrecognized ("expression", Association_List, Edit_Begin);
+      else
+         Object := Temp;
+      end if;
+
+      Temp := Tree.Find_Descendant (Tree.Child (Association_List, 3), 
+expression_ID);
+      if Temp = Invalid_Node_Index then
+         Unrecognized ("expression", Association_List, Edit_Begin);
+      else
+         Index := Temp;
+      end if;
+
+      Put_Line
+        ("[" & Edit_Action_Code & Edit_Begin'Image & Edit_End'Image & " """ &
+           Elisp_Escape_Quotes (Get_Text (Data, Tree, Object) & " (" & 
Get_Text (Data, Tree, Index) & ")") &
+           """]");
+   end Element_Object_To_Object_Index;
+
+   procedure Object_Index_To_Element_Object
+     (Tree       : in     WisiToken.Syntax_Trees.Tree;
+      Data       : in out Parse_Data_Type;
+      Edit_Begin : in     WisiToken.Buffer_Pos)
+   is
+      --  Data.Tree contains one statement or declaration; Edit_Begin is at
+      --  start of a subprogram call. Convert the subprogram call from
+      --  Object (Index) to Element (Object, Index).
+
+      use Ada_Process_Actions;
+      use Standard.Ada.Text_IO;
+      use WisiToken.Syntax_Trees;
+
+      Call             : Node_Index := Find_ID_At (Tree, Data.Terminals, 
+name_ID, Edit_Begin);
+      Edit_End         : WisiToken.Buffer_Pos;
+      Temp             : Node_Index;
+      Association_List : Node_Index;
+      Object           : Valid_Node_Index;
+      Index            : Valid_Node_Index;
+   begin
+      if Call = Invalid_Node_Index then
+         --  Most likely the edit point is wrong.
+         raise SAL.Parameter_Error with "no 'name' found at byte_pos" & 
Edit_Begin'Image;
+      elsif not (Tree.RHS_Index (Call) in 1 | 2 | 3) then
+         raise SAL.Parameter_Error with "no subprogram call found at byte_pos" 
& Edit_Begin'Image &
+           " (found node" & Call'Image & ")";
+      end if;
+
+      if WisiToken.Trace_Action > Detail then
+         Put_Line (";; refactoring node" & Call'Image & " '" & Data.Get_Text 
(Tree, Call) & "'");
+      end if;
+
+      if Tree.RHS_Index (Call) = 2 then
+         --  Code looks like: Object (I).Component. We only want to edit
+         --  the subprogram call, keeping the trailing .Component.
+         Call := Tree.Child (Tree.Child (Call, 1), 1);
+
+      elsif Tree.RHS_Index (Call) = 3 then
+         --  Code looks like: Container (I)'Old. We only want to edit
+         --  the subprogram call, keeping the trailing 'Old.
+         Call := Tree.Child (Tree.Child (Call, 1), 1);
+      end if;
+
+      Object           := Tree.Child (Tree.Child (Call, 1), 1);
+      Association_List := Tree.Child (Tree.Child (Call, 2), 2);
+      Edit_End         := Tree.Byte_Region (Call).Last;
+
+      if Tree.RHS_Index (Association_List) /= 1 then
+         Unrecognized ("one args", Association_List, Edit_Begin);
+      end if;
+
+      Temp := Tree.Find_Descendant (Tree.Child (Association_List, 1), 
+expression_ID);
+      if Temp = Invalid_Node_Index then
+         Unrecognized ("expression", Association_List, Edit_Begin);
+      else
+         Index := Temp;
+      end if;
+
+      Put_Line
+        ("[" & Edit_Action_Code & Edit_Begin'Image & Edit_End'Image & " """ &
+           Elisp_Escape_Quotes
+             ("Element (" & Get_Text (Data, Tree, Object) & ", " & Get_Text 
(Data, Tree, Index) & ")") &
+           """]");
+   end Object_Index_To_Element_Object;
+
+   procedure Format_Parameter_List
+     (Tree       : in     WisiToken.Syntax_Trees.Tree;
+      Data       : in out Parse_Data_Type;
+      Edit_Begin : in     WisiToken.Buffer_Pos)
+   is separate;
+   --  Data.Tree contains a subprogram declaration or body; Edit_Begin is
+   --  at the start of a parameter list. Format the parameter list.
+   --
+   --  Handle virtual tokens as much as possible; at least closing paren.
+
+   ----------
+   --  Public subprograms, declaration order
 
    overriding
    procedure Initialize
      (Data              : in out Parse_Data_Type;
+      Lexer             : in     WisiToken.Lexer.Handle;
       Descriptor        : access constant WisiToken.Descriptor;
-      Source_File_Name  : in     String;
+      Base_Terminals    : in     WisiToken.Base_Token_Array_Access;
       Post_Parse_Action : in     Post_Parse_Action_Type;
       Begin_Line        : in     WisiToken.Line_Number_Type;
       End_Line          : in     WisiToken.Line_Number_Type;
@@ -104,7 +447,7 @@ package body Wisi.Ada is
       Last  : Integer := Index (Params, " ");
    begin
       Wisi.Initialize
-        (Wisi.Parse_Data_Type (Data), Descriptor, Source_File_Name, 
Post_Parse_Action, Begin_Line, End_Line,
+        (Wisi.Parse_Data_Type (Data), Lexer, Descriptor, Base_Terminals, 
Post_Parse_Action, Begin_Line, End_Line,
          Begin_Indent, "");
 
       Data.First_Comment_ID := +COMMENT_ID;
@@ -170,6 +513,41 @@ package body Wisi.Ada is
    end Initialize;
 
    overriding
+   procedure Refactor
+     (Data       : in out Parse_Data_Type;
+      Tree       : in     WisiToken.Syntax_Trees.Tree;
+      Action     : in     Positive;
+      Edit_Begin : in     WisiToken.Buffer_Pos)
+   is
+      --  Must match "ada-refactor-*" in ada-wisi.el
+      Method_Object_To_Object_Method : constant Positive := 1;
+      Object_Method_To_Method_Object : constant Positive := 2;
+      Element_Object_To_Object_Index : constant Positive := 3;
+      Object_Index_To_Element_Object : constant Positive := 4;
+      Format_Parameter_List          : constant Positive := 5;
+
+   begin
+      if WisiToken.Trace_Action > Detail then
+         Tree.Print_Tree (Data.Descriptor.all);
+      end if;
+      case Action is
+      when Method_Object_To_Object_Method =>
+         Wisi.Ada.Method_Object_To_Object_Method (Tree, Data, Edit_Begin);
+      when Object_Method_To_Method_Object =>
+         Wisi.Ada.Object_Method_To_Method_Object (Tree, Data, Edit_Begin);
+      when Element_Object_To_Object_Index =>
+         Wisi.Ada.Element_Object_To_Object_Index (Tree, Data, Edit_Begin);
+      when Object_Index_To_Element_Object =>
+         Wisi.Ada.Object_Index_To_Element_Object (Tree, Data, Edit_Begin);
+      when Format_Parameter_List =>
+         Wisi.Ada.Format_Parameter_List (Tree, Data, Edit_Begin);
+
+      when others =>
+         Standard.Ada.Text_IO.Put_Line ("(error ""unrecognized refactor action 
" & Action'Image & """)");
+      end case;
+   end Refactor;
+
+   overriding
    function Indent_Hanging_1
      (Data              : in out Parse_Data_Type;
       Tree              : in     Syntax_Trees.Tree;
diff --git a/packages/ada-mode/wisi-ada.ads b/packages/ada-mode/wisi-ada.ads
index 585e513..e1a1691 100644
--- a/packages/ada-mode/wisi-ada.ads
+++ b/packages/ada-mode/wisi-ada.ads
@@ -22,7 +22,7 @@ pragma License (Modified_GPL);
 
 package Wisi.Ada is
 
-   Language_Protocol_Version : constant String := "1";
+   Language_Protocol_Version : constant String := "2";
    --  Defines the data passed to Initialize in Params.
    --
    --  This value must match ada-wisi.el
@@ -53,8 +53,9 @@ package Wisi.Ada is
    overriding
    procedure Initialize
      (Data              : in out Parse_Data_Type;
+      Lexer             : in     WisiToken.Lexer.Handle;
       Descriptor        : access constant WisiToken.Descriptor;
-      Source_File_Name  : in     String;
+      Base_Terminals    : in     WisiToken.Base_Token_Array_Access;
       Post_Parse_Action : in     Post_Parse_Action_Type;
       Begin_Line        : in     WisiToken.Line_Number_Type;
       End_Line          : in     WisiToken.Line_Number_Type;
@@ -82,6 +83,13 @@ package Wisi.Ada is
      return Delta_Type;
    --  [1] ada-wisi-elisp-parse--indent-hanging
 
+   overriding
+   procedure Refactor
+     (Data       : in out Parse_Data_Type;
+      Tree       : in     WisiToken.Syntax_Trees.Tree;
+      Action     : in     Positive;
+      Edit_Begin : in     WisiToken.Buffer_Pos);
+
    ----------
    --  The following are declared in ada.wy %elisp_indent, and must match
    --  Language_Indent_Function.
diff --git a/packages/ada-mode/wisi-gpr.adb b/packages/ada-mode/wisi-gpr.adb
index 60d7df8..7007114 100644
--- a/packages/ada-mode/wisi-gpr.adb
+++ b/packages/ada-mode/wisi-gpr.adb
@@ -24,8 +24,9 @@ package body Wisi.Gpr is
    overriding
    procedure Initialize
      (Data              : in out Parse_Data_Type;
+      Lexer             : in     WisiToken.Lexer.Handle;
       Descriptor        : access constant WisiToken.Descriptor;
-      Source_File_Name  : in     String;
+      Base_Terminals    : in     WisiToken.Base_Token_Array_Access;
       Post_Parse_Action : in     Post_Parse_Action_Type;
       Begin_Line        : in     WisiToken.Line_Number_Type;
       End_Line          : in     WisiToken.Line_Number_Type;
@@ -38,7 +39,7 @@ package body Wisi.Gpr is
       Last  : Integer := Index (Params, " ");
    begin
       Wisi.Initialize
-        (Wisi.Parse_Data_Type (Data), Descriptor, Source_File_Name, 
Post_Parse_Action, Begin_Line, End_Line,
+        (Wisi.Parse_Data_Type (Data), Lexer, Descriptor, Base_Terminals, 
Post_Parse_Action, Begin_Line, End_Line,
          Begin_Indent, "");
 
       Data.First_Comment_ID := +COMMENT_ID;
diff --git a/packages/ada-mode/wisi-gpr.ads b/packages/ada-mode/wisi-gpr.ads
index aab5e0d..f3ef299 100644
--- a/packages/ada-mode/wisi-gpr.ads
+++ b/packages/ada-mode/wisi-gpr.ads
@@ -41,8 +41,9 @@ package Wisi.Gpr is
    overriding
    procedure Initialize
      (Data              : in out Parse_Data_Type;
+      Lexer             : in     WisiToken.Lexer.Handle;
       Descriptor        : access constant WisiToken.Descriptor;
-      Source_File_Name  : in     String;
+      Base_Terminals    : in     WisiToken.Base_Token_Array_Access;
       Post_Parse_Action : in     Post_Parse_Action_Type;
       Begin_Line        : in     WisiToken.Line_Number_Type;
       End_Line          : in     WisiToken.Line_Number_Type;
diff --git a/packages/ada-mode/wisitoken-parse-lr-mckenzie_recover-ada.adb 
b/packages/ada-mode/wisitoken-parse-lr-mckenzie_recover-ada.adb
index 763850a..79bc58b 100644
--- a/packages/ada-mode/wisitoken-parse-lr-mckenzie_recover-ada.adb
+++ b/packages/ada-mode/wisitoken-parse-lr-mckenzie_recover-ada.adb
@@ -72,8 +72,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
       Config            : in     Configuration)
    with Pre => Config.Check_Status.Label /= Ok
    is
-      use all type SAL.Base_Peek_Type;
-
       procedure Put (Message : in String; Config : in Configuration)
       is begin
          Put (Message, Trace, Parser_Label, Terminals, Config);
@@ -249,7 +247,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
                        when protected_type_declaration_ID | 
single_protected_declaration_ID => +protected_definition_ID,
                        when others =>  +identifier_opt_ID)));
 
-                  if New_Config.Stack (1).Token.Min_Terminal_Index = 
Invalid_Token_Index then
+                  if New_Config.Stack.Peek.Token.Min_Terminal_Index = 
Invalid_Token_Index then
                      --  'end' is on top of stack. We want to set 
Current_Shared_Token to
                      --  'end'; we can't if it has an invalid index (which it 
has if it was
                      --  pushed after a previous fix).
@@ -341,9 +339,10 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
             return;
          end if;
 
-         if Syntax_Trees.Invalid_Node_Index = Tree.Find_Child (Config.Stack 
(4).Tree_Index, +EXCEPTION_ID) then
+         if Syntax_Trees.Invalid_Node_Index = Tree.Find_Child 
(Config.Stack.Peek (4).Tree_Index, +EXCEPTION_ID) then
             --  'exception' not found; case 1a - assume extra 'end [keyword] 
;'; delete it.
             declare
+               use Config_Op_Arrays;
                New_Config     : Configuration := Config;
                Ops            : Config_Op_Arrays.Vector renames New_Config.Ops;
                Stack          : Recover_Stacks.Stack renames New_Config.Stack;
@@ -408,12 +407,15 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
                   raise Bad_Config;
                end case;
 
-               Ops.Append ((Delete, +END_ID, 
End_Item.Token.Min_Terminal_Index));
+               if not Has_Space (Ops, 3) then
+                  raise Bad_Config;
+               end if;
+               Append (Ops, (Delete, +END_ID, 
End_Item.Token.Min_Terminal_Index));
                if Keyword_Item.Token.ID /= Invalid_Token_ID then
-                  Ops.Append ((Delete, Keyword_Item.Token.ID, 
Keyword_Item.Token.Min_Terminal_Index));
+                  Append (Ops, (Delete, Keyword_Item.Token.ID, 
Keyword_Item.Token.Min_Terminal_Index));
                end if;
-               --  We don't need to delete the identifier|name ; it is missing 
and therefore empty.
-               Ops.Append ((Delete, +SEMICOLON_ID, 
Semicolon_Item.Token.Min_Terminal_Index));
+               --  We don't need to delete the identifier|name ; it is missing 
and therefor empty.
+               Append (Ops, (Delete, +SEMICOLON_ID, 
Semicolon_Item.Token.Min_Terminal_Index));
 
                New_Config.Current_Shared_Token := Config.Current_Shared_Token; 
--  After pushed_back SEMICOLON.
 
@@ -684,6 +686,8 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
       Config            : in     Configuration)
    with Pre => Config.Check_Status.Label = Ok
    is
+      use Config_Op_Arrays;
+      use Sorted_Insert_Delete_Arrays, Insert_Delete_Array_Refs;
       use all type Standard.Ada.Containers.Count_Type;
 
       procedure Put (Message : in String; Config : in Configuration)
@@ -692,7 +696,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
       end Put;
    begin
       if Config.Error_Token.ID = +COLON_ID and
-        Config.Stack (1).Token.ID = +IDENTIFIER_ID
+        Config.Stack.Peek.Token.ID = +IDENTIFIER_ID
       then
          --  Code looks like:
          --
@@ -708,8 +712,9 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
          --  Note that if the user was converting to an assignment, the error
          --  would be on 'constant', not ':'.
 
-         if Config.Insert_Delete.Length > 0 and then
-           Token_Index (Config.Insert_Delete 
(Config.Insert_Delete.Last_Index)) >= Config.Current_Shared_Token
+         if Length (Config.Insert_Delete) > 0 and then
+           Token_Index (Constant_Ref (Config.Insert_Delete, Last_Index 
(Config.Insert_Delete))) >=
+           Config.Current_Shared_Token
          then
             --  Can't delete tokens from here
             return;
@@ -752,8 +757,8 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
          --  this similar to a semantic check Extra_Name_Error, and the
          --  solutions are similar.
 
-         if Config.Stack (1).Token.ID = +IDENTIFIER_ID and
-           Config.Stack (2).Token.ID = +END_ID
+         if Config.Stack.Peek.Token.ID = +IDENTIFIER_ID and
+           Config.Stack.Peek (2).Token.ID = +END_ID
          then
             --  The input looks like one of:
             --
@@ -797,7 +802,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
                       +sequence_of_statements_opt_ID));
                end if;
 
-               case To_Token_Enum (New_Config_1.Stack (3).Token.ID) is
+               case To_Token_Enum (New_Config_1.Stack.Peek (3).Token.ID) is
                when block_label_opt_ID =>
                   --  no 'declare'; either case 1 or 2
 
@@ -825,7 +830,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
                when others =>
                   if Trace_McKenzie > Outline then
                      Put ("Language_Fixes " & Label & " missing case " & Image
-                            (New_Config_1.Stack (3).Token.ID, Descriptor), 
Config);
+                            (New_Config_1.Stack.Peek (3).Token.ID, 
Descriptor), Config);
                      Trace.Put_Line ("... new_config stack: " & Image 
(New_Config_1.Stack, Descriptor));
                   end if;
                   return;
@@ -834,7 +839,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
                if Trace_McKenzie > Detail then
                   Put ("Language_Fixes " & Label, New_Config_1);
 
-                  if New_Config_2.Ops.Length > 0 then
+                  if Length (New_Config_2.Ops) > 0 then
                      Put ("Language_Fixes " & Label, New_Config_2);
                   end if;
                end if;
@@ -861,7 +866,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
          --  Minimal_Complete_Actions does not handle this case well; it
          --  ignores the name.
          declare
-            use all type SAL.Base_Peek_Type;
             End_ID_Actions : constant Minimal_Action_Arrays.Vector := 
Parse_Table.States
               (Config.Stack.Peek.State).Minimal_Complete_Actions;
             End_Name       : constant String := Lexer.Buffer_Text 
(Config.Error_Token.Byte_Region);
@@ -1032,7 +1036,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
       Matching_Tokens         :    out Token_ID_Arrays.Vector;
       Forbid_Minimal_Complete :    out Boolean)
    is
-      use all type SAL.Base_Peek_Type;
       use Ada_Process_Actions;
       use Token_ID_Arrays;
 
diff --git a/packages/wisi/NEWS b/packages/wisi/NEWS
index 28f737c..bb8f8c6 100644
--- a/packages/wisi/NEWS
+++ b/packages/wisi/NEWS
@@ -1,13 +1,56 @@
 GNU Emacs wisi NEWS -- history of user-visible changes.
 
 Copyright (C) 2019 Free Software Foundation, Inc.
-See the end of the file for license conditions.
 
 Please send wisi bug reports to address@hidden, with
 'wisi' in the subject. If possible, use M-x report-emacs-bug.
 
 
 * wisi
+13 Aug 2019
+
+** parser process protocol version 3
+
+** Support for the elisp parser and lexer is deleted; only the Ada
+   process parser is supported.
+
+** New user variable `wisi-indent-context-lines' specifies the minimum
+   number of lines before point to include in a parse for indenting a
+   single line. This gives better results when indenting in a nested
+   'if then else', for example. The default value is 0; you must
+   change it to see an effect.
+
+** Error correction is faster by approximately 30%;
+   %mckenzie_enqueue_limit can be raised accordingly.
+
+** %mckenzie_enqueue_limit is now applied to the total of all parsers
+    in recovery; previously, it was applied to each parser separately.
+    Applying to the total gives a more consistent maximum user wait
+    time for recovery, at the cost of not finding solutions when there
+    are many parsers involved. You may want to increase
+    %mckenzie_enqueue_limit for this as well.
+
+** In the process parser, `wisi-statement-start' now sets 'containing'
+   in all contained caches to the start token, if not set already;
+   previously it only did this if the token was mentioned in the
+   `wisi-statement-start' action. This makes `wisi-containing-action'
+   unnecessary.
+
+** `wisi-containing-action' is deleted.
+
+** An argument of `wisi-motion-action' that is a vector may now
+   provide only one token ID. That token ID is searched for in the
+   containing token region, and the motion token chain starting at the
+   first one found is included in the current right hand side motion
+   token chain.
+
+** The elisp parser and lexer are deleted.
+
+** The process parser supports a new parse command `wisi-refactor',
+   which returns a new message "Edit". It is intended for performing
+   syntax-guided refactoring of code statements.
+
+* wisi 2.1.1
 11 Jul 2019
 
 ** parser process protocol version 3
diff --git a/packages/wisi/README b/packages/wisi/README
index f7fc4eb..c7176d2 100644
--- a/packages/wisi/README
+++ b/packages/wisi/README
@@ -1,4 +1,4 @@
-Emacs wisi package 2.1.1
+Emacs wisi package 2.2.0
 
 The wisi package provides utilities for using generalized LALR parsers
 (in elisp or external processes) to do indentation, fontification, and
diff --git a/packages/ada-mode/emacs_wisi_common_parse.adb 
b/packages/wisi/emacs_wisi_common_parse.adb
similarity index 72%
rename from packages/ada-mode/emacs_wisi_common_parse.adb
rename to packages/wisi/emacs_wisi_common_parse.adb
index e7b7666..f74ce37 100644
--- a/packages/ada-mode/emacs_wisi_common_parse.adb
+++ b/packages/wisi/emacs_wisi_common_parse.adb
@@ -193,7 +193,32 @@ package body Emacs_Wisi_Common_Parse is
       end return;
    end Get_Parse_Params;
 
-   procedure Parse_Stream
+   function Get_Refactor_Params (Command_Line : in String; Last : in out 
Integer) return Refactor_Params
+   is
+      use WisiToken;
+   begin
+      return Result : Refactor_Params do
+         --  We don't use an aggregate, to enforce execution order.
+         --  Match wisi-process-parse.el wisi-process--send-refactor
+
+         Result.Refactor_Action    := Get_Integer (Command_Line, Last);
+         Result.Source_File_Name   := +Get_String (Command_Line, Last);
+         Result.Parse_Region.First := WisiToken.Buffer_Pos (Get_Integer 
(Command_Line, Last));
+         Result.Parse_Region.Last  := WisiToken.Buffer_Pos (Get_Integer 
(Command_Line, Last) - 1);
+
+         Result.Edit_Begin           := WisiToken.Buffer_Pos (Get_Integer 
(Command_Line, Last));
+         Result.Parse_Begin_Char_Pos := WisiToken.Buffer_Pos (Get_Integer 
(Command_Line, Last));
+         Result.Parse_Begin_Line     := WisiToken.Line_Number_Type 
(Get_Integer (Command_Line, Last));
+         Result.Parse_End_Line       := WisiToken.Line_Number_Type 
(Get_Integer (Command_Line, Last));
+         Result.Debug_Mode           := 1 = Get_Integer (Command_Line, Last);
+         Result.Parse_Verbosity      := Get_Integer (Command_Line, Last);
+         Result.Action_Verbosity     := Get_Integer (Command_Line, Last);
+         Result.Max_Parallel         := Get_Integer (Command_Line, Last);
+         Result.Byte_Count           := Get_Integer (Command_Line, Last);
+      end return;
+   end Get_Refactor_Params;
+
+   procedure Process_Stream
      (Name                      : in     String;
       Language_Protocol_Version : in     String;
       Partial_Parse_Active      : in out Boolean;
@@ -254,7 +279,7 @@ package body Emacs_Wisi_Common_Parse is
             Put_Line (";; " & Command_Line);
 
             if Match ("parse") then
-               --  Args: see wisi-process-parse.el 
wisi-process-parse--send-parse, --send-noop
+               --  Args: see wisi-process-parse.el 
wisi-process-parse--send-parse
                --  Input: <source text>
                --  Response:
                --  [response elisp vector]...
@@ -286,17 +311,21 @@ package body Emacs_Wisi_Common_Parse is
 
                   Partial_Parse_Active := Params.Partial_Parse_Active;
 
-                  --  Default Enable_McKenzie_Recover is False if there is no 
McKenzie
-                  --  information; don't override that.
-                  Parser.Enable_McKenzie_Recover :=
-                    (if Params.McKenzie_Disable = 0
-                     then Parser.Enable_McKenzie_Recover
-                     else False);
+                  if WisiToken.Parse.LR.McKenzie_Defaulted (Parser.Table.all) 
then
+                     --  There is no McKenzie information; don't override that.
+                     null;
+                  elsif Params.McKenzie_Disable = -1 then
+                     --  Use default
+                     Parser.Enable_McKenzie_Recover := True;
+                  else
+                     Parser.Enable_McKenzie_Recover := Params.McKenzie_Disable 
= 0;
+                  end if;
 
                   Parse_Data.Initialize
                     (Post_Parse_Action => Params.Post_Parse_Action,
+                     Lexer             => Parser.Lexer,
                      Descriptor        => Descriptor'Unrestricted_Access,
-                     Source_File_Name  => -Params.Source_File_Name,
+                     Base_Terminals    => Parser.Terminals'Unrestricted_Access,
                      Begin_Line        => Params.Begin_Line,
                      End_Line          => Params.End_Line,
                      Begin_Indent      => Params.Begin_Indent,
@@ -346,6 +375,83 @@ package body Emacs_Wisi_Common_Parse is
                   Put_Line ("(error """ & Ada.Exceptions.Exception_Message (E) 
& """)");
                end;
 
+            elsif Match ("refactor") then
+               --  Args: see wisi-process-parse.el 
wisi-process-parse--send-refactor
+               --  Input: <source text>
+               --  Response:
+               --  [edit elisp vector]...
+               --  prompt
+               declare
+                  Params : constant Refactor_Params := Get_Refactor_Params 
(Command_Line, Last);
+                  Buffer : Ada.Strings.Unbounded.String_Access;
+
+                  procedure Clean_Up
+                  is
+                     use all type SAL.Base_Peek_Type;
+                  begin
+                     Parser.Lexer.Discard_Rest_Of_Input;
+                     if Parser.Parsers.Count > 0 then
+                        Parse_Data.Put
+                          (Parser.Lexer.Errors,
+                           Parser.Parsers.First.State_Ref.Errors,
+                           Parser.Parsers.First.State_Ref.Tree);
+                     end if;
+                     Ada.Strings.Unbounded.Free (Buffer);
+                  end Clean_Up;
+
+               begin
+                  Trace_Parse  := Params.Parse_Verbosity;
+                  Trace_Action := Params.Action_Verbosity;
+                  Debug_Mode   := Params.Debug_Mode;
+
+                  Partial_Parse_Active := True;
+
+                  Parse_Data.Initialize
+                    (Post_Parse_Action => Wisi.Navigate, -- mostly ignored
+                     Lexer             => Parser.Lexer,
+                     Descriptor        => Descriptor'Unrestricted_Access,
+                     Base_Terminals    => Parser.Terminals'Unrestricted_Access,
+                     Begin_Line        => Params.Parse_Begin_Line,
+                     End_Line          => Params.Parse_End_Line,
+                     Begin_Indent      => 0,
+                     Params            => "");
+
+                  if Params.Max_Parallel > 0 then
+                     Parser.Max_Parallel := SAL.Base_Peek_Type 
(Params.Max_Parallel);
+                  end if;
+
+                  Buffer := new String (Integer (Params.Parse_Region.First) .. 
Integer (Params.Parse_Region.Last));
+
+                  Read_Input (Buffer (Buffer'First)'Address, 
Params.Byte_Count);
+
+                  Parser.Lexer.Reset_With_String_Access
+                    (Buffer, Params.Source_File_Name, 
Params.Parse_Begin_Char_Pos, Params.Parse_Begin_Line);
+                  begin
+                     Parser.Parse;
+                  exception
+                  when WisiToken.Partial_Parse =>
+                     null;
+                  end;
+                  Parser.Execute_Actions;
+                  Parse_Data.Refactor (Parser.Parsers.First_State_Ref.Tree, 
Params.Refactor_Action, Params.Edit_Begin);
+                  Clean_Up;
+
+               exception
+               when Syntax_Error =>
+                  Clean_Up;
+                  Put_Line ("(parse_error ""refactor " & 
Params.Parse_Region.First'Image &
+                              Params.Parse_Region.Last'Image & ": syntax 
error"")");
+
+               when E : Parse_Error =>
+                  Clean_Up;
+                  Put_Line ("(parse_error ""refactor " & 
Params.Parse_Region.First'Image &
+                              Params.Parse_Region.Last'Image & ": " & 
Ada.Exceptions.Exception_Message (E) & """)");
+
+               when E : others => -- includes Fatal_Error
+                  Clean_Up;
+                  Put_Line ("(error """ & Ada.Exceptions.Exception_Message (E) 
& """)");
+               end;
+
             elsif Match ("noop") then
                --  Args: <source byte count>
                --  Input: <source text>
@@ -396,6 +502,6 @@ package body Emacs_Wisi_Common_Parse is
            Ada.Exceptions.Exception_Message (E) & """)");
       Put_Line (GNAT.Traceback.Symbolic.Symbolic_Traceback (E));
 
-   end Parse_Stream;
+   end Process_Stream;
 
 end Emacs_Wisi_Common_Parse;
diff --git a/packages/ada-mode/emacs_wisi_common_parse.ads 
b/packages/wisi/emacs_wisi_common_parse.ads
similarity index 78%
rename from packages/ada-mode/emacs_wisi_common_parse.ads
rename to packages/wisi/emacs_wisi_common_parse.ads
index a5d0604..1d75de6 100644
--- a/packages/ada-mode/emacs_wisi_common_parse.ads
+++ b/packages/wisi/emacs_wisi_common_parse.ads
@@ -1,121 +1,154 @@
---  Abstract :
---
---  Common utilities for Gen_Emacs_Wisi_*_Parse
---
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
---
---  This program is free software; you can redistribute it and/or
---  modify it under terms of the GNU General Public License as
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version. This program is distributed in the
---  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
---  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
---  PURPOSE. See the GNU General Public License for more details. You
---  should have received a copy of the GNU General Public License
---  distributed with this program; see file COPYING. If not, write to
---  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
---  MA 02110-1335, USA.
-
-pragma License (GPL);
-
-with Ada.Strings.Unbounded;
-with System;
-with Wisi;
-with WisiToken.Parse.LR.Parser;
-package Emacs_Wisi_Common_Parse is
-
-   Protocol_Version : constant String := "3";
-   --  Protocol_Version defines the data sent between elisp and the
-   --  background process, except for the language-specific parameters,
-   --  which are defined by the Language_Protocol_Version parameter to
-   --  Parse_Stream, below.
-   --
-   --  This value must match wisi-process-parse.el
-   --  wisi-process-parse-protocol-version.
-   --
-   --  See wisi-process-parse.el functions, and this package body, for
-   --  the implementation of the protocol.
-   --
-   --  Only changes once per wisi release. Increment as soon as required,
-   --  record new version in NEWS-wisi.text.
-
-   Prompt : constant String := ";;> ";
-
-   Protocol_Error : exception;
-   Finish         : exception;
-
-   procedure Usage (Name : in String);
-
-   procedure Read_Input (A : System.Address; N : Integer);
-
-   function Get_Command_Length return Integer;
-
-   function Get_String
-     (Source : in     String;
-      Last   : in out Integer)
-     return String;
-
-   function Get_Integer
-     (Source : in     String;
-      Last   : in out Integer)
-     return Integer;
-
-   type Process_Start_Params is record
-      Recover_Log_File_Name : Ada.Strings.Unbounded.Unbounded_String;
-      --  log enabled if non-empty.
-   end record;
-
-   function Get_Process_Start_Params return Process_Start_Params;
-   --  Get from Ada.Command_Line. Handles --help by outputing help,
-   --  raising Finish.
-
-   type Parse_Params is record
-      Post_Parse_Action : Wisi.Post_Parse_Action_Type;
-      Source_File_Name  : Ada.Strings.Unbounded.Unbounded_String;
-
-      Begin_Byte_Pos : Integer;
-      --  Source file byte position of first char sent; start parse here.
-
-      End_Byte_Pos : Integer;
-      --  Byte position of last char sent.
-
-      Goal_Byte_Pos : Integer;
-      --  Byte position of end of desired parse region; terminate parse at
-      --  or after here.
-
-      Begin_Char_Pos : WisiToken.Buffer_Pos;
-      --  Char position of first char sent.
-
-      Begin_Line : WisiToken.Line_Number_Type;
-      End_Line   : WisiToken.Line_Number_Type;
-      --  Line number of line containing Begin_Byte_Pos, End_Byte_Pos
-
-      Begin_Indent : Integer;
-      --  Indentation of Line_Begin
-
-      Partial_Parse_Active : Boolean;
-      Debug_Mode           : Boolean;
-      Parse_Verbosity      : Integer;
-      McKenzie_Verbosity   : Integer;
-      Action_Verbosity     : Integer;
-      McKenzie_Disable     : Integer;
-      Task_Count           : Integer;
-      Check_Limit          : Integer;
-      Enqueue_Limit        : Integer;
-      Max_Parallel         : Integer;
-      Byte_Count           : Integer;
-      --  Count of bytes of source file sent.
-   end record;
-
-   function Get_Parse_Params (Command_Line : in String; Last : in out Integer) 
return Parse_Params;
-
-   procedure Parse_Stream
-     (Name                      : in     String;
-      Language_Protocol_Version : in     String;
-      Partial_Parse_Active      : in out Boolean;
-      Params                    : in     Process_Start_Params;
-      Parser                    : in out WisiToken.Parse.LR.Parser.Parser;
-      Parse_Data                : in out Wisi.Parse_Data_Type'Class;
-      Descriptor                : in     WisiToken.Descriptor);
-
-end Emacs_Wisi_Common_Parse;
+--  Abstract :
+--
+--  Common utilities for Gen_Emacs_Wisi_*_Parse
+--
+--  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--
+--  This program is free software; you can redistribute it and/or
+--  modify it under terms of the GNU General Public License as
+--  published by the Free Software Foundation; either version 3, or (at
+--  your option) any later version. This program is distributed in the
+--  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+--  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+--  PURPOSE. See the GNU General Public License for more details. You
+--  should have received a copy of the GNU General Public License
+--  distributed with this program; see file COPYING. If not, write to
+--  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
+--  MA 02110-1335, USA.
+
+pragma License (GPL);
+
+with Ada.Strings.Unbounded;
+with System;
+with Wisi;
+with WisiToken.Parse.LR.Parser;
+package Emacs_Wisi_Common_Parse is
+
+   Protocol_Version : constant String := "4";
+   --  Protocol_Version defines the data sent between elisp and the
+   --  background process, except for the language-specific parameters,
+   --  which are defined by the Language_Protocol_Version parameter to
+   --  Parse_Stream, below.
+   --
+   --  This value must match wisi-process-parse.el
+   --  wisi-process-parse-protocol-version.
+   --
+   --  See wisi-process-parse.el functions, and this package body, for
+   --  the implementation of the protocol.
+   --
+   --  Only changes once per wisi release. Increment as soon as required,
+   --  record new version in NEWS-wisi.text.
+
+   Prompt : constant String := ";;> ";
+
+   Protocol_Error : exception;
+   Finish         : exception;
+
+   procedure Usage (Name : in String);
+
+   procedure Read_Input (A : System.Address; N : Integer);
+
+   function Get_Command_Length return Integer;
+
+   function Get_String
+     (Source : in     String;
+      Last   : in out Integer)
+     return String;
+
+   function Get_Integer
+     (Source : in     String;
+      Last   : in out Integer)
+     return Integer;
+
+   type Process_Start_Params is record
+      Recover_Log_File_Name : Ada.Strings.Unbounded.Unbounded_String;
+      --  log enabled if non-empty.
+   end record;
+
+   function Get_Process_Start_Params return Process_Start_Params;
+   --  Get from Ada.Command_Line. Handles --help by outputing help,
+   --  raising Finish.
+
+   procedure Process_Stream
+     (Name                      : in     String;
+      Language_Protocol_Version : in     String;
+      Partial_Parse_Active      : in out Boolean;
+      Params                    : in     Process_Start_Params;
+      Parser                    : in out WisiToken.Parse.LR.Parser.Parser;
+      Parse_Data                : in out Wisi.Parse_Data_Type'Class;
+      Descriptor                : in     WisiToken.Descriptor);
+
+   ----------
+   --  Parse command
+
+   type Parse_Params is record
+      Post_Parse_Action : Wisi.Post_Parse_Action_Type;
+      Source_File_Name  : Ada.Strings.Unbounded.Unbounded_String;
+
+      Begin_Byte_Pos : Integer;
+      --  Source file byte position of first char sent; start parse here.
+
+      End_Byte_Pos : Integer;
+      --  Byte position of last char sent.
+
+      Goal_Byte_Pos : Integer;
+      --  Byte position of end of desired parse region; terminate parse at
+      --  or after here.
+
+      Begin_Char_Pos : WisiToken.Buffer_Pos;
+      --  Char position of first char sent.
+
+      Begin_Line : WisiToken.Line_Number_Type;
+      End_Line   : WisiToken.Line_Number_Type;
+      --  Line number of line containing Begin_Byte_Pos, End_Byte_Pos
+
+      Begin_Indent : Integer;
+      --  Indentation of Line_Begin
+
+      Partial_Parse_Active : Boolean;
+      Debug_Mode           : Boolean;
+      Parse_Verbosity      : Integer;
+      McKenzie_Verbosity   : Integer;
+      Action_Verbosity     : Integer;
+      McKenzie_Disable     : Integer;
+      Task_Count           : Integer;
+      Check_Limit          : Integer;
+      Enqueue_Limit        : Integer;
+      Max_Parallel         : Integer;
+      Byte_Count           : Integer;
+      --  Count of bytes of source file sent.
+   end record;
+
+   function Get_Parse_Params (Command_Line : in String; Last : in out Integer) 
return Parse_Params;
+
+   ----------
+   --  Refactor command
+
+   type Refactor_Params is record
+      Refactor_Action  : Positive; -- Language-specific
+      Source_File_Name : Ada.Strings.Unbounded.Unbounded_String;
+
+      Parse_Region : WisiToken.Buffer_Region;
+      --  Source file byte region to parse.
+
+      Edit_Begin : WisiToken.Buffer_Pos;
+      --  Source file byte position at start of expression to refactor.
+
+      Parse_Begin_Char_Pos : WisiToken.Buffer_Pos;
+      --  Char position of first char sent.
+
+      Parse_Begin_Line : WisiToken.Line_Number_Type;
+      Parse_End_Line   : WisiToken.Line_Number_Type;
+      --  Line numbers of lines containing Parse_Begin_Byte_Pos, 
Parse_End_Byte_Pos
+
+      Debug_Mode       : Boolean;
+      Parse_Verbosity  : Integer;
+      Action_Verbosity : Integer;
+      Max_Parallel     : Integer;
+      Byte_Count       : Integer;
+      --  Count of bytes of source file sent.
+   end record;
+
+   function Get_Refactor_Params (Command_Line : in String; Last : in out 
Integer) return Refactor_Params;
+
+end Emacs_Wisi_Common_Parse;
diff --git a/packages/ada-mode/gen_emacs_wisi_lr_parse.adb 
b/packages/wisi/gen_emacs_wisi_lr_parse.adb
similarity index 92%
rename from packages/ada-mode/gen_emacs_wisi_lr_parse.adb
rename to packages/wisi/gen_emacs_wisi_lr_parse.adb
index c823679..951a871 100644
--- a/packages/ada-mode/gen_emacs_wisi_lr_parse.adb
+++ b/packages/wisi/gen_emacs_wisi_lr_parse.adb
@@ -34,6 +34,6 @@ begin
       Trace'Unrestricted_Access,
       Parse_Data'Unchecked_Access);
 
-   Parse_Stream (Name, Language_Protocol_Version, Partial_Parse_Active, 
Params, Parser, Parse_Data, Descriptor);
+   Process_Stream (Name, Language_Protocol_Version, Partial_Parse_Active, 
Params, Parser, Parse_Data, Descriptor);
 
 end Gen_Emacs_Wisi_LR_Parse;
diff --git a/packages/ada-mode/gen_emacs_wisi_lr_parse.ads 
b/packages/wisi/gen_emacs_wisi_lr_parse.ads
similarity index 100%
rename from packages/ada-mode/gen_emacs_wisi_lr_parse.ads
rename to packages/wisi/gen_emacs_wisi_lr_parse.ads
diff --git a/packages/ada-mode/gen_emacs_wisi_lr_text_rep_parse.adb 
b/packages/wisi/gen_emacs_wisi_lr_text_rep_parse.adb
similarity index 91%
rename from packages/ada-mode/gen_emacs_wisi_lr_text_rep_parse.adb
rename to packages/wisi/gen_emacs_wisi_lr_text_rep_parse.adb
index 7296695..f74144c 100644
--- a/packages/ada-mode/gen_emacs_wisi_lr_text_rep_parse.adb
+++ b/packages/wisi/gen_emacs_wisi_lr_text_rep_parse.adb
@@ -39,6 +39,6 @@ begin
       Parse_Data'Unchecked_Access,
       Ada.Directories.Containing_Directory (Ada.Command_Line.Command_Name) & 
"/" & Text_Rep_File_Name);
 
-   Parse_Stream (Name, Language_Protocol_Version, Partial_Parse_Active, 
Params, Parser, Parse_Data, Descriptor);
+   Process_Stream (Name, Language_Protocol_Version, Partial_Parse_Active, 
Params, Parser, Parse_Data, Descriptor);
 
 end Gen_Emacs_Wisi_LR_Text_Rep_Parse;
diff --git a/packages/ada-mode/gen_emacs_wisi_lr_text_rep_parse.ads 
b/packages/wisi/gen_emacs_wisi_lr_text_rep_parse.ads
similarity index 100%
rename from packages/ada-mode/gen_emacs_wisi_lr_text_rep_parse.ads
rename to packages/wisi/gen_emacs_wisi_lr_text_rep_parse.ads
diff --git a/packages/ada-mode/gen_emacs_wisi_packrat_parse.adb 
b/packages/wisi/gen_emacs_wisi_packrat_parse.adb
similarity index 100%
rename from packages/ada-mode/gen_emacs_wisi_packrat_parse.adb
rename to packages/wisi/gen_emacs_wisi_packrat_parse.adb
diff --git a/packages/ada-mode/gen_emacs_wisi_packrat_parse.ads 
b/packages/wisi/gen_emacs_wisi_packrat_parse.ads
similarity index 100%
rename from packages/ada-mode/gen_emacs_wisi_packrat_parse.ads
rename to packages/wisi/gen_emacs_wisi_packrat_parse.ads
diff --git a/packages/ada-mode/gen_run_wisi_libadalang_parse.adb 
b/packages/wisi/gen_run_wisi_libadalang_parse.adb
similarity index 100%
rename from packages/ada-mode/gen_run_wisi_libadalang_parse.adb
rename to packages/wisi/gen_run_wisi_libadalang_parse.adb
diff --git a/packages/ada-mode/gen_run_wisi_libadalang_parse.ads 
b/packages/wisi/gen_run_wisi_libadalang_parse.ads
similarity index 100%
rename from packages/ada-mode/gen_run_wisi_libadalang_parse.ads
rename to packages/wisi/gen_run_wisi_libadalang_parse.ads
diff --git a/packages/ada-mode/gen_run_wisi_lr_parse.adb 
b/packages/wisi/gen_run_wisi_lr_parse.adb
similarity index 100%
rename from packages/ada-mode/gen_run_wisi_lr_parse.adb
rename to packages/wisi/gen_run_wisi_lr_parse.adb
diff --git a/packages/ada-mode/gen_run_wisi_lr_parse.ads 
b/packages/wisi/gen_run_wisi_lr_parse.ads
similarity index 100%
rename from packages/ada-mode/gen_run_wisi_lr_parse.ads
rename to packages/wisi/gen_run_wisi_lr_parse.ads
diff --git a/packages/ada-mode/gen_run_wisi_lr_text_rep_parse.adb 
b/packages/wisi/gen_run_wisi_lr_text_rep_parse.adb
similarity index 100%
rename from packages/ada-mode/gen_run_wisi_lr_text_rep_parse.adb
rename to packages/wisi/gen_run_wisi_lr_text_rep_parse.adb
diff --git a/packages/ada-mode/gen_run_wisi_lr_text_rep_parse.ads 
b/packages/wisi/gen_run_wisi_lr_text_rep_parse.ads
similarity index 100%
rename from packages/ada-mode/gen_run_wisi_lr_text_rep_parse.ads
rename to packages/wisi/gen_run_wisi_lr_text_rep_parse.ads
diff --git a/packages/ada-mode/gen_run_wisi_packrat_parse.adb 
b/packages/wisi/gen_run_wisi_packrat_parse.adb
similarity index 100%
rename from packages/ada-mode/gen_run_wisi_packrat_parse.adb
rename to packages/wisi/gen_run_wisi_packrat_parse.adb
diff --git a/packages/ada-mode/gen_run_wisi_packrat_parse.ads 
b/packages/wisi/gen_run_wisi_packrat_parse.ads
similarity index 100%
rename from packages/ada-mode/gen_run_wisi_packrat_parse.ads
rename to packages/wisi/gen_run_wisi_packrat_parse.ads
diff --git a/packages/wisi/run_wisi_common_parse.adb 
b/packages/wisi/run_wisi_common_parse.adb
new file mode 100644
index 0000000..e4a45c0
--- /dev/null
+++ b/packages/wisi/run_wisi_common_parse.adb
@@ -0,0 +1,343 @@
+--  Abstract :
+--
+--  See spec.
+--
+--  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--
+--  This program is free software; you can redistribute it and/or
+--  modify it under terms of the GNU General Public License as
+--  published by the Free Software Foundation; either version 3, or (at
+--  your option) any later version. This program is distributed in the
+--  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+--  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+--  PURPOSE. See the GNU General Public License for more details. You
+--  should have received a copy of the GNU General Public License
+--  distributed with this program; see file COPYING. If not, write to
+--  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
+--  MA 02110-1335, USA.
+
+pragma License (GPL);
+
+with Ada.Command_Line;
+with Ada.Exceptions;
+with Ada.IO_Exceptions;
+with Ada.Real_Time;
+with Ada.Text_IO;
+with GNAT.Traceback.Symbolic;
+with SAL;
+with System.Multiprocessors;
+package body Run_Wisi_Common_Parse is
+
+   procedure Usage (Parser : in out WisiToken.Parse.LR.Parser.Parser)
+   is
+      use all type WisiToken.Parse.LR.Parse_Table_Ptr;
+      use Ada.Text_IO;
+   begin
+      Put_Line ("usage: parse <parse_action> <file_name> [partial parse 
params] [options]");
+      Put_Line ("   or: refactor <refactor_action> <file_name> <edit_begin> 
[options]");
+      Put_Line ("parse_action: {Navigate | Face | Indent}");
+      Put_Line ("partial parse params: begin_byte_pos end_byte_pos 
goal_byte_pos begin_char_pos begin_line" &
+                  " end_line begin_indent");
+      Put_Line ("options:");
+      Put_Line ("--verbosity n m l: (no 'm' for refactor)");
+      Put_Line ("   n: parser; m: mckenzie; l: action");
+      Put_Line ("   0 - only report parse errors");
+      Put_Line ("   1 - shows spawn/terminate parallel parsers, error recovery 
enter/exit");
+      Put_Line ("   2 - add each parser cycle, error recovery enqueue/check");
+      Put_Line ("   3 - parse stack in each cycle, error recovery parse 
actions");
+      Put_Line ("   4 - add lexer debug");
+      Put_Line ("--check_limit n  : set error recover token check limit" &
+                  (if Parser.Table = null then ""
+                   else "; default" & 
Parser.Table.McKenzie_Param.Check_Limit'Image));
+      Put_Line ("--check_delta n  : set error recover delta check limit" &
+                  (if Parser.Table = null then ""
+                   else "; default" & 
Parser.Table.McKenzie_Param.Check_Delta_Limit'Image));
+      Put_Line ("--enqueue_limit n  : set error recover token enqueue limit" &
+                  (if Parser.Table = null then ""
+                   else "; default" & 
Parser.Table.McKenzie_Param.Enqueue_Limit'Image));
+      Put_Line ("--max_parallel n  : set maximum count of parallel parsers 
(default" &
+                  WisiToken.Parse.LR.Parser.Default_Max_Parallel'Image & ")");
+      Put_Line ("--task_count n : worker tasks in error recovery");
+      Put_Line ("--disable_recover : disable error recovery; default enabled");
+      Put_Line ("--debug_mode : tracebacks from unhandled exceptions; default 
disabled");
+      Put_Line ("--lang_params <language-specific params>");
+      Put_Line ("--repeat_count n : repeat parse count times, for profiling; 
default 1");
+      New_Line;
+   end Usage;
+
+   function Get_CL_Params (Parser : in out WisiToken.Parse.LR.Parser.Parser) 
return Command_Line_Params
+   is
+      use Ada.Command_Line;
+      use WisiToken;
+      Arg     : Integer := 1;
+      Command : Command_Type;
+   begin
+      if Argument_Count < 1 then
+         Usage (Parser);
+         Set_Exit_Status (Failure);
+         raise Finish;
+
+      elsif Argument (Arg) = "--help" then
+         Usage (Parser);
+         raise Finish;
+
+      elsif Argument_Count < 2 then
+         Usage (Parser);
+         Set_Exit_Status (Failure);
+         raise Finish;
+      end if;
+
+      Command := Command_Type'Value (Ada.Command_Line.Argument (1));
+
+      return Result : Command_Line_Params (Command) do
+         Result.Source_File_Name  := +Ada.Command_Line.Argument (3);
+
+         case Command is
+         when Parse =>
+            Result.Post_Parse_Action := Wisi.Post_Parse_Action_Type'Value 
(Ada.Command_Line.Argument (2));
+
+            if Argument_Count >= 4 and then Argument (4)(1) /= '-' then
+               Result.Begin_Byte_Pos := WisiToken.Buffer_Pos'Value (Argument 
(4));
+               Result.End_Byte_Pos   := WisiToken.Buffer_Pos'Value (Argument 
(5)) - 1; -- match emacs region
+               Result.Goal_Byte_Pos  := WisiToken.Buffer_Pos'Value (Argument 
(6));
+               Result.Begin_Char_Pos := WisiToken.Buffer_Pos'Value (Argument 
(7));
+               Result.Begin_Line     := WisiToken.Line_Number_Type'Value 
(Argument (8));
+               Result.End_Line       := WisiToken.Line_Number_Type'Value 
(Argument (9));
+               Result.Begin_Indent   := Integer'Value (Argument (10));
+               Arg                   := 11;
+            else
+               Result.Begin_Byte_Pos := WisiToken.Invalid_Buffer_Pos;
+               Result.End_Byte_Pos   := WisiToken.Invalid_Buffer_Pos;
+               Result.Begin_Char_Pos := WisiToken.Buffer_Pos'First;
+               Result.Begin_Line     := WisiToken.Line_Number_Type'First;
+               Arg                   := 4;
+            end if;
+
+         when Refactor =>
+            Result.Refactor_Action := Integer'Value (Argument (2));
+            Result.Edit_Begin      := WisiToken.Buffer_Pos'Value (Argument 
(4));
+            Arg                    := 5;
+         end case;
+
+         loop
+            exit when Arg > Argument_Count;
+
+            if Argument (Arg) = "--verbosity" then
+               WisiToken.Trace_Parse    := Integer'Value (Argument (Arg + 1));
+               case Command is
+               when Parse =>
+                  WisiToken.Trace_McKenzie := Integer'Value (Argument (Arg + 
2));
+                  WisiToken.Trace_Action   := Integer'Value (Argument (Arg + 
3));
+                  Arg                      := Arg + 4;
+               when Refactor =>
+                  WisiToken.Trace_Action   := Integer'Value (Argument (Arg + 
2));
+                  Arg                      := Arg + 3;
+               end case;
+
+            elsif Argument (Arg) = "--check_limit" then
+               Parser.Table.McKenzie_Param.Check_Limit := Token_Index'Value 
(Argument (Arg + 1));
+               Arg := Arg + 2;
+
+            elsif Argument (Arg) = "--check_delta" then
+               Parser.Table.McKenzie_Param.Check_Delta_Limit := Integer'Value 
(Argument (Arg + 1));
+               Arg := Arg + 2;
+
+            elsif Argument (Arg) = "--debug_mode" then
+               WisiToken.Debug_Mode := True;
+               Arg := Arg + 1;
+
+            elsif Argument (Arg) = "--disable_recover" then
+               Parser.Enable_McKenzie_Recover := False;
+               Arg := Arg + 1;
+
+            elsif Argument (Arg) = "--enqueue_limit" then
+               Parser.Table.McKenzie_Param.Enqueue_Limit := Integer'Value 
(Argument (Arg + 1));
+               Arg := Arg + 2;
+
+            elsif Argument (Arg) = "--lang_params" then
+               Result.Lang_Params := +Argument (Arg + 1);
+               Arg := Arg + 2;
+
+            elsif Argument (Arg) = "--max_parallel" then
+               Parser.Max_Parallel := SAL.Base_Peek_Type'Value (Argument (Arg 
+ 1));
+               Arg := Arg + 2;
+
+            elsif Argument (Arg) = "--repeat_count" then
+               Result.Repeat_Count := Integer'Value (Argument (Arg + 1));
+               Arg := Arg + 2;
+
+            elsif Argument (Arg) = "--task_count" then
+               Parser.Table.McKenzie_Param.Task_Count := 
System.Multiprocessors.CPU_Range'Value (Argument (Arg + 1));
+               Arg := Arg + 2;
+
+            else
+               Ada.Text_IO.Put_Line ("unrecognized option: '" & Argument (Arg) 
& "'");
+               Usage (Parser);
+               Set_Exit_Status (Failure);
+               raise SAL.Parameter_Error;
+            end if;
+         end loop;
+      end return;
+   exception
+   when Finish =>
+      raise;
+
+   when E : others =>
+      Ada.Text_IO.Put_Line (Ada.Exceptions.Exception_Name (E) & ": " & 
Ada.Exceptions.Exception_Message (E));
+      Usage (Parser);
+      Set_Exit_Status (Failure);
+      raise SAL.Parameter_Error;
+   end Get_CL_Params;
+
+   procedure Parse_File
+     (Parser     : in out WisiToken.Parse.LR.Parser.Parser;
+      Parse_Data : in out Wisi.Parse_Data_Type'Class;
+      Descriptor : in     WisiToken.Descriptor)
+   is
+      use Ada.Text_IO;
+      use WisiToken;
+
+      Start     : Ada.Real_Time.Time;
+      End_Line  : WisiToken.Line_Number_Type;
+   begin
+      declare
+         Cl_Params : constant Command_Line_Params := Get_CL_Params (Parser);
+      begin
+         begin
+            case Cl_Params.Command is
+            when Parse =>
+               Parser.Lexer.Reset_With_File
+                 (-Cl_Params.Source_File_Name, Cl_Params.Begin_Byte_Pos, 
Cl_Params.End_Byte_Pos,
+                  Cl_Params.Begin_Char_Pos, Cl_Params.Begin_Line);
+            when Refactor =>
+               Parser.Lexer.Reset_With_File (-Cl_Params.Source_File_Name);
+            end case;
+         exception
+         when Ada.IO_Exceptions.Name_Error =>
+            Put_Line (Standard_Error, "'" & (-Cl_Params.Source_File_Name) & "' 
cannot be opened");
+            return;
+         end;
+
+         if Cl_Params.Command = Refactor or else Cl_Params.End_Line = 
Invalid_Line_Number then
+            --  User did not provide; run lexer to get end line.
+            declare
+               Token : Base_Token;
+               Lexer_Error : Boolean;
+               pragma Unreferenced (Lexer_Error);
+            begin
+               loop
+                  Lexer_Error := Parser.Lexer.Find_Next (Token);
+                  exit when Token.ID = Descriptor.EOI_ID;
+               end loop;
+               End_Line := Token.Line;
+            end;
+         else
+            End_Line := Cl_Params.End_Line;
+         end if;
+
+         Parse_Data.Initialize
+           (Post_Parse_Action =>
+              (case Cl_Params.Command is
+               when Parse    => Cl_Params.Post_Parse_Action,
+               when Refactor => Wisi.Navigate),
+            Lexer            => Parser.Lexer,
+            Descriptor       => Descriptor'Unrestricted_Access,
+            Base_Terminals   => Parser.Terminals'Unrestricted_Access,
+            Begin_Line       =>
+              (case Cl_Params.Command is
+               when Parse => Cl_Params.Begin_Line,
+               when Refactor => WisiToken.Line_Number_Type'First),
+            End_Line         => End_Line,
+            Begin_Indent     =>
+              (case Cl_Params.Command is
+               when Parse    => Cl_Params.Begin_Indent,
+               when Refactor => 0),
+            Params            => -Cl_Params.Lang_Params);
+
+         if Cl_Params.Repeat_Count > 1 then
+            Start := Ada.Real_Time.Clock;
+         end if;
+
+         for I in 1 .. Cl_Params.Repeat_Count loop
+            declare
+               procedure Clean_Up
+               is
+                  use all type SAL.Base_Peek_Type;
+               begin
+                  Parser.Lexer.Discard_Rest_Of_Input;
+                  if Cl_Params.Repeat_Count = 1 and Parser.Parsers.Count > 0 
then
+                     Parse_Data.Put
+                       (Parser.Lexer.Errors,
+                        Parser.Parsers.First.State_Ref.Errors,
+                        Parser.Parsers.First.State_Ref.Tree);
+                  end if;
+               end Clean_Up;
+
+            begin
+               Parse_Data.Reset;
+               Parser.Lexer.Reset;
+
+               begin
+                  Parser.Parse;
+               exception
+               when WisiToken.Partial_Parse =>
+                  null;
+               end;
+
+               Parser.Execute_Actions;
+
+               case Cl_Params.Command is
+               when Parse =>
+                  if Cl_Params.Repeat_Count = 1 then
+                     Parse_Data.Put (Parser);
+                     Parse_Data.Put
+                       (Parser.Lexer.Errors,
+                        Parser.Parsers.First.State_Ref.Errors,
+                        Parser.Parsers.First.State_Ref.Tree);
+                  end if;
+
+               when Refactor =>
+                  Parse_Data.Refactor
+                    (Parser.Parsers.First_State_Ref.Tree,
+                     Cl_Params.Refactor_Action, Cl_Params.Edit_Begin);
+               end case;
+            exception
+            when WisiToken.Syntax_Error =>
+               Clean_Up;
+               Put_Line ("(parse_error)");
+
+            when E : WisiToken.Parse_Error =>
+               Clean_Up;
+               Put_Line ("(parse_error """ & Ada.Exceptions.Exception_Message 
(E) & """)");
+
+            when E : others => -- includes Fatal_Error
+               Clean_Up;
+               Put_Line ("(error """ & Ada.Exceptions.Exception_Message (E) & 
""")");
+            end;
+         end loop;
+
+         if Cl_Params.Repeat_Count > 1 then
+            declare
+               use Ada.Real_Time;
+               Finish : constant Time := Clock;
+            begin
+               Put_Line ("Total time:" & Duration'Image (To_Duration (Finish - 
Start)));
+               Put_Line ("per iteration:" & Duration'Image (To_Duration 
((Finish - Start) / Cl_Params.Repeat_Count)));
+            end;
+         end if;
+      end;
+   exception
+   when SAL.Parameter_Error | Finish =>
+      --  From Get_CL_Params; already handled.
+      null;
+
+   when E : others =>
+      Ada.Command_Line.Set_Exit_Status (Ada.Command_Line.Failure);
+      New_Line (2);
+      Put_Line
+        ("(error ""unhandled exception: " & Ada.Exceptions.Exception_Name (E) 
& ": " &
+           Ada.Exceptions.Exception_Message (E) & """)");
+      Put_Line (GNAT.Traceback.Symbolic.Symbolic_Traceback (E));
+   end Parse_File;
+
+end Run_Wisi_Common_Parse;
diff --git a/packages/ada-mode/run_wisi_common_parse.ads 
b/packages/wisi/run_wisi_common_parse.ads
similarity index 53%
rename from packages/ada-mode/run_wisi_common_parse.ads
rename to packages/wisi/run_wisi_common_parse.ads
index 0a8a607..c00d007 100644
--- a/packages/ada-mode/run_wisi_common_parse.ads
+++ b/packages/wisi/run_wisi_common_parse.ads
@@ -1,55 +1,73 @@
---  Abstract :
---
---  Common utilities for Gen_Run_Wisi_*_Parse
---
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
---
---  This program is free software; you can redistribute it and/or
---  modify it under terms of the GNU General Public License as
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version. This program is distributed in the
---  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
---  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
---  PURPOSE. See the GNU General Public License for more details. You
---  should have received a copy of the GNU General Public License
---  distributed with this program; see file COPYING. If not, write to
---  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
---  MA 02110-1335, USA.
-
-pragma License (GPL);
-
-with Ada.Strings.Unbounded;
-with Wisi;
-with WisiToken.Parse.LR.Parser;
-package Run_Wisi_Common_Parse is
-
-   Finish : exception;
-
-   procedure Usage (Parser : in out WisiToken.Parse.LR.Parser.Parser);
-   --  Puts parameter description to Current_Output.
-
-   type Command_Line_Params is record
-      Post_Parse_Action : Wisi.Post_Parse_Action_Type;
-      Source_File_Name  : Ada.Strings.Unbounded.Unbounded_String;
-      Begin_Byte_Pos    : WisiToken.Buffer_Pos       := 
WisiToken.Invalid_Buffer_Pos;
-      End_Byte_Pos      : WisiToken.Buffer_Pos       := 
WisiToken.Invalid_Buffer_Pos;
-      Goal_Byte_Pos     : WisiToken.Buffer_Pos       := 
WisiToken.Invalid_Buffer_Pos;
-      Begin_Char_Pos    : WisiToken.Buffer_Pos       := 
WisiToken.Buffer_Pos'First;
-      Begin_Line        : WisiToken.Line_Number_Type := 
WisiToken.Line_Number_Type'First;
-      End_Line          : WisiToken.Line_Number_Type := 
WisiToken.Invalid_Line_Number;
-      Begin_Indent      : Integer                    := 0;
-      Repeat_Count      : Integer                    := 1;
-      Lang_Params       : Ada.Strings.Unbounded.Unbounded_String;
-   end record;
-
-   function Get_CL_Params (Parser : in out WisiToken.Parse.LR.Parser.Parser) 
return Command_Line_Params;
-   --  For any errors, calls Usage, raises SAL.Parameter_Error.
-   --
-   --  Handles --help by outputing help, raising Finish.
-
-   procedure Parse_File
-     (Parser     : in out WisiToken.Parse.LR.Parser.Parser;
-      Parse_Data : in out Wisi.Parse_Data_Type'Class;
-      Descriptor : in     WisiToken.Descriptor);
-
-end Run_Wisi_Common_Parse;
+--  Abstract :
+--
+--  Common utilities for Gen_Run_Wisi_*_Parse
+--
+--  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--
+--  This program is free software; you can redistribute it and/or
+--  modify it under terms of the GNU General Public License as
+--  published by the Free Software Foundation; either version 3, or (at
+--  your option) any later version. This program is distributed in the
+--  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+--  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+--  PURPOSE. See the GNU General Public License for more details. You
+--  should have received a copy of the GNU General Public License
+--  distributed with this program; see file COPYING. If not, write to
+--  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
+--  MA 02110-1335, USA.
+
+pragma License (GPL);
+
+with Ada.Strings.Unbounded;
+with Wisi;
+with WisiToken.Parse.LR.Parser;
+package Run_Wisi_Common_Parse is
+
+   Finish : exception;
+
+   procedure Usage (Parser : in out WisiToken.Parse.LR.Parser.Parser);
+   --  Puts parameter description to Current_Output.
+
+   type Command_Type is (Parse, Refactor);
+
+   type Command_Line_Params (Command : Command_Type) is record
+
+      Source_File_Name : Ada.Strings.Unbounded.Unbounded_String;
+      Lang_Params      : Ada.Strings.Unbounded.Unbounded_String;
+      Repeat_Count     : Integer := 1;
+
+      case Command is
+      when Parse =>
+         Post_Parse_Action : Wisi.Post_Parse_Action_Type;
+         Begin_Byte_Pos    : WisiToken.Buffer_Pos       := 
WisiToken.Invalid_Buffer_Pos;
+         End_Byte_Pos      : WisiToken.Buffer_Pos       := 
WisiToken.Invalid_Buffer_Pos;
+         Goal_Byte_Pos     : WisiToken.Buffer_Pos       := 
WisiToken.Invalid_Buffer_Pos;
+         Begin_Char_Pos    : WisiToken.Buffer_Pos       := 
WisiToken.Buffer_Pos'First;
+         Begin_Line        : WisiToken.Line_Number_Type := 
WisiToken.Line_Number_Type'First;
+         End_Line          : WisiToken.Line_Number_Type := 
WisiToken.Invalid_Line_Number;
+         Begin_Indent      : Integer                    := 0;
+
+      when Refactor =>
+         --  We assume the file contains only the one statement/declaration
+         --  that needs refactoring.
+
+         Refactor_Action : Positive;
+         --  Language-specific
+
+         Edit_Begin : WisiToken.Buffer_Pos;
+         --  Source file byte position at start of expression to refactor.
+      end case;
+   end record;
+
+   function Get_CL_Params (Parser : in out WisiToken.Parse.LR.Parser.Parser) 
return Command_Line_Params;
+   --  For any errors, calls Usage, raises SAL.Parameter_Error.
+   --
+   --  Handles --help by outputing help, raising Finish.
+
+   procedure Parse_File
+     (Parser     : in out WisiToken.Parse.LR.Parser.Parser;
+      Parse_Data : in out Wisi.Parse_Data_Type'Class;
+      Descriptor : in     WisiToken.Descriptor);
+   --  Calls Get_CL_Params, reads in file, parses, does post-parse actions.
+
+end Run_Wisi_Common_Parse;
diff --git a/packages/wisi/sal-gen_bounded_definite_queues.adb 
b/packages/wisi/sal-gen_bounded_definite_queues.adb
index 61e5c12..71b68c5 100644
--- a/packages/wisi/sal-gen_bounded_definite_queues.adb
+++ b/packages/wisi/sal-gen_bounded_definite_queues.adb
@@ -17,43 +17,20 @@
 
 pragma License (Modified_GPL);
 
-package body SAL.Gen_Bounded_Definite_Queues is
-
-   --  Local subprograms
-
-   function Wrap (Queue : in Queue_Type; I : in Integer) return Integer
-   is begin
-      if I > Queue.Size then
-         return I - Queue.Size;
-      elsif I < 1 then
-         return Queue.Size + I;
-      else
-         return I;
-      end if;
-   end Wrap;
+package body SAL.Gen_Bounded_Definite_Queues
+  with Spark_Mode
+is
+   pragma Suppress (All_Checks);
 
    ----------
    --  Public subprograms
 
-   function Get_Overflow_Handling (Queue : in Queue_Type) return 
Overflow_Action_Type
-   is begin
-      return Queue.Overflow_Handling;
-   end Get_Overflow_Handling;
-
-   procedure Set_Overflow_Handling (Queue : in out Queue_Type; Handling : in 
Overflow_Action_Type)
-   is begin
-      Queue.Overflow_Handling := Handling;
-   end Set_Overflow_Handling;
-
    procedure Clear (Queue : in out Queue_Type) is
    begin
       Queue.Count := 0;
    end Clear;
 
-   function Count (Queue : in Queue_Type) return Natural is
-   begin
-      return Queue.Count;
-   end Count;
+   function Count (Queue : in Queue_Type) return Base_Peek_Type is 
(Queue.Count);
 
    function Is_Empty (Queue : in Queue_Type) return Boolean is
    begin
@@ -65,90 +42,62 @@ package body SAL.Gen_Bounded_Definite_Queues is
       return Queue.Count = Queue.Size;
    end Is_Full;
 
-   function Remove (Queue : in out Queue_Type) return Item_Type
+   procedure Remove (Queue : in out Queue_Type; Item : out Item_Type)
    is begin
-      if Queue.Count = 0 then
-         raise Container_Empty;
-      end if;
+      Item := Queue.Data (Queue.Head);
 
-      return Item : constant Item_Type := Queue.Data (Queue.Head)
-      do
-         Queue.Count := Queue.Count - 1;
+      Queue.Count := Queue.Count - 1;
 
-         if Queue.Count > 0 then
-            Queue.Head := Wrap (Queue, Queue.Head + 1);
-         end if;
+      if Queue.Count > 0 then
+         Queue.Head := Wrap (Queue.Size, Queue.Head + 1);
+      end if;
+   end Remove;
+
+   function Remove (Queue : in out Queue_Type) return Item_Type with
+     Spark_Mode => Off
+   is begin
+      return Item : Item_Type  do
+         Remove (Queue, Item);
       end return;
    end Remove;
 
    procedure Drop (Queue : in out Queue_Type)
    is begin
-      if Queue.Count = 0 then
-         raise Container_Empty;
-      end if;
-
       Queue.Count := Queue.Count - 1;
 
       if Queue.Count > 0 then
-         Queue.Head := Wrap (Queue, Queue.Head + 1);
+         Queue.Head := Wrap (Queue.Size, Queue.Head + 1);
       end if;
    end Drop;
 
-   function Peek (Queue : in Queue_Type; N : Integer := 0) return Item_Type
-   is begin
-      if Queue.Count = 0 then
-         raise Container_Empty;
-      end if;
-
-      return Queue.Data (Wrap (Queue, Queue.Head + N));
-   end Peek;
+   function Peek (Queue : in Queue_Type; N : Peek_Type := 1) return Item_Type
+     is (Queue.Data (Wrap (Queue.Size, Queue.Head + N - 1)));
+   --  Expression function to allow use in Spark proofs of conditions in spec.
 
    procedure Add (Queue : in out Queue_Type; Item : in Item_Type) is
    begin
-      if Queue.Count = Queue.Size then
-         case Queue.Overflow_Handling is
-         when Error =>
-            raise Container_Full;
-         when Overwrite =>
-            Queue.Count := Queue.Count - 1;
-            Queue.Head  := Wrap (Queue, Queue.Head + 1);
-         end case;
-      end if;
-
       if Queue.Count = 0 then
-         Queue.Tail     := 1;
-         Queue.Head     := 1;
-         Queue.Count    := 1;
-         Queue.Data (1) := Item;
+         Queue.Tail  := 1;
+         Queue.Head  := 1;
+         Queue.Count := 1;
       else
-         Queue.Tail              := Wrap (Queue, Queue.Tail + 1);
-         Queue.Data (Queue.Tail) := Item;
-         Queue.Count             := Queue.Count + 1;
+         Queue.Tail  := Wrap (Queue.Size, Queue.Tail + 1);
+         Queue.Count := Queue.Count + 1;
       end if;
+      Queue.Data (Queue.Tail) := Item;
    end Add;
 
    procedure Add_To_Head (Queue : in out Queue_Type; Item : in Item_Type) is
    begin
-      if Queue.Count = Queue.Size then
-         case Queue.Overflow_Handling is
-         when Error =>
-            raise Container_Full;
-         when Overwrite =>
-            Queue.Count := Queue.Count - 1;
-            Queue.Tail  := Wrap (Queue, Queue.Tail + 1);
-         end case;
-      end if;
-
       if Queue.Count = 0 then
-         Queue.Tail     := 1;
-         Queue.Head     := 1;
-         Queue.Count    := 1;
-         Queue.Data (1) := Item;
+         Queue.Tail  := 1;
+         Queue.Head  := 1;
+         Queue.Count := 1;
       else
-         Queue.Head              := Wrap (Queue, Queue.Head - 1);
-         Queue.Data (Queue.Head) := Item;
-         Queue.Count             := Queue.Count + 1;
+         Queue.Head  := Wrap (Queue.Size, Queue.Head - 1);
+         Queue.Count := Queue.Count + 1;
       end if;
+      Queue.Data (Queue.Head) := Item;
    end Add_To_Head;
 
 end SAL.Gen_Bounded_Definite_Queues;
diff --git a/packages/wisi/sal-gen_bounded_definite_queues.ads 
b/packages/wisi/sal-gen_bounded_definite_queues.ads
index 0b286f8..5614519 100644
--- a/packages/wisi/sal-gen_bounded_definite_queues.ads
+++ b/packages/wisi/sal-gen_bounded_definite_queues.ads
@@ -2,7 +2,7 @@
 --
 --  A generic queue, allowing definite non-limited item types.
 --
---  Copyright (C) 2004, 2008, 2009, 2011, 2017, 2019 Free Software Foundation 
All Rights Reserved.
+--  Copyright (C) 2004, 2008, 2009, 2011, 2017, 2019 Free Software Foundation  
All Rights Reserved.
 --
 --  This library is free software;  you can redistribute it and/or modify it
 --  under terms of the  GNU General Public License  as published by the Free
@@ -19,81 +19,99 @@ pragma License (Modified_GPL);
 
 generic
    type Item_Type is private;
-package SAL.Gen_Bounded_Definite_Queues is
+package SAL.Gen_Bounded_Definite_Queues
+  with Spark_Mode
+is
    pragma Pure;
+   pragma Suppress (All_Checks); --  Users must check Is_Full before Add, 
Is_Empty before Remove.
 
-   type Queue_Type (Size : Positive) is tagged private;
-   --  Size is maximum number of items in the queue.
-   --  Tagged to allow Object.Method syntax.
+   subtype Size_Type is Peek_Type range 1 .. Peek_Type'Last / 2;
+   --  The upper limit is needed to avoid overflow in Peek.
 
-   function Get_Overflow_Handling (Queue : in Queue_Type) return 
Overflow_Action_Type;
-   procedure Set_Overflow_Handling (Queue : in out Queue_Type; Handling : in 
Overflow_Action_Type);
-   --  See Add for meaning of Overflow_Handling. Default is Error.
+   type Queue_Type (Size : Size_Type) is private;
+   --  Size is maximum number of items in the queue.
 
-   procedure Clear (Queue : in out Queue_Type);
+   procedure Clear (Queue : in out Queue_Type)
+   with Post => Count (Queue) = 0;
    --  Empty Queue of all items.
 
-   function Count (Queue : in Queue_Type) return Natural;
+   function Count (Queue : in Queue_Type) return Base_Peek_Type;
    --  Returns count of items in the Queue
 
-   function Is_Empty (Queue : in Queue_Type) return Boolean;
+   function Is_Empty (Queue : in Queue_Type) return Boolean
+   with Post => Is_Empty'Result = (Count (Queue) = 0);
    --  Returns true if no items are in Queue.
 
-   function Is_Full (Queue : in Queue_Type) return Boolean;
+   function Is_Full (Queue : in Queue_Type) return Boolean
+   with Post => Is_Full'Result = (Count (Queue) = Queue.Size);
    --  Returns true if Queue is full.
 
-   function Remove (Queue : in out Queue_Type) return Item_Type;
+   procedure Remove (Queue : in out Queue_Type; Item : out Item_Type) with
+     Pre  => Count (Queue) > 0,
+     Post => Count (Queue) = Count (Queue)'Old - 1 and Item = Peek (Queue'Old) 
and
+             (for all I in 1 .. Count (Queue) => Peek (Queue'Old, I + 1) = 
Peek (Queue, I));
    --  Remove head item from Queue, return it.
-   --
-   --  Raises Container_Empty if Is_Empty.
+
+   function Remove (Queue : in out Queue_Type) return Item_Type with
+     Spark_Mode => Off;
 
    function Get (Queue : in out Queue_Type) return Item_Type renames Remove;
 
-   procedure Drop (Queue : in out Queue_Type);
+   procedure Drop (Queue : in out Queue_Type) with
+     Pre  => Count (Queue) > 0,
+     Post => Count (Queue) = Count (Queue)'Old - 1 and
+             (for all I in 1 .. Count (Queue) => Peek (Queue'Old, I + 1) = 
Peek (Queue, I));
    --  Remove head item from Queue, discard it.
-   --
-   --  Raises Container_Empty if Is_Empty.
 
-   function Peek (Queue : in Queue_Type; N : Integer := 0) return Item_Type;
-   --  Return a copy of a queue item, without removing it. N = 0 is
+   function Peek (Queue : in Queue_Type; N : Peek_Type := 1) return Item_Type 
with
+     Pre  => Count (Queue) in 1 .. Queue.Size and N in 1 .. Count (Queue);
+   --  Return a copy of a queue item, without removing it. N = 1 is
    --  the queue head.
 
-   procedure Add (Queue : in out Queue_Type; Item : in Item_Type);
+   procedure Add (Queue : in out Queue_Type; Item : in Item_Type) with
+     Pre  => Count (Queue) in 0 .. Queue.Size - 1,
+     Post => Count (Queue) = Count (Queue)'Old + 1 and Peek (Queue, Count 
(Queue)) = Item and
+             (for all I in 1 .. Count (Queue)'Old => Peek (Queue'Old, I) = 
Peek (Queue, I));
    --  Add Item to the tail of Queue.
-   --
-   --  If Queue is full, result depends on Queue.Overflow_Handling:
-   --
-   --  when Overwrite, an implicit Remove is done (and the data
-   --  discarded), then Add is done.
-   --
-   --  when Error, raises Container_Full.
 
    procedure Put (Queue : in out Queue_Type; Item : in Item_Type) renames Add;
 
-   procedure Add_To_Head (Queue : in out Queue_Type; Item : in Item_Type);
+   procedure Add_To_Head (Queue : in out Queue_Type; Item : in Item_Type) with
+     Pre  => Count (Queue) in 0 .. Queue.Size - 1,
+     Post => Count (Queue) = Count (Queue)'Old + 1 and
+             (Peek (Queue) = Item and
+              (for all I in 2 .. Count (Queue) => Peek (Queue'Old, I - 1) = 
Peek (Queue, I)));
    --  Add Item to the head of Queue.
-   --
-   --  If Queue is full, result depends on Queue.Overflow_Handling:
-   --
-   --  when Overwrite, an implicit Remove is done (and the data
-   --  discarded), then Add is done.
-   --
-   --  when Error, raises Container_Full.
 
 private
 
-   type Item_Array_Type is array (Positive range <>) of Item_Type;
-
-   type Queue_Type (Size : Positive) is tagged record
-      Overflow_Handling : Overflow_Action_Type := Error;
+   type Item_Array_Type is array (Peek_Type range <>) of Item_Type;
 
-      Head  : Natural := 0;
-      Tail  : Natural := 0;
-      Count : Natural := 0;
+   type Queue_Type (Size : Size_Type) is
+   record
+      Head  : Peek_Type      := 1;
+      Tail  : Peek_Type      := 1;
+      Count : Base_Peek_Type := 0;
       Data  : Item_Array_Type (1 .. Size);
       --  Add at Tail + 1, remove at Head. Count is current count;
       --  easier to keep track of that than to compute Is_Empty for
       --  each Add and Remove.
-   end record;
+      --
+      --  Empty is indicated by Count = 0; head and tail are arbitrary
+      --  in that case.
+   end record with
+     Type_Invariant =>
+       (Head in 1 .. Size and
+        Tail in 1 .. Size and
+        Count in 0 .. Size) and then
+       (Count = 0 or else Wrap (Size, Head + Count - 1) = Tail);
+
+   function Wrap (Size : in Size_Type; I : in Base_Peek_Type) return Peek_Type
+     is (if I > Size then I - Size
+         elsif I = 0 then Size
+         else I)
+     with
+       Pre  => I in 0 .. 2 * Size - 1,
+       Post => Wrap'Result in 1 .. Size;
 
 end SAL.Gen_Bounded_Definite_Queues;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors-gen_image.adb 
b/packages/wisi/sal-gen_bounded_definite_stacks-gen_image_aux.adb
similarity index 59%
copy from packages/wisi/sal-gen_bounded_definite_vectors-gen_image.adb
copy to packages/wisi/sal-gen_bounded_definite_stacks-gen_image_aux.adb
index e1726d1..7dcd96f 100644
--- a/packages/wisi/sal-gen_bounded_definite_vectors-gen_image.adb
+++ b/packages/wisi/sal-gen_bounded_definite_stacks-gen_image_aux.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2019 Free Software Foundation, Inc.
 --
 --  This library is free software;  you can redistribute it and/or modify it
 --  under terms of the  GNU General Public License  as published by the Free
@@ -17,23 +17,26 @@
 
 pragma License (Modified_GPL);
 
-function SAL.Gen_Bounded_Definite_Vectors.Gen_Image (Item : in Vector) return 
String
+with Ada.Strings.Unbounded;
+function SAL.Gen_Bounded_Definite_Stacks.Gen_Image_Aux
+  (Item  : in Stack;
+   Aux   : in Aux_Data;
+   Depth : in SAL.Base_Peek_Type := 0)
+  return String
 is
-   use all type SAL.Base_Peek_Type;
-   use Ada.Strings;
    use Ada.Strings.Unbounded;
-   Result : Unbounded_String := To_Unbounded_String ("(");
-   Last   : Base_Peek_Type   := To_Peek_Index (Item.Last);
+   Result : Unbounded_String        := To_Unbounded_String ("(");
+   Last   : constant Base_Peek_Type :=
+     (if Depth = 0
+      then Item.Top
+      else Base_Peek_Type'Min (Depth, Item.Top));
 begin
-   for I in Item.Elements (1 .. Last) loop
-      Result := Result &
-        ((if Trim
-          then Fixed.Trim (Element_Image (Item.Elements (I)), Left)
-          else Element_Image (Item.Elements (I)));
+   for I in 1 .. Last loop
+      Result := Result & Element_Image (Item.Peek (I), Aux);
       if I /= Last then
          Result := Result & ", ";
       end if;
    end loop;
    Result := Result & ")";
    return To_String (Result);
-end SAL.Gen_Bounded_Definite_Vectors.Gen_Image;
+end SAL.Gen_Bounded_Definite_Stacks.Gen_Image_Aux;
diff --git a/packages/wisi/sal-gen_bounded_definite_stacks-gen_image_aux.ads 
b/packages/wisi/sal-gen_bounded_definite_stacks-gen_image_aux.ads
new file mode 100644
index 0000000..e960398
--- /dev/null
+++ b/packages/wisi/sal-gen_bounded_definite_stacks-gen_image_aux.ads
@@ -0,0 +1,27 @@
+--  Abstract :
+--
+--  Image with auxiliary data for instantiations of parent.
+--
+--  Copyright (C) 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+generic
+   type Aux_Data (<>) is private;
+   with function Element_Image (Item : in Element_Type; Aux : in Aux_Data) 
return String;
+function SAL.Gen_Bounded_Definite_Stacks.Gen_Image_Aux
+  (Item  : in Stack;
+   Aux   : in Aux_Data;
+   Depth : in SAL.Base_Peek_Type := 0)
+  return String;
diff --git a/packages/wisi/sal-gen_bounded_definite_stacks.adb 
b/packages/wisi/sal-gen_bounded_definite_stacks.adb
new file mode 100644
index 0000000..fc81daa
--- /dev/null
+++ b/packages/wisi/sal-gen_bounded_definite_stacks.adb
@@ -0,0 +1,82 @@
+--  Abstract:
+--
+--  see spec
+--
+--  Copyright (C) 1998, 2003, 2009, 2015, 2017 - 2019 Free Software 
Foundation, Inc.
+--
+--  SAL is free software; you can redistribute it and/or modify it
+--  under terms of the GNU General Public License as published by the
+--  Free Software Foundation; either version 3, or (at your option)
+--  any later version. SAL is distributed in the hope that it will be
+--  useful, but WITHOUT ANY WARRANTY; without even the implied
+--  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+--  See the GNU General Public License for more details. You should
+--  have received a copy of the GNU General Public License distributed
+--  with SAL; see file COPYING. If not, write to the Free Software
+--  Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+--  USA.
+--
+--  As a special exception, if other files instantiate generics from
+--  SAL, or you link SAL object files with other files to produce an
+--  executable, that does not by itself cause the resulting executable
+--  to be covered by the GNU General Public License. This exception
+--  does not however invalidate any other reasons why the executable
+--  file might be covered by the GNU Public License.
+
+pragma License (Modified_GPL);
+
+package body SAL.Gen_Bounded_Definite_Stacks
+  with Spark_Mode
+is
+   pragma Suppress (All_Checks);
+
+   procedure Clear (Stack : in out Sgbds.Stack)
+   is begin
+      Stack.Top := 0;
+   end Clear;
+
+   function Depth (Stack : in Sgbds.Stack) return Size_Type
+     is (Stack.Top);
+
+   function Is_Empty (Stack : in Sgbds.Stack) return Boolean
+   is begin
+      return Stack.Top = 0;
+   end Is_Empty;
+
+   function Is_Full (Stack : in Sgbds.Stack) return Boolean
+   is begin
+      return Stack.Top = Stack.Size;
+   end Is_Full;
+
+   function Peek
+     (Stack : in Sgbds.Stack;
+      Index : in Peek_Type := 1)
+     return Element_Type
+     is (Stack.Data (Stack.Top - Index + 1));
+
+   procedure Pop (Stack : in out Sgbds.Stack; Count : in Base_Peek_Type := 1)
+   is begin
+      Stack.Top := Stack.Top - Count;
+   end Pop;
+
+   procedure Pop (Stack : in out Sgbds.Stack; Item : out Element_Type)
+   is begin
+      Item := Stack.Peek (1);
+      Stack.Top := Stack.Top - 1;
+   end Pop;
+
+   function Pop (Stack : in out Sgbds.Stack) return Element_Type with
+     Spark_Mode => Off
+   is begin
+      return Result : Element_Type do
+         Pop (Stack, Result);
+      end return;
+   end Pop;
+
+   procedure Push (Stack : in out Sgbds.Stack; Item : in Element_Type)
+   is begin
+      Stack.Top := Stack.Top + 1;
+      Stack.Data (Stack.Top) := Item;
+   end Push;
+
+end SAL.Gen_Bounded_Definite_Stacks;
diff --git a/packages/wisi/sal-gen_bounded_definite_stacks.ads 
b/packages/wisi/sal-gen_bounded_definite_stacks.ads
new file mode 100644
index 0000000..f743508
--- /dev/null
+++ b/packages/wisi/sal-gen_bounded_definite_stacks.ads
@@ -0,0 +1,103 @@
+--  Abstract:
+--
+--  Bounded stack implementation, with full Spark verification,
+--  optimized for speed.
+--
+--  Copyright (C) 1998-2000, 2002-2003, 2009, 2015, 2017 - 2019 Free Software 
Foundation, Inc.
+--
+--  SAL is free software; you can redistribute it and/or modify it
+--  under terms of the GNU General Public License as published by the
+--  Free Software Foundation; either version 3, or (at your option)
+--  any later version. SAL is distributed in the hope that it will be
+--  useful, but WITHOUT ANY WARRANTY; without even the implied
+--  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+--  See the GNU General Public License for more details. You should
+--  have received a copy of the GNU General Public License distributed
+--  with SAL; see file COPYING. If not, write to the Free Software
+--  Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+--  USA.
+--
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+generic
+   type Element_Type is private;
+package SAL.Gen_Bounded_Definite_Stacks
+  with Spark_Mode
+is
+   pragma Pure;
+   --  pragma Suppress (All_Checks); --  Users must check Is_Full before Push, 
Is_Empty before Pop etc.
+
+   package Sgbds renames SAL.Gen_Bounded_Definite_Stacks;
+
+   subtype Size_Type is Base_Peek_Type range 0 .. Base_Peek_Type'Last / 2;
+   --  The upper limit is needed to avoid overflow in Peek.
+   --  Zero included for Depth result.
+
+   type Stack (Size : Size_Type) is tagged private;
+   --  Tagged to allow Object.Method notation.
+
+   --  No Empty_Stack constant, to avoid requiring a Default_Element.
+
+   procedure Clear (Stack : in out Sgbds.Stack)
+   with Post'Class => Depth (Stack) = 0;
+   --  Empty Stack of all items.
+
+   function Depth (Stack : in Sgbds.Stack) return Size_Type;
+   --  Returns current count of items in Stack
+
+   function Is_Empty (Stack : in Sgbds.Stack) return Boolean
+   with Post'Class => Is_Empty'Result = (Depth (Stack) = 0);
+   --  Returns true iff no items are in Stack.
+
+   function Is_Full (Stack : in Sgbds.Stack) return Boolean
+   with Post'Class => Is_Full'Result = (Depth (Stack) = Stack.Size);
+   --  Returns true iff Stack is full.
+
+   function Peek (Stack : in Sgbds.Stack; Index : in Peek_Type := 1) return 
Element_Type
+   with Pre'Class  => Depth (Stack) in 1 .. Stack.Size and Index in 1 .. Depth 
(Stack);
+   --  Return the Index'th item from the top of Stack; the Item is _not_ 
removed.
+   --  Top item has index 1.
+
+   procedure Pop (Stack : in out Sgbds.Stack; Count : in Base_Peek_Type := 1) 
with
+     Pre'Class  => Depth (Stack) in 1 .. Stack.Size and Count in 0 .. Depth 
(Stack),
+     Post'Class => Depth (Stack) = Depth (Stack)'Old - Count and then
+                   (for all I in 1 .. Depth (Stack) => Peek (Stack'Old, I + 
Count) = Peek (Stack, I));
+   --  Remove Count Items from the top of Stack, discard them.
+
+   procedure Pop (Stack : in out Sgbds.Stack; Item : out Element_Type) with
+     Pre'Class  => Depth (Stack) in 1 .. Stack.Size,
+     Post'Class =>
+       Depth (Stack) = Depth (Stack)'Old - 1 and then
+       (Item = Peek (Stack'Old) and
+        (for all I in 1 .. Depth (Stack) => Peek (Stack'Old, I + 1) = Peek 
(Stack, I)));
+   --  Remove one item from the top of Stack, return in Item.
+
+   function Pop (Stack : in out Sgbds.Stack) return Element_Type with
+     Spark_Mode => Off;
+   --  Remove one item from the top of Stack, and return it.
+
+   procedure Push (Stack : in out Sgbds.Stack; Item : in Element_Type) with
+     Pre'Class  => Depth (Stack) in 0 .. Stack.Size - 1,
+     Post'Class =>
+       Depth (Stack) = Depth (Stack)'Old + 1 and then
+       (Item = Peek (Stack) and
+        (for all I in 1 .. Depth (Stack'Old) => Peek (Stack'Old, I) = Peek 
(Stack, I + 1)));
+   --  Add Item to the top of Stack.
+
+private
+
+   type Element_Array is array (Size_Type range <>) of aliased Element_Type;
+
+   type Stack (Size : Size_Type) is tagged record
+      Top  : Base_Peek_Type := Invalid_Peek_Index; -- empty
+      Data : Element_Array (1 .. Size);
+      --  Top of stack is at Data (Top).
+      --  Data (1 .. Top) has been set at some point.
+   end record with
+     Dynamic_Predicate => Top in 0 .. Size;
+
+end SAL.Gen_Bounded_Definite_Stacks;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors-gen_image.adb 
b/packages/wisi/sal-gen_bounded_definite_vectors-gen_image.adb
index e1726d1..ae901fe 100644
--- a/packages/wisi/sal-gen_bounded_definite_vectors-gen_image.adb
+++ b/packages/wisi/sal-gen_bounded_definite_vectors-gen_image.adb
@@ -1,39 +1,40 @@
---  Abstract :
---
---  See spec.
---
---  Copyright (C) 2018 Free Software Foundation, Inc.
---
---  This library is free software;  you can redistribute it and/or modify it
---  under terms of the  GNU General Public License  as published by the Free
---  Software  Foundation;  either version 3,  or (at your  option) any later
---  version. This library is distributed in the hope that it will be useful,
---  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
---  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
---  As a special exception under Section 7 of GPL version 3, you are granted
---  additional permissions described in the GCC Runtime Library Exception,
---  version 3.1, as published by the Free Software Foundation.
-
-pragma License (Modified_GPL);
-
-function SAL.Gen_Bounded_Definite_Vectors.Gen_Image (Item : in Vector) return 
String
-is
-   use all type SAL.Base_Peek_Type;
-   use Ada.Strings;
-   use Ada.Strings.Unbounded;
-   Result : Unbounded_String := To_Unbounded_String ("(");
-   Last   : Base_Peek_Type   := To_Peek_Index (Item.Last);
-begin
-   for I in Item.Elements (1 .. Last) loop
-      Result := Result &
-        ((if Trim
-          then Fixed.Trim (Element_Image (Item.Elements (I)), Left)
-          else Element_Image (Item.Elements (I)));
-      if I /= Last then
-         Result := Result & ", ";
-      end if;
-   end loop;
-   Result := Result & ")";
-   return To_String (Result);
-end SAL.Gen_Bounded_Definite_Vectors.Gen_Image;
+--  Abstract :
+--
+--  See spec.
+--
+--  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+with Ada.Strings.Fixed;
+with Ada.Strings.Unbounded;
+function SAL.Gen_Bounded_Definite_Vectors.Gen_Image (Item : in Vector) return 
String
+is
+   use Ada.Strings;
+   use Ada.Strings.Unbounded;
+   Result : Unbounded_String        := To_Unbounded_String ("(");
+   Last   : constant Base_Peek_Type := To_Peek_Index (Item.Last);
+begin
+   for I in 1 .. Last loop
+      Result := Result &
+        (if Trim
+         then Fixed.Trim (Element_Image (Item.Elements (I)), Left)
+         else Element_Image (Item.Elements (I)));
+      if I /= Last then
+         Result := Result & ", ";
+      end if;
+   end loop;
+   Result := Result & ")";
+   return To_String (Result);
+end SAL.Gen_Bounded_Definite_Vectors.Gen_Image;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors-gen_refs.adb 
b/packages/wisi/sal-gen_bounded_definite_vectors-gen_refs.adb
new file mode 100644
index 0000000..8f9d741
--- /dev/null
+++ b/packages/wisi/sal-gen_bounded_definite_vectors-gen_refs.adb
@@ -0,0 +1,35 @@
+--  Abstract :
+--
+--  See spec.
+--
+--  Copyright (C) 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+package body SAL.Gen_Bounded_Definite_Vectors.Gen_Refs is
+
+   function Variable_Ref
+     (Container : aliased in out Vector;
+      Index     :         in     Index_Type)
+     return Variable_Reference_Type
+   is begin
+      return (Element => Container.Elements (To_Peek_Index (Index))'Access, 
Dummy => 1);
+   end Variable_Ref;
+
+   function Constant_Ref (Container : aliased in Vector; Index : in 
Index_Type) return Constant_Reference_Type
+   is begin
+      return (Element => Container.Elements (To_Peek_Index (Index))'Access, 
Dummy => 1);
+   end Constant_Ref;
+
+end SAL.Gen_Bounded_Definite_Vectors.Gen_Refs;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors-gen_refs.ads 
b/packages/wisi/sal-gen_bounded_definite_vectors-gen_refs.ads
new file mode 100644
index 0000000..c235cbc
--- /dev/null
+++ b/packages/wisi/sal-gen_bounded_definite_vectors-gen_refs.ads
@@ -0,0 +1,54 @@
+--  Abstract :
+--
+--  Variable_Reference for parent.
+--
+--  In a child package because it's not Spark, and Spark does not
+--  allow 'Spark_Mode => Off' on type declarations.
+--
+--  Copyright (C) 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+generic
+package SAL.Gen_Bounded_Definite_Vectors.Gen_Refs
+  with Spark_Mode => Off
+is
+
+   type Variable_Reference_Type (Element : not null access Element_Type) is 
private with
+     Implicit_Dereference => Element;
+
+   function Variable_Ref (Container : aliased in out Vector; Index : in 
Index_Type) return Variable_Reference_Type
+   with Inline,
+     Pre => Index in Index_Type'First .. Last_Index (Container);
+
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is private with
+     Implicit_Dereference => Element;
+
+   function Constant_Ref (Container : aliased in Vector; Index : in 
Index_Type) return Constant_Reference_Type
+   with Inline,
+     Pre => Index in Index_Type'First .. Last_Index (Container);
+
+private
+
+   type Variable_Reference_Type (Element : not null access Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
+end SAL.Gen_Bounded_Definite_Vectors.Gen_Refs;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors-gen_sorted.ads 
b/packages/wisi/sal-gen_bounded_definite_vectors-gen_sorted.ads
deleted file mode 100644
index e6e101f..0000000
--- a/packages/wisi/sal-gen_bounded_definite_vectors-gen_sorted.ads
+++ /dev/null
@@ -1,52 +0,0 @@
---  Abstract :
---
---  Add sorted behavior to parent.
---
---  Copyright (C) 2018, 2019 Free Software Foundation, Inc.
---
---  This library is free software;  you can redistribute it and/or modify it
---  under terms of the  GNU General Public License  as published by the Free
---  Software  Foundation;  either version 3,  or (at your  option) any later
---  version. This library is distributed in the hope that it will be useful,
---  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
---  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
---  As a special exception under Section 7 of GPL version 3, you are granted
---  additional permissions described in the GCC Runtime Library Exception,
---  version 3.1, as published by the Free Software Foundation.
-
-pragma License (Modified_GPL);
-
-generic
-   with function Element_Compare (Left, Right : in Element_Type) return 
Compare_Result;
-package SAL.Gen_Bounded_Definite_Vectors.Gen_Sorted is
-
-   type Vector is new SAL.Gen_Bounded_Definite_Vectors.Vector with null record;
-
-   overriding procedure Append (Container : in out Vector; New_Item : in 
Element_Type)
-   with Inline => True;
-   --  Raises Programmer_Error
-
-   overriding procedure Prepend (Container : in out Vector; New_Item : in 
Element_Type)
-   with Inline => True;
-   --  Raises Programmer_Error
-
-   overriding
-   procedure Insert
-     (Container : in out Vector;
-      New_Item  : in     Element_Type;
-      Before    : in     Extended_Index)
-   with Inline => True;
-   --  Raises Programmer_Error
-
-   not overriding
-   procedure Insert
-     (Container       : in out Vector;
-      New_Item        : in     Element_Type;
-      Ignore_If_Equal : in     Boolean := False);
-   --  Insert New_Item in sorted position. Items are sorted in increasing
-   --  order according to Element_Compare. New_Item is inserted after
-   --  Equal items, unless Ignore_If_Equal is true, in which case
-   --  New_Item is not inserted.
-
-end SAL.Gen_Bounded_Definite_Vectors.Gen_Sorted;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors.adb 
b/packages/wisi/sal-gen_bounded_definite_vectors.adb
index 42f5643..17aac08 100644
--- a/packages/wisi/sal-gen_bounded_definite_vectors.adb
+++ b/packages/wisi/sal-gen_bounded_definite_vectors.adb
@@ -1,224 +1,120 @@
---  Abstract :
---
---  See spec.
---
---  Copyright (C) 2017, 2018 Free Software Foundation, Inc.
---
---  This library is free software;  you can redistribute it and/or modify it
---  under terms of the  GNU General Public License  as published by the Free
---  Software  Foundation;  either version 3,  or (at your  option) any later
---  version. This library is distributed in the hope that it will be useful,
---  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
---  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
---  As a special exception under Section 7 of GPL version 3, you are granted
---  additional permissions described in the GCC Runtime Library Exception,
---  version 3.1, as published by the Free Software Foundation.
-
-pragma License (Modified_GPL);
-
-package body SAL.Gen_Bounded_Definite_Vectors is
-
-   function Length (Container : in Vector) return Ada.Containers.Count_Type
-   is begin
-      --  We assume the type ranges are sensible, so no exceptions occur
-      --  here.
-      return Ada.Containers.Count_Type (Container.Last - Index_Type'First + 1);
-   end Length;
-
-   function Is_Full (Container : in Vector) return Boolean
-   is begin
-      return To_Peek_Index (Container.Last) = Peek_Type (Capacity);
-   end Is_Full;
-
-   procedure Clear (Container : in out Vector)
-   is begin
-      Container.Last := No_Index;
-   end Clear;
-
-   function Element (Container : Vector; Index : Index_Type) return 
Element_Type
-   is begin
-      return Container.Elements (Peek_Type (Index - Index_Type'First + 1));
-   end Element;
-
-   function Last_Index (Container : Vector) return Extended_Index
-   is begin
-      return Container.Last;
-   end Last_Index;
-
-   procedure Set_Last (Container : in out Vector; Last : in Index_Type)
-   is begin
-      Container.Last := Last;
-   end Set_Last;
-
-   procedure Append (Container : in out Vector; New_Item : in Element_Type)
-   is
-      J : constant Peek_Type := To_Peek_Index (Container.Last + 1);
-   begin
-      if J > Container.Elements'Last then
-         raise Container_Full;
-      end if;
-      Container.Elements (J) := New_Item;
-      Container.Last := Container.Last + 1;
-   end Append;
-
-   procedure Prepend (Container : in out Vector; New_Item : in Element_Type)
-   is
-      J : constant Peek_Type := Peek_Type (Container.Last + 1 - 
Index_Type'First + 1);
-   begin
-      if J > Container.Elements'Last then
-         raise Container_Full;
-      end if;
-
-      Container.Elements (2 .. J) := Container.Elements (1 .. J - 1);
-      Container.Elements (1) := New_Item;
-      Container.Last := Container.Last + 1;
-   end Prepend;
-
-   procedure Insert
-     (Container : in out Vector;
-      New_Item  : in     Element_Type;
-      Before    : in     Extended_Index)
-   is
-      J : constant Peek_Type := To_Peek_Index ((if Before = No_Index then 
Container.Last + 1 else Before));
-      K : constant Base_Peek_Type := To_Peek_Index (Container.Last);
-   begin
-      if K + 1 > Container.Elements'Last then
-         raise Container_Full;
-      end if;
-
-      Container.Elements (J + 1 .. K + 1) := Container.Elements (J .. K);
-      Container.Elements (J) := New_Item;
-      Container.Last := Container.Last + 1;
-   end Insert;
-
-   function "+" (Item : in Element_Type) return Vector
-   is begin
-      return Result : Vector do
-         Result.Append (Item);
-      end return;
-   end "+";
-
-   function "&" (Left : in Vector; Right : in Element_Type) return Vector
-   is begin
-      return Result : Vector := Left do
-         Result.Append (Right);
-      end return;
-   end "&";
-
-   procedure Delete_First (Container : in out Vector; Count : in Index_Type := 
1)
-   is
-      J : constant Peek_Type := Peek_Type (Container.Last - Index_Type'First + 
Count);
-   begin
-      if Count > Container.Last then
-         raise Container_Empty;
-      end if;
-      Container.Elements (1 .. J - 1) := Container.Elements (2 .. J);
-      Container.Last := Container.Last - Count;
-   end Delete_First;
-
-   function Constant_Reference (Container : aliased Vector; Index : in 
Index_Type) return Constant_Reference_Type
-   is
-      J : constant Peek_Type := Peek_Type (Index - Index_Type'First + 1);
-   begin
-      if Index > Container.Last then
-         raise Constraint_Error;
-      end if;
-      return (Element => Container.Elements (J)'Access);
-   end Constant_Reference;
-
-   function Variable_Reference
-     (Container : aliased in out Vector;
-      Index     :         in     Index_Type)
-     return Variable_Reference_Type
-   is
-      J : constant Peek_Type := Peek_Type (Index - Index_Type'First + 1);
-   begin
-      if Index > Container.Last then
-         raise Constraint_Error;
-      end if;
-      return (Element => Container.Elements (J)'Access);
-   end Variable_Reference;
-
-   function Has_Element (Position : Cursor) return Boolean is
-   begin
-      if Position.Container = null then
-         return False;
-      end if;
-
-      return Position.Index <= Position.Container.Last;
-   end Has_Element;
-
-   overriding function First (Object : Iterator) return Cursor
-   is begin
-      if Object.Container.Last = No_Index then
-         return (null, Index_Type'First);
-      else
-         return (Object.Container, Object.Container.First_Index);
-      end if;
-   end First;
-
-   overriding function Last  (Object : Iterator) return Cursor
-   is begin
-      if Object.Container.Last = No_Index then
-         return (null, Index_Type'First);
-      else
-         return (Object.Container, Object.Container.Last_Index);
-      end if;
-   end Last;
-
-   overriding function Next
-     (Object   : Iterator;
-      Position : Cursor) return Cursor
-   is begin
-      if Position.Index = Object.Container.Last then
-         return (null, Index_Type'First);
-      else
-         return (Object.Container, Position.Index + 1);
-      end if;
-   end Next;
-
-   overriding function Previous
-     (Object   : Iterator;
-      Position : Cursor) return Cursor
-   is begin
-      if Position.Index = Index_Type'First then
-         return (null, Index_Type'First);
-      else
-         return (Object.Container, Position.Index - 1);
-      end if;
-   end Previous;
-
-   function Iterate (Container : Vector) return 
Vector_Iterator_Interfaces.Reversible_Iterator'Class
-   is begin
-      return Iterator'
-        (Container => Container'Unrestricted_Access,
-         Index     => No_Index);
-   end Iterate;
-
-   function Constant_Reference (Container : aliased Vector; Position : in 
Cursor) return Constant_Reference_Type
-   is
-      J : constant Peek_Type := Peek_Type (Position.Index - Index_Type'First + 
1);
-   begin
-      return (Element => Container.Elements (J)'Access);
-   end Constant_Reference;
-
-   function Variable_Reference
-     (Container : aliased in out Vector;
-      Position  :         in     Cursor)
-     return Variable_Reference_Type
-   is
-      J : constant Peek_Type := Peek_Type (Position.Index - Index_Type'First + 
1);
-   begin
-      return (Element => Container.Elements (J)'Access);
-   end Variable_Reference;
-
-   ----------
-   --  Spec private functions
-
-   function To_Peek_Index (Index : in Extended_Index) return Base_Peek_Type
-   is begin
-      return Base_Peek_Type (Index - Index_Type'First + 1);
-   end To_Peek_Index;
-
-end SAL.Gen_Bounded_Definite_Vectors;
+--  Abstract :
+--
+--  See spec.
+--
+--  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+package body SAL.Gen_Bounded_Definite_Vectors
+  with Spark_Mode
+is
+   pragma Suppress (All_Checks);
+
+   function Length (Container : in Vector) return Ada.Containers.Count_Type
+   is (Ada.Containers.Count_Type (To_Peek_Index (Container.Last)));
+
+   function Is_Full (Container : in Vector) return Boolean
+   is begin
+      return Length (Container) = Capacity;
+   end Is_Full;
+
+   procedure Clear (Container : in out Vector)
+   is begin
+      Container.Last := No_Index;
+   end Clear;
+
+   function Element (Container : Vector; Index : Index_Type) return 
Element_Type
+   is (Container.Elements (Peek_Type (Index - Index_Type'First + 1)));
+
+   procedure Replace_Element
+     (Container : in out Vector;
+      Index     : in     Index_Type;
+      New_Item  : in     Element_Type)
+   is begin
+      Container.Elements (To_Peek_Index (Index)) := New_Item;
+   end Replace_Element;
+
+   function Last_Index (Container : Vector) return Extended_Index
+   is (Container.Last);
+
+   procedure Append (Container : in out Vector; New_Item : in Element_Type)
+   is
+      J : constant Peek_Type := To_Peek_Index (Container.Last + 1);
+   begin
+      Container.Elements (J) := New_Item;
+      Container.Last := Container.Last + 1;
+   end Append;
+
+   procedure Prepend (Container : in out Vector; New_Item : in Element_Type)
+   is
+      J : constant Peek_Type := Peek_Type (Container.Last + 1 - 
Index_Type'First + 1);
+   begin
+      Container.Elements (2 .. J) := Container.Elements (1 .. J - 1);
+      Container.Elements (1) := New_Item;
+      Container.Last := Container.Last + 1;
+   end Prepend;
+
+   procedure Insert
+     (Container : in out Vector;
+      New_Item  : in     Element_Type;
+      Before    : in     Extended_Index)
+   is
+      J : constant Peek_Type := To_Peek_Index ((if Before = No_Index then 
Container.Last + 1 else Before));
+      K : constant Base_Peek_Type := To_Peek_Index (Container.Last);
+   begin
+      Container.Elements (J + 1 .. K + 1) := Container.Elements (J .. K);
+      Container.Elements (J) := New_Item;
+      Container.Last := Container.Last + 1;
+   end Insert;
+
+   function "+" (Item : in Element_Type) return Vector
+   is begin
+      return Result : Vector do
+         Append (Result, Item);
+      end return;
+   end "+";
+
+   function "&" (Left : in Vector; Right : in Element_Type) return Vector
+   is begin
+      --  WORKAROUND: If init Result with ":= Left", GNAT Community 2019
+      --  checks Default_Initial_Condition (which fails when Left is not
+      --  empty)! That is only supposed to be checked when initialized by
+      --  default. Reported to AdaCore as ticket S724-042.
+      return Result : Vector do
+         Result := Left;
+         Append (Result, Right);
+      end return;
+   end "&";
+
+   procedure Delete_First (Container : in out Vector; Count : in 
Ada.Containers.Count_Type := 1)
+   is
+      use Ada.Containers;
+   begin
+      if Count = 0 then
+         return;
+      end if;
+
+      declare
+         New_Last : constant Extended_Index := Extended_Index (Integer 
(Container.Last) - Integer (Count));
+         J        : constant Base_Peek_Type := Base_Peek_Type (Count);
+         K        : constant Peek_Type      := To_Peek_Index (Container.Last);
+      begin
+         --  Delete items 1 .. J, shift remaining down.
+         Container.Elements (1 .. K - J) := Container.Elements (J + 1 .. K);
+         Container.Last := New_Last;
+      end;
+   end Delete_First;
+
+end SAL.Gen_Bounded_Definite_Vectors;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors.ads 
b/packages/wisi/sal-gen_bounded_definite_vectors.ads
index 9747704..9e698e2 100644
--- a/packages/wisi/sal-gen_bounded_definite_vectors.ads
+++ b/packages/wisi/sal-gen_bounded_definite_vectors.ads
@@ -1,154 +1,145 @@
---  Abstract :
---
---  A simple bounded vector of definite items, intended to be faster
---  than Ada.Containers.Bounded_Definite_Vectors.
---
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
---
---  This library is free software;  you can redistribute it and/or modify it
---  under terms of the  GNU General Public License  as published by the Free
---  Software  Foundation;  either version 3,  or (at your  option) any later
---  version. This library is distributed in the hope that it will be useful,
---  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
---  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
---  As a special exception under Section 7 of GPL version 3, you are granted
---  additional permissions described in the GCC Runtime Library Exception,
---  version 3.1, as published by the Free Software Foundation.
-
-pragma License (Modified_GPL);
-
-with Ada.Iterator_Interfaces;
-generic
-   type Index_Type is range <>;
-   type Element_Type is private;
-   Capacity : in Ada.Containers.Count_Type;
-package SAL.Gen_Bounded_Definite_Vectors is
-
-   subtype Extended_Index is Index_Type'Base
-     range Index_Type'First - 1 ..
-           Index_Type'Min (Index_Type'Base'Last - 1, Index_Type'Last) + 1;
-
-   No_Index : constant Extended_Index := Extended_Index'First;
-
-   type Vector is tagged private with
-      Constant_Indexing => Constant_Reference,
-      Variable_Indexing => Variable_Reference,
-      Default_Iterator  => Iterate,
-      Iterator_Element  => Element_Type;
-
-   Empty_Vector : constant Vector;
-
-   function Length (Container : in Vector) return Ada.Containers.Count_Type;
-
-   function Is_Full (Container : in Vector) return Boolean;
-
-   procedure Clear (Container : in out Vector);
-
-   function First_Index (Container : in Vector) return Index_Type is 
(Index_Type'First);
-
-   function Last_Index (Container : in Vector) return Extended_Index;
-   --  No_Index when Container is empty.
-
-   procedure Set_Last (Container : in out Vector; Last : in Index_Type);
-   --  Elements with indices < Last that have not been set are undefined.
-
-   function Element (Container : Vector; Index : Index_Type) return 
Element_Type;
-   --  Index of first element in vector is Index_Type'First.
-
-   procedure Append (Container : in out Vector; New_Item : in Element_Type);
-   --  Raises Container_Full if full (more useful than a precondition failure).
-
-   procedure Prepend (Container : in out Vector; New_Item : in Element_Type);
-   --  Insert New_Item at beginning of Container; current elements slide right.
-
-   procedure Insert
-     (Container : in out Vector;
-      New_Item  : in     Element_Type;
-      Before    : in     Extended_Index);
-   --  Insert New_Item before Before, or after Last_Index if Before is
-   --  No_Index. Current elements at Before and after slide right.
-   --  New_Item then has index Before.
-
-   function "+" (Item : in Element_Type) return Vector;
-   function "&" (Left : in Vector; Right : in Element_Type) return Vector;
-
-   procedure Delete_First (Container : in out Vector; Count : in Index_Type := 
1);
-   --  Remaining elements slide down.
-
-   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is null record
-   with Implicit_Dereference => Element;
-
-   function Constant_Reference (Container : aliased Vector; Index : in 
Index_Type) return Constant_Reference_Type;
-   pragma Inline (Constant_Reference);
-
-   type Variable_Reference_Type (Element : not null access Element_Type) is 
null record
-   with Implicit_Dereference => Element;
-
-   function Variable_Reference
-     (Container : aliased in out Vector;
-      Index     :         in     Index_Type)
-     return Variable_Reference_Type;
-   pragma Inline (Variable_Reference);
-
-   type Cursor is private;
-
-   function Has_Element (Position : Cursor) return Boolean;
-
-   package Vector_Iterator_Interfaces is new Ada.Iterator_Interfaces (Cursor, 
Has_Element);
-
-   function Iterate (Container : Vector) return 
Vector_Iterator_Interfaces.Reversible_Iterator'Class;
-
-   function Constant_Reference (Container : aliased Vector; Position : in 
Cursor) return Constant_Reference_Type;
-   pragma Inline (Constant_Reference);
-
-   function Variable_Reference
-     (Container : aliased in out Vector;
-      Position  :         in     Cursor)
-     return Variable_Reference_Type;
-   pragma Inline (Variable_Reference);
-
-private
-
-   type Array_Type is array (Peek_Type range 1 .. Peek_Type (Capacity)) of 
aliased Element_Type;
-
-   type Vector is tagged
-   record
-      Elements : Array_Type := (others => <>);
-      Last     : Extended_Index := No_Index;
-   end record;
-
-   type Vector_Access is access all Vector;
-   for Vector_Access'Storage_Size use 0;
-
-   type Cursor is record
-      Container : Vector_Access;
-      Index     : Index_Type := Index_Type'First;
-   end record;
-
-   type Iterator is new Vector_Iterator_Interfaces.Reversible_Iterator with
-   record
-      Container : Vector_Access;
-      Index     : Index_Type'Base;
-   end record;
-
-   overriding function First (Object : Iterator) return Cursor;
-   overriding function Last  (Object : Iterator) return Cursor;
-
-   overriding function Next
-     (Object   : Iterator;
-      Position : Cursor) return Cursor;
-
-   overriding function Previous
-     (Object   : Iterator;
-      Position : Cursor) return Cursor;
-
-   Empty_Vector : constant Vector := (others => <>);
-
-   ----------
-   --  For child units
-
-   function To_Peek_Index (Index : in Extended_Index) return Base_Peek_Type
-   with Inline;
-
-end SAL.Gen_Bounded_Definite_Vectors;
+--  Abstract :
+--
+--  A simple bounded vector of definite items, in Spark.
+--
+--  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+generic
+   type Index_Type is range <>;
+   type Element_Type is private;
+   Capacity : in Ada.Containers.Count_Type;
+package SAL.Gen_Bounded_Definite_Vectors
+  with Spark_Mode
+is
+   use all type Ada.Containers.Count_Type;
+
+   subtype Extended_Index is Index_Type'Base
+     range Index_Type'First - 1 ..
+           Index_Type'Min (Index_Type'Base'Last - 1, Index_Type'Last) + 1;
+
+   pragma Assert (Capacity <= Ada.Containers.Count_Type (Index_Type'Last - 
Index_Type'First + 1));
+
+   No_Index : constant Extended_Index := Extended_Index'First;
+
+   type Vector is private with
+     Default_Initial_Condition => Length (Vector) = 0;
+
+   function Length (Container : in Vector) return Ada.Containers.Count_Type 
with
+     Post => Length'Result in 0 .. Capacity;
+
+   function Is_Full (Container : in Vector) return Boolean with
+     Post => Is_Full'Result = (Length (Container) = Capacity);
+
+   function Has_Space (Container : in Vector; Item_Count : in 
Ada.Containers.Count_Type) return Boolean
+     is (Length (Container) + Item_Count <= Capacity)
+     with Pre => Item_Count <= Ada.Containers.Count_Type'Last - Length 
(Container);
+
+   procedure Clear (Container : in out Vector) with
+     Post => Length (Container) = 0;
+
+   function First_Index (Container : in Vector) return Index_Type is 
(Index_Type'First) with
+       Depends => (First_Index'Result => null, null => Container);
+
+   function Last_Index (Container : in Vector) return Extended_Index;
+   --  No_Index when Container is empty.
+
+   function Element (Container : in Vector; Index : in Index_Type) return 
Element_Type
+   with Pre => Index <= Last_Index (Container);
+   --  Index of first element in Vector is Index_Type'First.
+
+   procedure Replace_Element
+     (Container : in out Vector;
+      Index     : in     Index_Type;
+      New_Item  : in     Element_Type)
+   with
+     Pre  => Index <= Last_Index (Container),
+     Post => Element (Container, Index) = New_Item;
+   --  Index of first element in Vector is Index_Type'First.
+
+   procedure Append (Container : in out Vector; New_Item : in Element_Type) 
with
+     Pre  => Length (Container) < Capacity,
+     Post => Length (Container) = Length (Container'Old) + 1 and
+             Element (Container, Last_Index (Container)) = New_Item and
+             (for all I in Index_Type'First .. Last_Index (Container) - 1 =>
+                Element (Container'Old, I) = Element (Container, I));
+
+   procedure Prepend (Container : in out Vector; New_Item : in Element_Type) 
with
+     Pre  => Length (Container) < Capacity,
+     Post => Length (Container) = Length (Container'Old) + 1 and then
+             (Element (Container, Index_Type'First) = New_Item and
+              (for all I in Index_Type'First .. Last_Index (Container'Old) =>
+                 Element (Container'Old, I) = Element (Container, I + 1)));
+   --  Insert New_Item at beginning of Container; current elements slide right.
+
+   procedure Insert
+     (Container : in out Vector;
+      New_Item  : in     Element_Type;
+      Before    : in     Extended_Index) with
+     Pre  => Length (Container) < Capacity and Before <= Last_Index 
(Container),
+     Contract_Cases =>
+       (Before = No_Index =>
+          Length (Container) = Length (Container'Old) + 1 and
+          Element (Container, Last_Index (Container)) = New_Item and
+          (for all I in Index_Type'First .. Last_Index (Container) - 1 =>
+             Element (Container'Old, I) = Element (Container, I)),
+        Before /= No_Index =>
+          Length (Container) = Length (Container'Old) + 1 and
+          Element (Container, Before) = New_Item and
+             (for all I in Index_Type'First .. Before - 1 =>
+                Element (Container'Old, I) = Element (Container, I)) and
+             (for all I in Before + 1 .. Last_Index (Container) =>
+                Element (Container'Old, I - 1) = Element (Container, I)));
+   --  Insert New_Item before Before, or after Last_Index if Before is
+   --  No_Index. Current elements at Before and after slide right.
+   --  New_Item then has index Before.
+
+   function "+" (Item : in Element_Type) return Vector with
+     Post => Length ("+"'Result) = 1 and
+             Element ("+"'Result, Index_Type'First) = Item;
+
+   function "&" (Left : in Vector; Right : in Element_Type) return Vector with
+     Pre  => Length (Left) < Capacity,
+     Post => Length ("&"'Result) = Length (Left) + 1 and
+             (for all I in Index_Type'First .. Last_Index (Left) => Element 
(Left, I) = Element ("&"'Result, I)) and
+             Element ("&"'Result, Last_Index ("&"'Result)) = Right;
+
+   procedure Delete_First (Container : in out Vector; Count : in 
Ada.Containers.Count_Type := 1) with
+     Pre  => Length (Container) >= Count,
+     Post => Length (Container) = Length (Container)'Old - Count and then
+             (for all I in Index_Type'First .. Last_Index (Container) =>
+                Element (Container'Old, Index_Type (Integer (I) + Integer 
(Count))) = Element (Container, I));
+   --  Remaining elements slide down.
+
+private
+
+   type Array_Type is array (Peek_Type range 1 .. Peek_Type (Capacity)) of 
aliased Element_Type;
+
+   type Vector is
+   record
+      Elements : Array_Type;
+      Last     : Extended_Index := No_Index;
+   end record with
+     Type_Invariant => To_Peek_Index (Last) <= Elements'Last;
+   pragma Annotate (GNATprove, Intentional, "type ""Vector"" is not fully 
initialized",
+                    "Only items in Elements with index < Last are accessed");
+
+   ----------
+   --  For child units
+
+   function To_Peek_Index (Index : in Extended_Index) return Base_Peek_Type is
+     (Base_Peek_Type (Index - Index_Type'First + 1));
+
+end SAL.Gen_Bounded_Definite_Vectors;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors-gen_image.adb 
b/packages/wisi/sal-gen_bounded_definite_vectors_sorted-gen_image_aux.adb
similarity index 59%
copy from packages/wisi/sal-gen_bounded_definite_vectors-gen_image.adb
copy to packages/wisi/sal-gen_bounded_definite_vectors_sorted-gen_image_aux.adb
index e1726d1..cee9c74 100644
--- a/packages/wisi/sal-gen_bounded_definite_vectors-gen_image.adb
+++ b/packages/wisi/sal-gen_bounded_definite_vectors_sorted-gen_image_aux.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2019 Free Software Foundation, Inc.
 --
 --  This library is free software;  you can redistribute it and/or modify it
 --  under terms of the  GNU General Public License  as published by the Free
@@ -17,23 +17,19 @@
 
 pragma License (Modified_GPL);
 
-function SAL.Gen_Bounded_Definite_Vectors.Gen_Image (Item : in Vector) return 
String
+with Ada.Strings.Unbounded;
+function SAL.Gen_Bounded_Definite_Vectors_Sorted.Gen_Image_Aux (Item : in 
Vector; Aux : in Aux_Data) return String
 is
-   use all type SAL.Base_Peek_Type;
-   use Ada.Strings;
    use Ada.Strings.Unbounded;
-   Result : Unbounded_String := To_Unbounded_String ("(");
-   Last   : Base_Peek_Type   := To_Peek_Index (Item.Last);
+   Result : Unbounded_String        := To_Unbounded_String ("(");
+   Last   : constant Base_Peek_Type := Item.Last;
 begin
-   for I in Item.Elements (1 .. Last) loop
-      Result := Result &
-        ((if Trim
-          then Fixed.Trim (Element_Image (Item.Elements (I)), Left)
-          else Element_Image (Item.Elements (I)));
+   for I in 1 .. Last loop
+      Result := Result & Element_Image (Item.Elements (I), Aux);
       if I /= Last then
          Result := Result & ", ";
       end if;
    end loop;
    Result := Result & ")";
    return To_String (Result);
-end SAL.Gen_Bounded_Definite_Vectors.Gen_Image;
+end SAL.Gen_Bounded_Definite_Vectors_Sorted.Gen_Image_Aux;
diff --git 
a/packages/wisi/sal-gen_bounded_definite_vectors_sorted-gen_image_aux.ads 
b/packages/wisi/sal-gen_bounded_definite_vectors_sorted-gen_image_aux.ads
new file mode 100644
index 0000000..28c56fd
--- /dev/null
+++ b/packages/wisi/sal-gen_bounded_definite_vectors_sorted-gen_image_aux.ads
@@ -0,0 +1,23 @@
+--  Abstract :
+--
+--  Image with auxiliary data for instantiations of parent.
+--
+--  Copyright (C) 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+generic
+   type Aux_Data (<>) is private;
+   with function Element_Image (Item : in Element_Type; Aux : in Aux_Data) 
return String;
+function SAL.Gen_Bounded_Definite_Vectors_Sorted.Gen_Image_Aux (Item : in 
Vector; Aux : in Aux_Data) return String;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors_sorted-gen_refs.adb 
b/packages/wisi/sal-gen_bounded_definite_vectors_sorted-gen_refs.adb
new file mode 100644
index 0000000..fb5d619
--- /dev/null
+++ b/packages/wisi/sal-gen_bounded_definite_vectors_sorted-gen_refs.adb
@@ -0,0 +1,29 @@
+--  Abstract :
+--
+--  See spec.
+--
+--  Copyright (C) 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+package body SAL.Gen_Bounded_Definite_Vectors_Sorted.Gen_Refs is
+
+   function Constant_Ref (Container : aliased Vector; Index : in Peek_Type) 
return Constant_Reference_Type
+   is begin
+      return
+        (Element => Container.Elements (Index)'Access,
+         Dummy   => 1);
+   end Constant_Ref;
+
+end SAL.Gen_Bounded_Definite_Vectors_Sorted.Gen_Refs;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors_sorted-gen_refs.ads 
b/packages/wisi/sal-gen_bounded_definite_vectors_sorted-gen_refs.ads
new file mode 100644
index 0000000..17e98c4
--- /dev/null
+++ b/packages/wisi/sal-gen_bounded_definite_vectors_sorted-gen_refs.ads
@@ -0,0 +1,39 @@
+--  Abstract :
+--
+--  Constant_Reference for parent.
+--
+--  In a child package because it's not Spark, and Spark does not
+--  allow 'Spark_Mode => Off' on type declarations.
+--
+--  Copyright (C) 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+generic
+package SAL.Gen_Bounded_Definite_Vectors_Sorted.Gen_Refs is
+
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is private with
+     Implicit_Dereference => Element;
+
+   function Constant_Ref (Container : aliased Vector; Index : in Peek_Type) 
return Constant_Reference_Type with
+     Inline;
+
+private
+
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
+end SAL.Gen_Bounded_Definite_Vectors_Sorted.Gen_Refs;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors-gen_sorted.adb 
b/packages/wisi/sal-gen_bounded_definite_vectors_sorted.adb
similarity index 56%
rename from packages/wisi/sal-gen_bounded_definite_vectors-gen_sorted.adb
rename to packages/wisi/sal-gen_bounded_definite_vectors_sorted.adb
index b77f06c..9979f28 100644
--- a/packages/wisi/sal-gen_bounded_definite_vectors-gen_sorted.adb
+++ b/packages/wisi/sal-gen_bounded_definite_vectors_sorted.adb
@@ -1,90 +1,82 @@
---  Abstract :
---
---  See spec.
---
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
---
---  This library is free software;  you can redistribute it and/or modify it
---  under terms of the  GNU General Public License  as published by the Free
---  Software  Foundation;  either version 3,  or (at your  option) any later
---  version. This library is distributed in the hope that it will be useful,
---  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
---  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
---  As a special exception under Section 7 of GPL version 3, you are granted
---  additional permissions described in the GCC Runtime Library Exception,
---  version 3.1, as published by the Free Software Foundation.
-
-pragma License (Modified_GPL);
-
-package body SAL.Gen_Bounded_Definite_Vectors.Gen_Sorted is
-
-   overriding procedure Append (Container : in out Vector; New_Item : in 
Element_Type)
-   is begin
-      raise Programmer_Error;
-   end Append;
-
-   overriding procedure Prepend (Container : in out Vector; New_Item : in 
Element_Type)
-   is begin
-      raise Programmer_Error;
-   end Prepend;
-
-   overriding
-   procedure Insert
-     (Container : in out Vector;
-      New_Item  : in     Element_Type;
-      Before    : in     Extended_Index)
-   is begin
-      raise Programmer_Error;
-   end Insert;
-
-   procedure Insert
-     (Container       : in out Vector;
-      New_Item        : in     Element_Type;
-      Ignore_If_Equal : in     Boolean := False)
-   is
-      K : constant Base_Peek_Type := To_Peek_Index (Container.Last);
-      J : Base_Peek_Type := K;
-   begin
-      if K + 1 > Container.Elements'Last then
-         raise Container_Full;
-
-      elsif K = 0 then
-         --  Container empty
-         Container.Last := Container.Last + 1;
-         Container.Elements (1) := New_Item;
-         return;
-      end if;
-
-      loop
-         exit when J < 1;
-
-         case Element_Compare (New_Item, Container.Elements (J)) is
-         when Less =>
-            J := J - 1;
-         when Equal =>
-            if Ignore_If_Equal then
-               return;
-            else
-               --  Insert after J
-               exit;
-            end if;
-         when Greater =>
-            --  Insert after J
-            exit;
-         end case;
-      end loop;
-
-      if J = 0 then
-         --  Insert before all
-         Container.Elements (2 .. K + 1) := Container.Elements (1 .. K);
-         Container.Elements (1) := New_Item;
-      else
-         --  Insert after J
-         Container.Elements (J + 2 .. K + 1) := Container.Elements (J + 1 .. 
K);
-         Container.Elements (J + 1) := New_Item;
-      end if;
-      Container.Last := Container.Last + 1;
-   end Insert;
-
-end SAL.Gen_Bounded_Definite_Vectors.Gen_Sorted;
+--  Abstract :
+--
+--  See spec.
+--
+--  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+package body SAL.Gen_Bounded_Definite_Vectors_Sorted is
+
+   function Length (Container : in Vector) return Ada.Containers.Count_Type
+     is (Ada.Containers.Count_Type (Container.Last));
+
+   function Is_Full (Container : in Vector) return Boolean
+   is begin
+      return Container.Last = Peek_Type (Capacity);
+   end Is_Full;
+
+   procedure Clear (Container : in out Vector)
+   is begin
+      Container.Last := No_Index;
+   end Clear;
+
+   function Last_Index (Container : in Vector) return Base_Peek_Type
+     is (Container.Last);
+
+   function Element (Container : in Vector; Index : in Peek_Type) return 
Element_Type
+     is (Container.Elements (Index));
+
+   procedure Insert
+     (Container       : in out Vector;
+      New_Item        : in     Element_Type;
+      Ignore_If_Equal : in     Boolean := False)
+   is
+      K : constant Base_Peek_Type := Container.Last;
+      J : Base_Peek_Type := K;
+   begin
+      if K = 0 then
+         --  Container empty
+         Container.Last := 1;
+         Container.Elements (1) := New_Item;
+         return;
+      end if;
+
+      loop
+         pragma Loop_Invariant (J < Container.Elements'Last);
+         pragma Loop_Variant (Decreases => J);
+         exit when J < 1;
+
+         case Element_Compare (New_Item, Container.Elements (J)) is
+         when Less =>
+            J := J - 1;
+         when Equal =>
+            if Ignore_If_Equal then
+               return;
+            else
+               --  Insert after J
+               exit;
+            end if;
+         when Greater =>
+            --  Insert after J
+            exit;
+         end case;
+      end loop;
+
+      Container.Elements (J + 2 .. K + 1) := Container.Elements (J + 1 .. K);
+      Container.Elements (J + 1) := New_Item;
+      Container.Last := Container.Last + 1;
+   end Insert;
+
+end SAL.Gen_Bounded_Definite_Vectors_Sorted;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors_sorted.ads 
b/packages/wisi/sal-gen_bounded_definite_vectors_sorted.ads
new file mode 100644
index 0000000..7bc398c
--- /dev/null
+++ b/packages/wisi/sal-gen_bounded_definite_vectors_sorted.ads
@@ -0,0 +1,85 @@
+--  Abstract :
+--
+--  A simple bounded sorted vector of definite items, in Spark.
+--
+--  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+generic
+   type Element_Type is private;
+   with function Element_Compare (Left, Right : in Element_Type) return 
Compare_Result;
+   Capacity : in Ada.Containers.Count_Type;
+package SAL.Gen_Bounded_Definite_Vectors_Sorted
+  with Spark_Mode
+is
+   use all type Ada.Containers.Count_Type;
+
+   type Vector is private with
+     Default_Initial_Condition => Length (Vector) = 0;
+
+   function Length (Container : in Vector) return Ada.Containers.Count_Type 
with
+     Post => Length'Result in 0 .. Capacity;
+
+   function Is_Full (Container : in Vector) return Boolean with
+     Post => Is_Full'Result = (Length (Container) = Capacity);
+
+   procedure Clear (Container : in out Vector) with
+     Post => Length (Container) = 0;
+
+   function First_Index (Container : in Vector) return Peek_Type
+     is (Peek_Type'First) with
+       Depends => (First_Index'Result => null, null => Container);
+
+   function Last_Index (Container : in Vector) return Base_Peek_Type with
+     Inline;
+
+   function Element (Container : in Vector; Index : in Peek_Type) return 
Element_Type with
+     Pre => Index in First_Index (Container) .. Last_Index (Container);
+
+   function Is_Sorted (Container : in Vector) return Boolean is
+     (for all I in First_Index (Container) .. Last_Index (Container) - 1 =>
+        Element_Compare (Element (Container, I), Element (Container, I + 1)) 
in Less | Equal);
+
+   procedure Insert
+     (Container       : in out Vector;
+      New_Item        : in     Element_Type;
+      Ignore_If_Equal : in     Boolean := False) with
+     Pre  => Length (Container) < Capacity,
+     Post => Is_Sorted (Container) and
+             (Length (Container) = Length (Container'Old) or
+              Length (Container) = Length (Container'Old) + 1);
+   --  Insert New_Item in sorted position. Items are sorted in increasing
+   --  order according to Element_Compare. New_Item is inserted after
+   --  Equal items, unless Ignore_If_Equal is true, in which case
+   --  New_Item is not inserted.
+   --
+   --  The presense of Ignore_If_Equal makes it too difficult to prove
+   --  whether the length did or did not increase.
+
+private
+
+   type Array_Type is array (Peek_Type range 1 .. Peek_Type (Capacity)) of 
aliased Element_Type;
+
+   No_Index : constant Base_Peek_Type := 0;
+
+   type Vector is record
+      Elements : Array_Type;
+      Last     : Base_Peek_Type := No_Index;
+   end record with
+     Type_Invariant => Last <= Elements'Last and Is_Sorted (Vector);
+   pragma Annotate (GNATprove, Intentional, "type ""Vector"" is not fully 
initialized",
+                    "Only items in Elements with index < Last are accessed");
+
+end SAL.Gen_Bounded_Definite_Vectors_Sorted;
diff --git a/packages/wisi/sal-gen_definite_doubly_linked_lists.adb 
b/packages/wisi/sal-gen_definite_doubly_linked_lists.adb
index e8da73a..f0c5776 100644
--- a/packages/wisi/sal-gen_definite_doubly_linked_lists.adb
+++ b/packages/wisi/sal-gen_definite_doubly_linked_lists.adb
@@ -2,7 +2,7 @@
 --
 --  see spec
 --
---  Copyright (C) 2017, 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
 --
 --  This library is free software; you can redistribute it and/or
 --  modify it under terms of the GNU General Public License as
@@ -24,6 +24,21 @@ pragma License (Modified_GPL);
 
 package body SAL.Gen_Definite_Doubly_Linked_Lists is
 
+   procedure Delete_Node (Container : in out List; Node : in out Node_Access)
+   is begin
+      if Node.Next = null then
+         Container.Tail := Node.Prev;
+      else
+         Node.Next.Prev := Node.Prev;
+      end if;
+      if Node.Prev = null then
+         Container.Head := Node.Next;
+      else
+         Node.Prev.Next := Node.Next;
+      end if;
+      Free (Node);
+   end Delete_Node;
+
    ---------
    --  Public operations, declaration order.
 
@@ -186,23 +201,21 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists is
    procedure Delete (Container : in out List; Position : in out Cursor)
    is
       use all type Ada.Containers.Count_Type;
-      Node : Node_Access renames Position.Ptr;
    begin
-      if Node.Next = null then
-         Container.Tail := Node.Prev;
-      else
-         Node.Next.Prev := Node.Prev;
-      end if;
-      if Node.Prev = null then
-         Container.Head := Node.Next;
-      else
-         Node.Prev.Next := Node.Next;
-      end if;
-      Free (Node);
+      Delete_Node (Container, Position.Ptr);
       Position        := No_Element;
       Container.Count := Container.Count - 1;
    end Delete;
 
+   procedure Delete_First (Container : in out List)
+   is
+      use all type Ada.Containers.Count_Type;
+      Node : Node_Access := Container.Head;
+   begin
+      Delete_Node (Container, Node);
+      Container.Count := Container.Count - 1;
+   end Delete_First;
+
    procedure Insert
      (Container : in out List;
       Before    : in     Cursor;
@@ -252,25 +265,25 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists is
    is
       pragma Unreferenced (Container);
    begin
-      return (Element => Position.Ptr.all.Element'Access);
+      return (Element => Position.Ptr.all.Element'Access, Dummy => 1);
    end Constant_Reference;
 
    function Constant_Ref (Position : in Cursor) return Constant_Reference_Type
    is begin
-      return (Element => Position.Ptr.all.Element'Access);
+      return (Element => Position.Ptr.all.Element'Access, Dummy => 1);
    end Constant_Ref;
 
-   function Reference (Container : in List; Position : in Cursor) return 
Reference_Type
+   function Variable_Reference (Container : in List; Position : in Cursor) 
return Variable_Reference_Type
    is
       pragma Unreferenced (Container);
    begin
-      return (Element => Position.Ptr.all.Element'Access);
-   end Reference;
+      return (Element => Position.Ptr.all.Element'Access, Dummy => 1);
+   end Variable_Reference;
 
-   function Ref (Position : in Cursor) return Reference_Type
+   function Variable_Ref (Position : in Cursor) return Variable_Reference_Type
    is begin
-      return (Element => Position.Ptr.all.Element'Access);
-   end Ref;
+      return (Element => Position.Ptr.all.Element'Access, Dummy => 1);
+   end Variable_Ref;
 
    function Iterate (Container : aliased in List) return 
Iterator_Interfaces.Reversible_Iterator'Class
    is begin
diff --git a/packages/wisi/sal-gen_definite_doubly_linked_lists.ads 
b/packages/wisi/sal-gen_definite_doubly_linked_lists.ads
index fda94c4..9648320 100644
--- a/packages/wisi/sal-gen_definite_doubly_linked_lists.ads
+++ b/packages/wisi/sal-gen_definite_doubly_linked_lists.ads
@@ -34,7 +34,7 @@ package SAL.Gen_Definite_Doubly_Linked_Lists is
    type List is new Ada.Finalization.Controlled with private
    with
       Constant_Indexing => Constant_Reference,
-      Variable_Indexing => Reference,
+      Variable_Indexing => Variable_Reference,
       Default_Iterator  => Iterate,
       Iterator_Element  => Element_Type;
 
@@ -52,6 +52,8 @@ package SAL.Gen_Definite_Doubly_Linked_Lists is
    overriding procedure Finalize (Container : in out List);
    --  Free all items in List.
 
+   procedure Clear (Container : in out List) renames Finalize;
+
    function Length (Container : in List) return Ada.Containers.Count_Type;
 
    procedure Append (Container : in out List; Element : in Element_Type);
@@ -83,6 +85,8 @@ package SAL.Gen_Definite_Doubly_Linked_Lists is
    procedure Delete (Container : in out List; Position : in out Cursor)
    with Pre => Position /= No_Element;
 
+   procedure Delete_First (Container : in out List);
+
    procedure Insert
      (Container : in out List;
       Before    : in     Cursor;
@@ -92,25 +96,24 @@ package SAL.Gen_Definite_Doubly_Linked_Lists is
    function Persistent_Ref (Position : in Cursor) return access Element_Type
    with Pre => Position /= No_Element;
 
-   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is null record
-   with Implicit_Dereference => Element;
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is private with
+     Implicit_Dereference => Element;
 
    function Constant_Reference (Container : in List; Position : in Cursor) 
return Constant_Reference_Type
-   with Pre => Position /= No_Element;
-   pragma Inline (Constant_Reference);
+   with Inline, Pre => Position /= No_Element;
+   --  Not 'Constant_Ref' because that is taken, and it is wrong for 
Constant_Indexing
+
    function Constant_Ref (Position : in Cursor) return Constant_Reference_Type
-   with Pre => Position /= No_Element;
-   pragma Inline (Constant_Ref);
+   with Inline, Pre => Position /= No_Element;
 
-   type Reference_Type (Element : not null access Element_Type) is null record
-   with Implicit_Dereference => Element;
+   type Variable_Reference_Type (Element : not null access Element_Type) is 
private with
+     Implicit_Dereference => Element;
 
-   function Reference (Container : in List; Position : in Cursor) return 
Reference_Type
-   with Pre => Position /= No_Element;
-   pragma Inline (Reference);
-   function Ref (Position : in Cursor) return Reference_Type
-   with Pre => Position /= No_Element;
-   pragma Inline (Ref);
+   function Variable_Reference (Container : in List; Position : in Cursor) 
return Variable_Reference_Type
+   with Inline, Pre => Position /= No_Element;
+
+   function Variable_Ref (Position : in Cursor) return Variable_Reference_Type
+   with Inline, Pre => Position /= No_Element;
 
    package Iterator_Interfaces is new Ada.Iterator_Interfaces (Cursor, 
Has_Element);
 
@@ -140,6 +143,16 @@ private
       Ptr       : Node_Access;
    end record;
 
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
+   type Variable_Reference_Type (Element : not null access Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
    Empty_List : constant List := (Ada.Finalization.Controlled with null, null, 
0);
 
    No_Element : constant Cursor := (null, null);
diff --git a/packages/wisi/sal-gen_definite_doubly_linked_lists_sorted.adb 
b/packages/wisi/sal-gen_definite_doubly_linked_lists_sorted.adb
index addac4f..7a4bb11 100644
--- a/packages/wisi/sal-gen_definite_doubly_linked_lists_sorted.adb
+++ b/packages/wisi/sal-gen_definite_doubly_linked_lists_sorted.adb
@@ -1,542 +1,542 @@
---  Abstract :
---
---  See spec.
---
---  Copyright (C) 2018 Free Software Foundation, Inc.
---
---  This library is free software;  you can redistribute it and/or modify it
---  under terms of the  GNU General Public License  as published by the Free
---  Software  Foundation;  either version 3,  or (at your  option) any later
---  version. This library is distributed in the hope that it will be useful,
---  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
---  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
---  As a special exception under Section 7 of GPL version 3, you are granted
---  additional permissions described in the GCC Runtime Library Exception,
---  version 3.1, as published by the Free Software Foundation.
-
-pragma License (Modified_GPL);
-
-package body SAL.Gen_Definite_Doubly_Linked_Lists_Sorted is
-
-   ----------
-   --  Body subprograms, alphabetical
-
-   procedure Find
-     (Container     : in     List;
-      Element       : in     Element_Type;
-      Found         :    out Node_Access;
-      Found_Compare :    out Compare_Result)
-   is
-      --  Return pointer to first item in Container for which Compare (item,
-      --  element) returns True or Greater. If no such element exists, Found
-      --  is null, Found_Compare is Less.
-      use Ada.Containers;
-   begin
-      if Container.Head = null then
-         Found         := null;
-         Found_Compare := Less;
-         return;
-      end if;
-
-      declare
-         Low_Index  : Count_Type  := 1;
-         High_Index : Count_Type  := Container.Count;
-         Next_Node  : Node_Access := Container.Head;
-         Next_Index : Count_Type  := Low_Index;
-         Old_Index  : Count_Type;
-      begin
-         loop
-            Old_Index  := Next_Index;
-            Next_Index := (Low_Index + High_Index) / 2;
-
-            if Next_Index > Old_Index then
-               for I in Old_Index + 1 .. Next_Index loop
-                  Next_Node := Next_Node.Next;
-               end loop;
-            elsif Next_Index < Old_Index then
-               for I in Next_Index .. Old_Index - 1 loop
-                  Next_Node := Next_Node.Prev;
-               end loop;
-            end if;
-
-            case Element_Compare (Next_Node.Element, Element) is
-            when Less =>
-               if Next_Index = High_Index then
-                  --  no more nodes to check
-                  Found         := null;
-                  Found_Compare := Less;
-                  return;
-               elsif Next_Index = Low_Index then
-                  --  force check of high_index
-                  Low_Index := High_Index;
-               else
-                  Low_Index := Next_Index;
-               end if;
-
-            when Equal =>
-               Found         := Next_Node;
-               Found_Compare := Equal;
-               return;
-
-            when Greater =>
-               if Low_Index = Next_Index then
-                  --  no more nodes to check
-                  Found         := Next_Node;
-                  Found_Compare := Greater;
-                  return;
-               elsif High_Index = Next_Index then
-                  --  Desired result is either high_index or low_index
-                  pragma Assert (Low_Index + 1 = High_Index);
-                  case Element_Compare (Next_Node.Prev.Element, Element) is
-                  when Less =>
-                     Found         := Next_Node;
-                     Found_Compare := Greater;
-                     return;
-                  when Equal =>
-                     Found         := Next_Node.Prev;
-                     Found_Compare := Equal;
-                     return;
-                  when Greater =>
-                     Found         := Next_Node.Prev;
-                     Found_Compare := Greater;
-                     return;
-                  end case;
-               else
-                  High_Index := Next_Index;
-               end if;
-            end case;
-         end loop;
-      end;
-   end Find;
-
-   procedure Insert_Before
-     (Container : in out List;
-      Before    : in     Node_Access;
-      Element   : in     Element_Type)
-   is
-      New_Node : constant Node_Access := new Node_Type'
-        (Element => Element,
-         Prev    => Before.Prev,
-         Next    => Before);
-   begin
-      if Before = Container.Head then
-         Before.Prev    := New_Node;
-         Container.Head := New_Node;
-      else
-         Before.Prev.Next := New_Node;
-         Before.Prev      := New_Node;
-      end if;
-   end Insert_Before;
-
-   procedure Insert_After_Tail
-     (Container : in out List;
-      Element   : in     Element_Type)
-   is
-      New_Node : constant Node_Access := new Node_Type'
-        (Element => Element,
-         Prev    => Container.Tail,
-         Next    => null);
-   begin
-      Container.Tail.Next := New_Node;
-      Container.Tail      := New_Node;
-   end Insert_After_Tail;
-
-   ---------
-   --  Public operations, declaration order.
-
-   overriding
-   procedure Adjust (Container : in out List)
-   is
-      Next_Source : Node_Access := Container.Head;
-      New_Node    : Node_Access;
-   begin
-      if Next_Source = null then
-         return;
-      end if;
-
-      Container.Tail := null;
-
-      loop
-         New_Node := new Node_Type'
-           (Element => Next_Source.Element,
-            Next    => null,
-            Prev    => Container.Tail);
-         if Container.Tail = null then
-            Container.Head := New_Node;
-            Container.Tail := New_Node;
-         else
-            Container.Tail.Next := New_Node;
-            Container.Tail      := New_Node;
-         end if;
-         Next_Source := Next_Source.Next;
-         exit when Next_Source = null;
-      end loop;
-   end Adjust;
-
-   overriding
-   procedure Finalize (Container : in out List)
-   is
-      Next : Node_Access := Container.Head;
-   begin
-      loop
-         exit when Next = null;
-         Next := Container.Head.Next;
-         Free (Container.Head);
-         Container.Head := Next;
-      end loop;
-      Container.Tail := null;
-   end Finalize;
-
-   overriding function "=" (Left, Right : in List) return Boolean
-   is
-      Left_I  : Node_Access := Left.Head;
-      Right_I : Node_Access := Right.Head;
-   begin
-      loop
-         exit when Left_I = null;
-
-         if Right_I = null then
-            return False;
-         elsif Left_I.Element /= Right_I.Element then
-            return False;
-         end if;
-
-         Left_I  := Left_I.Next;
-         Right_I := Right_I.Next;
-      end loop;
-      return Right_I = null;
-   end "=";
-
-   function Length (Container : in List) return Ada.Containers.Count_Type
-   is begin
-      return Container.Count;
-   end Length;
-
-   function To_List (Element : in Element_Type) return List
-   is
-      New_Node : constant Node_Access := new Node_Type'
-        (Element => Element,
-         Prev    => null,
-         Next    => null);
-   begin
-      return Result : constant List :=
-        (Ada.Finalization.Controlled with
-         Head  => New_Node,
-         Tail  => New_Node,
-         Count => 1);
-   end To_List;
-
-   procedure Insert (Container : in out List; Element : in Element_Type)
-   is
-      Node    : Node_Access := Container.Head;
-      Compare : Compare_Result;
-   begin
-      if Node = null then
-         Container := To_List (Element);
-      else
-         Find (Container, Element, Node, Compare);
-
-         Container.Count := Container.Count + 1;
-
-         if Node = null then
-            Insert_After_Tail (Container, Element);
-         else
-            Insert_Before (Container, Node, Element);
-         end if;
-      end if;
-   end Insert;
-
-   function Contains (Container : in List; Element : in Element_Type) return 
Boolean
-   is
-      Node    : Node_Access := Container.Head;
-      Compare : Compare_Result;
-   begin
-      Find (Container, Element, Node, Compare);
-      return Compare = Equal;
-   end Contains;
-
-   procedure Merge
-     (Target : in out List;
-      Source : in     List;
-      Added  :    out Boolean)
-   is
-      Target_I : Node_Access := Target.Head;
-      Source_I : Node_Access := Source.Head;
-   begin
-      if Target_I = null then
-         if Source_I = null then
-            Added := False;
-         else
-            Target.Head  := Source.Head;
-            Target.Tail  := Source.Tail;
-            Target.Count := Source.Count;
-            Adjust (Target);
-
-            Added := True;
-         end if;
-
-      elsif Source_I = null then
-         Added := False;
-
-      else
-         Added := False;
-         loop
-            exit when Source_I = null;
-
-            if Target_I = null then
-               Added := True;
-               Target.Count := Target.Count + 1;
-               Insert_After_Tail (Target, Source_I.Element);
-               Source_I := Source_I.Next;
-
-            else
-               case Element_Compare (Target_I.Element, Source_I.Element) is
-               when Greater =>
-                  Added := True;
-                  Target.Count := Target.Count + 1;
-                  Insert_Before (Target, Target_I, Source_I.Element);
-                  Source_I := Source_I.Next;
-
-               when Equal =>
-                  Target_I := Target_I.Next;
-                  Source_I := Source_I.Next;
-
-               when Less =>
-                  Target_I := Target_I.Next;
-               end case;
-            end if;
-         end loop;
-      end if;
-   end Merge;
-
-   procedure Merge
-     (Target  : in out List;
-      Source  : in     List;
-      Added   :    out Boolean;
-      Exclude : in     Element_Type)
-   is
-      Target_I : Node_Access := Target.Head;
-      Source_I : Node_Access := Source.Head;
-   begin
-      Added := False;
-
-      if Target_I = null then
-         if Source_I = null then
-            return;
-         else
-            loop
-               if Source_I = null then
-                  return;
-               end if;
-               exit when Source_I.Element /= Exclude;
-               Source_I := Source_I.Next;
-            end loop;
-
-            Added    := True;
-            Target   := To_List (Source_I.Element);
-            Source_I := Source_I.Next;
-         end if;
-      end if;
-
-      loop
-         exit when Source_I = null;
-
-         if Source_I.Element = Exclude then
-            Source_I := Source_I.Next;
-
-         elsif Target_I = null then
-            Added := True;
-            Target.Count := Target.Count + 1;
-            Insert_After_Tail (Target, Source_I.Element);
-            Source_I := Source_I.Next;
-
-         else
-            case Element_Compare (Target_I.Element, Source_I.Element) is
-            when Greater =>
-               Added := True;
-               Target.Count := Target.Count + 1;
-               Insert_Before (Target, Target_I, Source_I.Element);
-               Source_I := Source_I.Next;
-
-            when Equal =>
-               Target_I := Target_I.Next;
-               Source_I := Source_I.Next;
-
-            when Less =>
-               Target_I := Target_I.Next;
-            end case;
-         end if;
-      end loop;
-   end Merge;
-
-   function Has_Element (Position : in Cursor) return Boolean
-   is begin
-      return Position.Ptr /= null;
-   end Has_Element;
-
-   function First (Container : in List) return Cursor
-   is begin
-      if Container.Head = null then
-         return No_Element;
-      else
-         return (Container'Unrestricted_Access, Container.Head);
-      end if;
-   end First;
-
-   function Last (Container : in List) return Cursor
-   is begin
-      if Container.Tail = null then
-         return No_Element;
-      else
-         return (Container'Unrestricted_Access, Container.Tail);
-      end if;
-   end Last;
-
-   function Find (Container : in List; Element : in Element_Type) return Cursor
-   is
-      Node    : Node_Access;
-      Compare : Compare_Result;
-   begin
-      Find (Container, Element, Node, Compare);
-
-      if Node = null then
-         return No_Element;
-      elsif Compare = Equal then
-         return (Container'Unrestricted_Access, Node);
-      else
-         return No_Element;
-      end if;
-   end Find;
-
-   procedure Next (Position : in out Cursor)
-   is begin
-      if Position.Ptr /= null then
-         if Position.Ptr.Next = null then
-            Position := No_Element;
-         else
-            Position.Ptr := Position.Ptr.Next;
-         end if;
-      end if;
-   end Next;
-
-   function Next (Position : in Cursor) return Cursor
-   is begin
-      if Position.Ptr = null then
-         return Position;
-      else
-         if Position.Ptr.Next = null then
-            return No_Element;
-         else
-            return (Position.Container, Position.Ptr.Next);
-         end if;
-      end if;
-   end Next;
-
-   function Previous (Position : in Cursor) return Cursor
-   is begin
-      if Position.Ptr = null then
-         return Position;
-      else
-         if Position.Ptr.Prev = null then
-            return No_Element;
-         else
-            return (Position.Container, Position.Ptr.Prev);
-         end if;
-      end if;
-   end Previous;
-
-   function Element (Position : in Cursor) return Element_Type
-   is begin
-      return Position.Ptr.Element;
-   end Element;
-
-   procedure Delete (Container : in out List; Position : in out Cursor)
-   is
-      Node : Node_Access renames Position.Ptr;
-   begin
-      if Node.Next = null then
-         Container.Tail := Node.Prev;
-      else
-         Node.Next.Prev := Node.Prev;
-      end if;
-      if Node.Prev = null then
-         Container.Head := Node.Next;
-      else
-         Node.Prev.Next := Node.Next;
-      end if;
-      Free (Node);
-      Position        := No_Element;
-      Container.Count := Container.Count - 1;
-   end Delete;
-
-   function Pop (Container : in out List) return Element_Type
-   is
-      Node : Node_Access := Container.Head;
-   begin
-      return Result : constant Element_Type := Container.Head.Element do
-         Container.Head := Node.Next;
-         if Node.Next = null then
-            Container.Tail := null;
-         else
-            Node.Next.Prev := null;
-         end if;
-         Free (Node);
-         Container.Count := Container.Count - 1;
-      end return;
-   end Pop;
-
-   function Constant_Reference (Container : in List; Position : in Cursor) 
return Constant_Reference_Type
-   is
-      pragma Unreferenced (Container);
-   begin
-      return (Element => Position.Ptr.all.Element'Access);
-   end Constant_Reference;
-
-   function Constant_Ref (Position : in Cursor) return Constant_Reference_Type
-   is begin
-      return (Element => Position.Ptr.all.Element'Access);
-   end Constant_Ref;
-
-   function Reference (Container : in List; Position : in Cursor) return 
Reference_Type
-   is
-      pragma Unreferenced (Container);
-   begin
-      return (Element => Position.Ptr.all.Element'Access);
-   end Reference;
-
-   function Ref (Position : in Cursor) return Reference_Type
-   is begin
-      return (Element => Position.Ptr.all.Element'Access);
-   end Ref;
-
-   function Iterate (Container : aliased in List) return 
Iterator_Interfaces.Reversible_Iterator'Class
-   is begin
-      return Iterator'(Container => Container'Unrestricted_Access);
-   end Iterate;
-
-   overriding function First (Object : Iterator) return Cursor
-   is begin
-      return First (Object.Container.all);
-   end First;
-
-   overriding function Last  (Object : Iterator) return Cursor
-   is begin
-      return Last (Object.Container.all);
-   end Last;
-
-   overriding function Next (Object : in Iterator; Position : in Cursor) 
return Cursor
-   is
-      pragma Unreferenced (Object);
-   begin
-      return Next (Position);
-   end Next;
-
-   overriding function Previous (Object : in Iterator; Position : in Cursor) 
return Cursor
-   is
-      pragma Unreferenced (Object);
-   begin
-      return Previous (Position);
-   end Previous;
-
-end SAL.Gen_Definite_Doubly_Linked_Lists_Sorted;
+--  Abstract :
+--
+--  See spec.
+--
+--  Copyright (C) 2018, 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+package body SAL.Gen_Definite_Doubly_Linked_Lists_Sorted is
+
+   ----------
+   --  Body subprograms, alphabetical
+
+   procedure Find
+     (Container     : in     List;
+      Element       : in     Element_Type;
+      Found         :    out Node_Access;
+      Found_Compare :    out Compare_Result)
+   is
+      --  Return pointer to first item in Container for which Compare (item,
+      --  element) returns True or Greater. If no such element exists, Found
+      --  is null, Found_Compare is Less.
+      use Ada.Containers;
+   begin
+      if Container.Head = null then
+         Found         := null;
+         Found_Compare := Less;
+         return;
+      end if;
+
+      declare
+         Low_Index  : Count_Type  := 1;
+         High_Index : Count_Type  := Container.Count;
+         Next_Node  : Node_Access := Container.Head;
+         Next_Index : Count_Type  := Low_Index;
+         Old_Index  : Count_Type;
+      begin
+         loop
+            Old_Index  := Next_Index;
+            Next_Index := (Low_Index + High_Index) / 2;
+
+            if Next_Index > Old_Index then
+               for I in Old_Index + 1 .. Next_Index loop
+                  Next_Node := Next_Node.Next;
+               end loop;
+            elsif Next_Index < Old_Index then
+               for I in Next_Index .. Old_Index - 1 loop
+                  Next_Node := Next_Node.Prev;
+               end loop;
+            end if;
+
+            case Element_Compare (Next_Node.Element, Element) is
+            when Less =>
+               if Next_Index = High_Index then
+                  --  no more nodes to check
+                  Found         := null;
+                  Found_Compare := Less;
+                  return;
+               elsif Next_Index = Low_Index then
+                  --  force check of high_index
+                  Low_Index := High_Index;
+               else
+                  Low_Index := Next_Index;
+               end if;
+
+            when Equal =>
+               Found         := Next_Node;
+               Found_Compare := Equal;
+               return;
+
+            when Greater =>
+               if Low_Index = Next_Index then
+                  --  no more nodes to check
+                  Found         := Next_Node;
+                  Found_Compare := Greater;
+                  return;
+               elsif High_Index = Next_Index then
+                  --  Desired result is either high_index or low_index
+                  pragma Assert (Low_Index + 1 = High_Index);
+                  case Element_Compare (Next_Node.Prev.Element, Element) is
+                  when Less =>
+                     Found         := Next_Node;
+                     Found_Compare := Greater;
+                     return;
+                  when Equal =>
+                     Found         := Next_Node.Prev;
+                     Found_Compare := Equal;
+                     return;
+                  when Greater =>
+                     Found         := Next_Node.Prev;
+                     Found_Compare := Greater;
+                     return;
+                  end case;
+               else
+                  High_Index := Next_Index;
+               end if;
+            end case;
+         end loop;
+      end;
+   end Find;
+
+   procedure Insert_Before
+     (Container : in out List;
+      Before    : in     Node_Access;
+      Element   : in     Element_Type)
+   is
+      New_Node : constant Node_Access := new Node_Type'
+        (Element => Element,
+         Prev    => Before.Prev,
+         Next    => Before);
+   begin
+      if Before = Container.Head then
+         Before.Prev    := New_Node;
+         Container.Head := New_Node;
+      else
+         Before.Prev.Next := New_Node;
+         Before.Prev      := New_Node;
+      end if;
+   end Insert_Before;
+
+   procedure Insert_After_Tail
+     (Container : in out List;
+      Element   : in     Element_Type)
+   is
+      New_Node : constant Node_Access := new Node_Type'
+        (Element => Element,
+         Prev    => Container.Tail,
+         Next    => null);
+   begin
+      Container.Tail.Next := New_Node;
+      Container.Tail      := New_Node;
+   end Insert_After_Tail;
+
+   ---------
+   --  Public operations, declaration order.
+
+   overriding
+   procedure Adjust (Container : in out List)
+   is
+      Next_Source : Node_Access := Container.Head;
+      New_Node    : Node_Access;
+   begin
+      if Next_Source = null then
+         return;
+      end if;
+
+      Container.Tail := null;
+
+      loop
+         New_Node := new Node_Type'
+           (Element => Next_Source.Element,
+            Next    => null,
+            Prev    => Container.Tail);
+         if Container.Tail = null then
+            Container.Head := New_Node;
+            Container.Tail := New_Node;
+         else
+            Container.Tail.Next := New_Node;
+            Container.Tail      := New_Node;
+         end if;
+         Next_Source := Next_Source.Next;
+         exit when Next_Source = null;
+      end loop;
+   end Adjust;
+
+   overriding
+   procedure Finalize (Container : in out List)
+   is
+      Next : Node_Access := Container.Head;
+   begin
+      loop
+         exit when Next = null;
+         Next := Container.Head.Next;
+         Free (Container.Head);
+         Container.Head := Next;
+      end loop;
+      Container.Tail := null;
+   end Finalize;
+
+   overriding function "=" (Left, Right : in List) return Boolean
+   is
+      Left_I  : Node_Access := Left.Head;
+      Right_I : Node_Access := Right.Head;
+   begin
+      loop
+         exit when Left_I = null;
+
+         if Right_I = null then
+            return False;
+         elsif Left_I.Element /= Right_I.Element then
+            return False;
+         end if;
+
+         Left_I  := Left_I.Next;
+         Right_I := Right_I.Next;
+      end loop;
+      return Right_I = null;
+   end "=";
+
+   function Length (Container : in List) return Ada.Containers.Count_Type
+   is begin
+      return Container.Count;
+   end Length;
+
+   function To_List (Element : in Element_Type) return List
+   is
+      New_Node : constant Node_Access := new Node_Type'
+        (Element => Element,
+         Prev    => null,
+         Next    => null);
+   begin
+      return Result : constant List :=
+        (Ada.Finalization.Controlled with
+         Head  => New_Node,
+         Tail  => New_Node,
+         Count => 1);
+   end To_List;
+
+   procedure Insert (Container : in out List; Element : in Element_Type)
+   is
+      Node    : Node_Access := Container.Head;
+      Compare : Compare_Result;
+   begin
+      if Node = null then
+         Container := To_List (Element);
+      else
+         Find (Container, Element, Node, Compare);
+
+         Container.Count := Container.Count + 1;
+
+         if Node = null then
+            Insert_After_Tail (Container, Element);
+         else
+            Insert_Before (Container, Node, Element);
+         end if;
+      end if;
+   end Insert;
+
+   function Contains (Container : in List; Element : in Element_Type) return 
Boolean
+   is
+      Node    : Node_Access := Container.Head;
+      Compare : Compare_Result;
+   begin
+      Find (Container, Element, Node, Compare);
+      return Compare = Equal;
+   end Contains;
+
+   procedure Merge
+     (Target : in out List;
+      Source : in     List;
+      Added  :    out Boolean)
+   is
+      Target_I : Node_Access := Target.Head;
+      Source_I : Node_Access := Source.Head;
+   begin
+      if Target_I = null then
+         if Source_I = null then
+            Added := False;
+         else
+            Target.Head  := Source.Head;
+            Target.Tail  := Source.Tail;
+            Target.Count := Source.Count;
+            Adjust (Target);
+
+            Added := True;
+         end if;
+
+      elsif Source_I = null then
+         Added := False;
+
+      else
+         Added := False;
+         loop
+            exit when Source_I = null;
+
+            if Target_I = null then
+               Added := True;
+               Target.Count := Target.Count + 1;
+               Insert_After_Tail (Target, Source_I.Element);
+               Source_I := Source_I.Next;
+
+            else
+               case Element_Compare (Target_I.Element, Source_I.Element) is
+               when Greater =>
+                  Added := True;
+                  Target.Count := Target.Count + 1;
+                  Insert_Before (Target, Target_I, Source_I.Element);
+                  Source_I := Source_I.Next;
+
+               when Equal =>
+                  Target_I := Target_I.Next;
+                  Source_I := Source_I.Next;
+
+               when Less =>
+                  Target_I := Target_I.Next;
+               end case;
+            end if;
+         end loop;
+      end if;
+   end Merge;
+
+   procedure Merge
+     (Target  : in out List;
+      Source  : in     List;
+      Added   :    out Boolean;
+      Exclude : in     Element_Type)
+   is
+      Target_I : Node_Access := Target.Head;
+      Source_I : Node_Access := Source.Head;
+   begin
+      Added := False;
+
+      if Target_I = null then
+         if Source_I = null then
+            return;
+         else
+            loop
+               if Source_I = null then
+                  return;
+               end if;
+               exit when Source_I.Element /= Exclude;
+               Source_I := Source_I.Next;
+            end loop;
+
+            Added    := True;
+            Target   := To_List (Source_I.Element);
+            Source_I := Source_I.Next;
+         end if;
+      end if;
+
+      loop
+         exit when Source_I = null;
+
+         if Source_I.Element = Exclude then
+            Source_I := Source_I.Next;
+
+         elsif Target_I = null then
+            Added := True;
+            Target.Count := Target.Count + 1;
+            Insert_After_Tail (Target, Source_I.Element);
+            Source_I := Source_I.Next;
+
+         else
+            case Element_Compare (Target_I.Element, Source_I.Element) is
+            when Greater =>
+               Added := True;
+               Target.Count := Target.Count + 1;
+               Insert_Before (Target, Target_I, Source_I.Element);
+               Source_I := Source_I.Next;
+
+            when Equal =>
+               Target_I := Target_I.Next;
+               Source_I := Source_I.Next;
+
+            when Less =>
+               Target_I := Target_I.Next;
+            end case;
+         end if;
+      end loop;
+   end Merge;
+
+   function Has_Element (Position : in Cursor) return Boolean
+   is begin
+      return Position.Ptr /= null;
+   end Has_Element;
+
+   function First (Container : in List) return Cursor
+   is begin
+      if Container.Head = null then
+         return No_Element;
+      else
+         return (Container'Unrestricted_Access, Container.Head);
+      end if;
+   end First;
+
+   function Last (Container : in List) return Cursor
+   is begin
+      if Container.Tail = null then
+         return No_Element;
+      else
+         return (Container'Unrestricted_Access, Container.Tail);
+      end if;
+   end Last;
+
+   function Find (Container : in List; Element : in Element_Type) return Cursor
+   is
+      Node    : Node_Access;
+      Compare : Compare_Result;
+   begin
+      Find (Container, Element, Node, Compare);
+
+      if Node = null then
+         return No_Element;
+      elsif Compare = Equal then
+         return (Container'Unrestricted_Access, Node);
+      else
+         return No_Element;
+      end if;
+   end Find;
+
+   procedure Next (Position : in out Cursor)
+   is begin
+      if Position.Ptr /= null then
+         if Position.Ptr.Next = null then
+            Position := No_Element;
+         else
+            Position.Ptr := Position.Ptr.Next;
+         end if;
+      end if;
+   end Next;
+
+   function Next (Position : in Cursor) return Cursor
+   is begin
+      if Position.Ptr = null then
+         return Position;
+      else
+         if Position.Ptr.Next = null then
+            return No_Element;
+         else
+            return (Position.Container, Position.Ptr.Next);
+         end if;
+      end if;
+   end Next;
+
+   function Previous (Position : in Cursor) return Cursor
+   is begin
+      if Position.Ptr = null then
+         return Position;
+      else
+         if Position.Ptr.Prev = null then
+            return No_Element;
+         else
+            return (Position.Container, Position.Ptr.Prev);
+         end if;
+      end if;
+   end Previous;
+
+   function Element (Position : in Cursor) return Element_Type
+   is begin
+      return Position.Ptr.Element;
+   end Element;
+
+   procedure Delete (Container : in out List; Position : in out Cursor)
+   is
+      Node : Node_Access renames Position.Ptr;
+   begin
+      if Node.Next = null then
+         Container.Tail := Node.Prev;
+      else
+         Node.Next.Prev := Node.Prev;
+      end if;
+      if Node.Prev = null then
+         Container.Head := Node.Next;
+      else
+         Node.Prev.Next := Node.Next;
+      end if;
+      Free (Node);
+      Position        := No_Element;
+      Container.Count := Container.Count - 1;
+   end Delete;
+
+   function Pop (Container : in out List) return Element_Type
+   is
+      Node : Node_Access := Container.Head;
+   begin
+      return Result : constant Element_Type := Container.Head.Element do
+         Container.Head := Node.Next;
+         if Node.Next = null then
+            Container.Tail := null;
+         else
+            Node.Next.Prev := null;
+         end if;
+         Free (Node);
+         Container.Count := Container.Count - 1;
+      end return;
+   end Pop;
+
+   function Constant_Reference (Container : in List; Position : in Cursor) 
return Constant_Reference_Type
+   is
+      pragma Unreferenced (Container);
+   begin
+      return (Element => Position.Ptr.all.Element'Access, Dummy => 1);
+   end Constant_Reference;
+
+   function Constant_Ref (Position : in Cursor) return Constant_Reference_Type
+   is begin
+      return (Element => Position.Ptr.all.Element'Access, Dummy => 1);
+   end Constant_Ref;
+
+   function Variable_Reference (Container : in List; Position : in Cursor) 
return Variable_Reference_Type
+   is
+      pragma Unreferenced (Container);
+   begin
+      return (Element => Position.Ptr.all.Element'Access, Dummy => 1);
+   end Variable_Reference;
+
+   function Variable_Ref (Position : in Cursor) return Variable_Reference_Type
+   is begin
+      return (Element => Position.Ptr.all.Element'Access, Dummy => 1);
+   end Variable_Ref;
+
+   function Iterate (Container : aliased in List) return 
Iterator_Interfaces.Reversible_Iterator'Class
+   is begin
+      return Iterator'(Container => Container'Unrestricted_Access);
+   end Iterate;
+
+   overriding function First (Object : Iterator) return Cursor
+   is begin
+      return First (Object.Container.all);
+   end First;
+
+   overriding function Last  (Object : Iterator) return Cursor
+   is begin
+      return Last (Object.Container.all);
+   end Last;
+
+   overriding function Next (Object : in Iterator; Position : in Cursor) 
return Cursor
+   is
+      pragma Unreferenced (Object);
+   begin
+      return Next (Position);
+   end Next;
+
+   overriding function Previous (Object : in Iterator; Position : in Cursor) 
return Cursor
+   is
+      pragma Unreferenced (Object);
+   begin
+      return Previous (Position);
+   end Previous;
+
+end SAL.Gen_Definite_Doubly_Linked_Lists_Sorted;
diff --git a/packages/wisi/sal-gen_definite_doubly_linked_lists_sorted.ads 
b/packages/wisi/sal-gen_definite_doubly_linked_lists_sorted.ads
index d57748b..bbac90f 100644
--- a/packages/wisi/sal-gen_definite_doubly_linked_lists_sorted.ads
+++ b/packages/wisi/sal-gen_definite_doubly_linked_lists_sorted.ads
@@ -1,181 +1,191 @@
---  Abstract :
---
---  A generic sorted doubly linked list with definite elements.
---
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
---
---  This library is free software;  you can redistribute it and/or modify it
---  under terms of the  GNU General Public License  as published by the Free
---  Software  Foundation;  either version 3,  or (at your  option) any later
---  version. This library is distributed in the hope that it will be useful,
---  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
---  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
---  As a special exception under Section 7 of GPL version 3, you are granted
---  additional permissions described in the GCC Runtime Library Exception,
---  version 3.1, as published by the Free Software Foundation.
-
-pragma License (Modified_GPL);
-
-with Ada.Finalization;
-with Ada.Iterator_Interfaces;
-with Ada.Unchecked_Deallocation;
-generic
-   type Element_Type is private;
-   with function Element_Compare (Left, Right : in Element_Type) return 
Compare_Result;
-package SAL.Gen_Definite_Doubly_Linked_Lists_Sorted is
-   use all type Ada.Containers.Count_Type;
-
-   type List is new Ada.Finalization.Controlled with private
-   with
-      Constant_Indexing => Constant_Reference,
-      Variable_Indexing => Reference,
-      Default_Iterator  => Iterate,
-      Iterator_Element  => Element_Type;
-
-   --  If user uses Variable_Indexing, they must not change the sort
-   --  order of the elements.
-
-   type List_Access is access all List;
-   for List_Access'Storage_Size use 0;
-
-   Empty_List : constant List;
-
-   overriding procedure Adjust (Container : in out List);
-   --  Deep copy.
-
-   overriding procedure Finalize (Container : in out List);
-   --  Free all items in List.
-
-   procedure Clear (Container : in out List) renames Finalize;
-
-   overriding function "=" (Left, Right : in List) return Boolean;
-   --  True if contents are the same.
-
-   function Length (Container : in List) return Ada.Containers.Count_Type;
-
-   function To_List (Element : in Element_Type) return List;
-
-   procedure Insert (Container : in out List; Element : in Element_Type);
-   --  Insert Element before first item for which Element_Order (item,
-   --  element) returns True.
-
-   function Contains (Container : in List; Element : in Element_Type) return 
Boolean;
-
-   procedure Merge
-     (Target : in out List;
-      Source : in     List;
-      Added  :    out Boolean);
-   --  Add all elements of Source to Target, if they are not already
-   --  present.
-   --
-   --  Added is True if any element was not already present.
-
-   procedure Merge
-     (Target  : in out List;
-      Source  : in     List;
-      Added   :    out Boolean;
-      Exclude : in     Element_Type);
-   --  Add all elements of Source to Target, if they are not already
-   --  present, and are not equal to Exclude.
-   --
-   --  Added is True if any element was not already present.
-
-   type Cursor is private;
-
-   No_Element : constant Cursor;
-
-   function Has_Element (Position : in Cursor) return Boolean;
-
-   function First (Container : in List) return Cursor;
-   function Last (Container : in List) return Cursor;
-
-   function Find (Container : in List; Element : in Element_Type) return 
Cursor;
-   --  No_Element if Element not found.
-
-   procedure Next (Position : in out Cursor)
-   with Pre => Position /= No_Element;
-
-   function Next (Position : in Cursor) return Cursor
-   with Pre => Position /= No_Element;
-   function Previous (Position : in Cursor) return Cursor
-   with Pre => Position /= No_Element;
-
-   function Element (Position : in Cursor) return Element_Type
-   with Pre => Position /= No_Element;
-
-   procedure Delete (Container : in out List; Position : in out Cursor)
-   with Pre => Position /= No_Element;
-
-   function Pop (Container : in out List) return Element_Type
-   with Pre => Container.Length > 0;
-   --  Return Container.First, delete it from Container.
-
-   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is null record
-   with Implicit_Dereference => Element;
-
-   function Constant_Reference (Container : in List; Position : in Cursor) 
return Constant_Reference_Type;
-   pragma Inline (Constant_Reference);
-   function Constant_Ref (Position : in Cursor) return Constant_Reference_Type;
-   pragma Inline (Constant_Ref);
-
-   type Reference_Type (Element : not null access Element_Type) is null record
-   with Implicit_Dereference => Element;
-
-   function Reference (Container : in List; Position : in Cursor) return 
Reference_Type
-   with Pre => Position /= No_Element;
-   pragma Inline (Reference);
-   function Ref (Position : in Cursor) return Reference_Type
-   with Pre => Position /= No_Element;
-   pragma Inline (Ref);
-   --  User must not change the element in a way that affects the sort order.
-
-   package Iterator_Interfaces is new Ada.Iterator_Interfaces (Cursor, 
Has_Element);
-
-   function Iterate (Container : aliased in List) return 
Iterator_Interfaces.Reversible_Iterator'Class;
-
-private
-   type Node_Type;
-
-   type Node_Access is access Node_Type;
-
-   type Node_Type is record
-      Element : aliased Element_Type;
-      Prev    : Node_Access;
-      Next    : Node_Access;
-   end record;
-
-   procedure Free is new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
-
-   type List is new Ada.Finalization.Controlled with record
-      Head  : Node_Access               := null;
-      Tail  : Node_Access               := null;
-      Count : Ada.Containers.Count_Type := 0;
-   end record;
-
-   type Cursor is record
-      Container : List_Access;
-      Ptr       : Node_Access;
-   end record;
-
-   Empty_List : constant List := (Ada.Finalization.Controlled with null, null, 
0);
-
-   No_Element : constant Cursor := (null, null);
-
-   type Iterator is new Iterator_Interfaces.Reversible_Iterator with
-   record
-      Container : List_Access;
-   end record;
-
-   overriding function First (Object : Iterator) return Cursor;
-   overriding function Last  (Object : Iterator) return Cursor;
-
-   overriding function Next
-     (Object   : Iterator;
-      Position : Cursor) return Cursor;
-
-   overriding function Previous
-     (Object   : Iterator;
-      Position : Cursor) return Cursor;
-
-end SAL.Gen_Definite_Doubly_Linked_Lists_Sorted;
+--  Abstract :
+--
+--  A generic sorted doubly linked list with definite elements.
+--
+--  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+with Ada.Finalization;
+with Ada.Iterator_Interfaces;
+with Ada.Unchecked_Deallocation;
+generic
+   type Element_Type is private;
+   with function Element_Compare (Left, Right : in Element_Type) return 
Compare_Result;
+package SAL.Gen_Definite_Doubly_Linked_Lists_Sorted is
+   use all type Ada.Containers.Count_Type;
+
+   type List is new Ada.Finalization.Controlled with private
+   with
+      Constant_Indexing => Constant_Reference,
+      Variable_Indexing => Variable_Reference,
+      Default_Iterator  => Iterate,
+      Iterator_Element  => Element_Type;
+
+   --  If user uses Variable_Indexing, they must not change the sort
+   --  order of the elements.
+
+   type List_Access is access all List;
+   for List_Access'Storage_Size use 0;
+
+   Empty_List : constant List;
+
+   overriding procedure Adjust (Container : in out List);
+   --  Deep copy.
+
+   overriding procedure Finalize (Container : in out List);
+   --  Free all items in List.
+
+   procedure Clear (Container : in out List) renames Finalize;
+
+   overriding function "=" (Left, Right : in List) return Boolean;
+   --  True if contents are the same.
+
+   function Length (Container : in List) return Ada.Containers.Count_Type;
+
+   function To_List (Element : in Element_Type) return List;
+
+   procedure Insert (Container : in out List; Element : in Element_Type);
+   --  Insert Element before first item for which Element_Order (item,
+   --  element) returns True.
+
+   function Contains (Container : in List; Element : in Element_Type) return 
Boolean;
+
+   procedure Merge
+     (Target : in out List;
+      Source : in     List;
+      Added  :    out Boolean);
+   --  Add all elements of Source to Target, if they are not already
+   --  present.
+   --
+   --  Added is True if any element was not already present.
+
+   procedure Merge
+     (Target  : in out List;
+      Source  : in     List;
+      Added   :    out Boolean;
+      Exclude : in     Element_Type);
+   --  Add all elements of Source to Target, if they are not already
+   --  present, and are not equal to Exclude.
+   --
+   --  Added is True if any element was not already present.
+
+   type Cursor is private;
+
+   No_Element : constant Cursor;
+
+   function Has_Element (Position : in Cursor) return Boolean;
+
+   function First (Container : in List) return Cursor;
+   function Last (Container : in List) return Cursor;
+
+   function Find (Container : in List; Element : in Element_Type) return 
Cursor;
+   --  No_Element if Element not found.
+
+   procedure Next (Position : in out Cursor)
+   with Pre => Position /= No_Element;
+
+   function Next (Position : in Cursor) return Cursor
+   with Pre => Position /= No_Element;
+   function Previous (Position : in Cursor) return Cursor
+   with Pre => Position /= No_Element;
+
+   function Element (Position : in Cursor) return Element_Type
+   with Pre => Position /= No_Element;
+
+   procedure Delete (Container : in out List; Position : in out Cursor)
+   with Pre => Position /= No_Element;
+
+   function Pop (Container : in out List) return Element_Type
+   with Pre => Container.Length > 0;
+   --  Return Container.First, delete it from Container.
+
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is private with
+     Implicit_Dereference => Element;
+
+   function Constant_Reference (Container : in List; Position : in Cursor) 
return Constant_Reference_Type with
+     Inline, Pre => Position /= No_Element;
+
+   function Constant_Ref (Position : in Cursor) return Constant_Reference_Type 
with
+     Inline, Pre => Position /= No_Element;
+
+   type Variable_Reference_Type (Element : not null access Element_Type) is 
private with
+     Implicit_Dereference => Element;
+
+   function Variable_Reference (Container : in List; Position : in Cursor) 
return Variable_Reference_Type
+   with Inline, Pre => Position /= No_Element;
+
+   function Variable_Ref (Position : in Cursor) return Variable_Reference_Type
+   with Inline, Pre => Position /= No_Element;
+   --  User must not change the element in a way that affects the sort order.
+
+   package Iterator_Interfaces is new Ada.Iterator_Interfaces (Cursor, 
Has_Element);
+
+   function Iterate (Container : aliased in List) return 
Iterator_Interfaces.Reversible_Iterator'Class;
+
+private
+   type Node_Type;
+
+   type Node_Access is access Node_Type;
+
+   type Node_Type is record
+      Element : aliased Element_Type;
+      Prev    : Node_Access;
+      Next    : Node_Access;
+   end record;
+
+   procedure Free is new Ada.Unchecked_Deallocation (Node_Type, Node_Access);
+
+   type List is new Ada.Finalization.Controlled with record
+      Head  : Node_Access               := null;
+      Tail  : Node_Access               := null;
+      Count : Ada.Containers.Count_Type := 0;
+   end record;
+
+   type Cursor is record
+      Container : List_Access;
+      Ptr       : Node_Access;
+   end record;
+
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
+   type Variable_Reference_Type (Element : not null access Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
+   Empty_List : constant List := (Ada.Finalization.Controlled with null, null, 
0);
+
+   No_Element : constant Cursor := (null, null);
+
+   type Iterator is new Iterator_Interfaces.Reversible_Iterator with
+   record
+      Container : List_Access;
+   end record;
+
+   overriding function First (Object : Iterator) return Cursor;
+   overriding function Last  (Object : Iterator) return Cursor;
+
+   overriding function Next
+     (Object   : Iterator;
+      Position : Cursor) return Cursor;
+
+   overriding function Previous
+     (Object   : Iterator;
+      Position : Cursor) return Cursor;
+
+end SAL.Gen_Definite_Doubly_Linked_Lists_Sorted;
diff --git a/packages/wisi/sal-gen_graphs.adb b/packages/wisi/sal-gen_graphs.adb
index 284b26c..ef0fcc3 100644
--- a/packages/wisi/sal-gen_graphs.adb
+++ b/packages/wisi/sal-gen_graphs.adb
@@ -55,10 +55,9 @@ package body SAL.Gen_Graphs is
             Graph.Vertices.Set_First_Last (Vertex, Vertex);
          else
             if Vertex < Graph.Vertices.First_Index then
-               Graph.Vertices.Set_First (Vertex);
-            end if;
-            if Vertex > Graph.Vertices.Last_Index then
-               Graph.Vertices.Set_Last (Vertex);
+               Graph.Vertices.Set_First_Last (Vertex, 
Graph.Vertices.Last_Index);
+            elsif Vertex > Graph.Vertices.Last_Index then
+               Graph.Vertices.Set_First_Last (Graph.Vertices.First_Index, 
Vertex);
             end if;
          end if;
       end Update_First_Last;
@@ -158,8 +157,10 @@ package body SAL.Gen_Graphs is
       To    : in     Edge_Data)
      return Path_Arrays.Vector
    is
-      Vertex_Queue  : Vertex_Queues.Queue_Type
-        (Size => Integer (Graph.Vertices.Last_Index - 
Graph.Vertices.First_Index + 1));
+      use Vertex_Queues;
+
+      Vertex_Queue  : Queue_Type
+        (Size => Peek_Type (Graph.Vertices.Last_Index - 
Graph.Vertices.First_Index + 1));
 
       type Colors is (White, Gray, Black);
 
@@ -227,11 +228,11 @@ package body SAL.Gen_Graphs is
          end if;
       end loop;
 
-      Vertex_Queue.Put (From);
+      Put (Vertex_Queue, From);
 
-      while not Vertex_Queue.Is_Empty loop
+      while not Is_Empty (Vertex_Queue) loop
          declare
-            U_Index : constant Vertex_Index := Vertex_Queue.Get;
+            U_Index : constant Vertex_Index := Get (Vertex_Queue);
             U       : Aux_Node renames Aux (U_Index);
          begin
             Edges :
@@ -253,7 +254,7 @@ package body SAL.Gen_Graphs is
                         Result_List.Append (Build_Path (V_Index, Result_Edge));
                      end if;
 
-                     Vertex_Queue.Put (V_Index);
+                     Put (Vertex_Queue, V_Index);
                   end if;
                end;
             end loop Edges;
diff --git a/packages/wisi/sal-gen_indefinite_doubly_linked_lists.adb 
b/packages/wisi/sal-gen_indefinite_doubly_linked_lists.adb
index 071c319..ced09c2 100644
--- a/packages/wisi/sal-gen_indefinite_doubly_linked_lists.adb
+++ b/packages/wisi/sal-gen_indefinite_doubly_linked_lists.adb
@@ -1,201 +1,211 @@
---  Abstract :
---
---  see spec
---
---  Copyright (C) 2018 Free Software Foundation, Inc.
---
---  This library is free software; you can redistribute it and/or
---  modify it under terms of the GNU General Public License as
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version. This library is distributed in the
---  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
---  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
---  PURPOSE. See the GNU General Public License for more details. You
---  should have received a copy of the GNU General Public License
---  distributed with this program; see file COPYING. If not, write to
---  the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
---  MA 02111-1307, USA.
---
---  As a special exception under Section 7 of GPL version 3, you are granted
---  additional permissions described in the GCC Runtime Library Exception,
---  version 3.1, as published by the Free Software Foundation.
-
-pragma License (Modified_GPL);
-
-package body SAL.Gen_Indefinite_Doubly_Linked_Lists is
-
-   ---------
-   --  Public operations, declaration order.
-
-   overriding
-   procedure Adjust (Container : in out List)
-   is
-      Source   : Node_Access := Container.Head;
-      New_Node : Node_Access;
-   begin
-      if Source = null then
-         return;
-      end if;
-
-      Container.Tail := null;
-
-      loop
-         New_Node := new Node_Type'
-           (Element => new Element_Type'(Source.Element.all),
-            Next    => null,
-            Prev    => Container.Tail);
-         if Container.Tail = null then
-            Container.Head := New_Node;
-            Container.Tail := New_Node;
-         else
-            Container.Tail.Next := New_Node;
-            Container.Tail      := New_Node;
-         end if;
-         Source := Source.Next;
-         exit when Source = null;
-      end loop;
-   end Adjust;
-
-   overriding
-   procedure Finalize (Container : in out List)
-   is
-      Next : Node_Access := Container.Head;
-   begin
-      loop
-         exit when Next = null;
-         Next := Container.Head.Next;
-         Free (Container.Head.Element);
-         Free (Container.Head);
-         Container.Head := Next;
-      end loop;
-      Container.Tail := null;
-   end Finalize;
-
-   function Length (Container : in List) return SAL.Base_Peek_Type
-   is begin
-      return Container.Count;
-   end Length;
-
-   procedure Append (Container : in out List; Element : in Element_Type)
-   is
-      New_Node : constant Node_Access := new Node_Type'
-        (Element => new Element_Type'(Element),
-         Prev    => Container.Tail,
-         Next    => null);
-   begin
-      if Container.Tail = null then
-         Container.Head := New_Node;
-         Container.Tail := New_Node;
-      else
-         Container.Tail.Next := New_Node;
-         Container.Tail      := New_Node;
-      end if;
-      Container.Count := Container.Count + 1;
-   end Append;
-
-   procedure Prepend (Container : in out List; Element : in Element_Type)
-   is
-      New_Node : constant Node_Access := new Node_Type'
-        (Element => new Element_Type'(Element),
-         Prev    => null,
-         Next    => Container.Head);
-   begin
-      if Container.Tail = null then
-         Container.Head := New_Node;
-         Container.Tail := New_Node;
-      else
-         Container.Head.Prev := New_Node;
-         Container.Head      := New_Node;
-      end if;
-      Container.Count := Container.Count + 1;
-   end Prepend;
-
-   function Has_Element (Position : in Cursor) return Boolean
-   is begin
-      return Position.Ptr /= null;
-   end Has_Element;
-
-   function First (Container : in List) return Cursor
-   is begin
-      if Container.Head = null then
-         return No_Element;
-      else
-         return (Container'Unrestricted_Access, Container.Head);
-      end if;
-   end First;
-
-   procedure Next (Position : in out Cursor)
-   is begin
-      if Position.Ptr /= null then
-         if Position.Ptr.Next = null then
-            Position := No_Element;
-         else
-            Position.Ptr := Position.Ptr.Next;
-         end if;
-      end if;
-   end Next;
-
-   function Next (Position : in Cursor) return Cursor
-   is begin
-      if Position.Ptr = null then
-         return Position;
-      else
-         if Position.Ptr.Next = null then
-            return No_Element;
-         else
-            return (Position.Container, Position.Ptr.Next);
-         end if;
-      end if;
-   end Next;
-
-   function Element (Position : in Cursor) return Element_Type
-   is begin
-      return Position.Ptr.Element.all;
-   end Element;
-
-   procedure Delete (Container : in out List; Position : in out Cursor)
-   is
-      Node : Node_Access renames Position.Ptr;
-   begin
-      if Node.Next = null then
-         Container.Tail := Node.Prev;
-      else
-         Node.Next.Prev := Node.Prev;
-      end if;
-      if Node.Prev = null then
-         Container.Head := Node.Next;
-      else
-         Node.Prev.Next := Node.Next;
-      end if;
-      Free (Node.Element);
-      Free (Node);
-      Position        := No_Element;
-      Container.Count := Container.Count - 1;
-   end Delete;
-
-   function Persistent_Ref (Position : in Cursor) return access Element_Type
-   is begin
-      return Position.Ptr.Element;
-   end Persistent_Ref;
-
-   function Constant_Reference (Position : in Cursor) return 
Constant_Reference_Type
-   is begin
-      return (Element => Position.Ptr.all.Element);
-   end Constant_Reference;
-
-   function Constant_Ref (Container : in List'Class; Position : in Peek_Type) 
return Constant_Reference_Type
-   is
-      Ptr : Node_Access := Container.Head;
-   begin
-      for I in 2 .. Position loop
-         Ptr := Ptr.Next;
-      end loop;
-      return (Element => Ptr.all.Element);
-   end Constant_Ref;
-
-   function Reference (Position : in Cursor) return Reference_Type
-   is begin
-      return (Element => Position.Ptr.all.Element);
-   end Reference;
-
-end SAL.Gen_Indefinite_Doubly_Linked_Lists;
+--  Abstract :
+--
+--  see spec
+--
+--  Copyright (C) 2018, 2019 Free Software Foundation, Inc.
+--
+--  This library is free software; you can redistribute it and/or
+--  modify it under terms of the GNU General Public License as
+--  published by the Free Software Foundation; either version 3, or (at
+--  your option) any later version. This library is distributed in the
+--  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+--  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+--  PURPOSE. See the GNU General Public License for more details. You
+--  should have received a copy of the GNU General Public License
+--  distributed with this program; see file COPYING. If not, write to
+--  the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
+--  MA 02111-1307, USA.
+--
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+package body SAL.Gen_Indefinite_Doubly_Linked_Lists is
+
+   ---------
+   --  Public operations, declaration order.
+
+   overriding
+   procedure Adjust (Container : in out List)
+   is
+      Source   : Node_Access := Container.Head;
+      New_Node : Node_Access;
+   begin
+      if Source = null then
+         return;
+      end if;
+
+      Container.Tail := null;
+
+      loop
+         New_Node := new Node_Type'
+           (Element => new Element_Type'(Source.Element.all),
+            Next    => null,
+            Prev    => Container.Tail);
+         if Container.Tail = null then
+            Container.Head := New_Node;
+            Container.Tail := New_Node;
+         else
+            Container.Tail.Next := New_Node;
+            Container.Tail      := New_Node;
+         end if;
+         Source := Source.Next;
+         exit when Source = null;
+      end loop;
+   end Adjust;
+
+   overriding
+   procedure Finalize (Container : in out List)
+   is
+      Next : Node_Access := Container.Head;
+   begin
+      loop
+         exit when Next = null;
+         Next := Container.Head.Next;
+         Free (Container.Head.Element);
+         Free (Container.Head);
+         Container.Head := Next;
+      end loop;
+      Container.Tail := null;
+   end Finalize;
+
+   function Length (Container : in List) return SAL.Base_Peek_Type
+   is begin
+      return Container.Count;
+   end Length;
+
+   procedure Append (Container : in out List; Element : in Element_Type)
+   is
+      New_Node : constant Node_Access := new Node_Type'
+        (Element => new Element_Type'(Element),
+         Prev    => Container.Tail,
+         Next    => null);
+   begin
+      if Container.Tail = null then
+         Container.Head := New_Node;
+         Container.Tail := New_Node;
+      else
+         Container.Tail.Next := New_Node;
+         Container.Tail      := New_Node;
+      end if;
+      Container.Count := Container.Count + 1;
+   end Append;
+
+   procedure Prepend (Container : in out List; Element : in Element_Type)
+   is
+      New_Node : constant Node_Access := new Node_Type'
+        (Element => new Element_Type'(Element),
+         Prev    => null,
+         Next    => Container.Head);
+   begin
+      if Container.Tail = null then
+         Container.Head := New_Node;
+         Container.Tail := New_Node;
+      else
+         Container.Head.Prev := New_Node;
+         Container.Head      := New_Node;
+      end if;
+      Container.Count := Container.Count + 1;
+   end Prepend;
+
+   function Has_Element (Position : in Cursor) return Boolean
+   is begin
+      return Position.Ptr /= null;
+   end Has_Element;
+
+   function First (Container : in List) return Cursor
+   is begin
+      if Container.Head = null then
+         return No_Element;
+      else
+         return (Container'Unrestricted_Access, Container.Head);
+      end if;
+   end First;
+
+   procedure Next (Position : in out Cursor)
+   is begin
+      if Position.Ptr /= null then
+         if Position.Ptr.Next = null then
+            Position := No_Element;
+         else
+            Position.Ptr := Position.Ptr.Next;
+         end if;
+      end if;
+   end Next;
+
+   function Next (Position : in Cursor) return Cursor
+   is begin
+      if Position.Ptr = null then
+         return Position;
+      else
+         if Position.Ptr.Next = null then
+            return No_Element;
+         else
+            return (Position.Container, Position.Ptr.Next);
+         end if;
+      end if;
+   end Next;
+
+   function Element (Position : in Cursor) return Element_Type
+   is begin
+      return Position.Ptr.Element.all;
+   end Element;
+
+   procedure Delete (Container : in out List; Position : in out Cursor)
+   is
+      Node : Node_Access renames Position.Ptr;
+   begin
+      if Node.Next = null then
+         Container.Tail := Node.Prev;
+      else
+         Node.Next.Prev := Node.Prev;
+      end if;
+      if Node.Prev = null then
+         Container.Head := Node.Next;
+      else
+         Node.Prev.Next := Node.Next;
+      end if;
+      Free (Node.Element);
+      Free (Node);
+      Position        := No_Element;
+      Container.Count := Container.Count - 1;
+   end Delete;
+
+   function Persistent_Ref (Position : in Cursor) return access Element_Type
+   is begin
+      return Position.Ptr.Element;
+   end Persistent_Ref;
+
+   function Constant_Ref (Position : in Cursor) return Constant_Reference_Type
+   is begin
+      return (Element => Position.Ptr.all.Element, Dummy => 1);
+   end Constant_Ref;
+
+   function Constant_Reference (Container : in List; Position : in Peek_Type) 
return Constant_Reference_Type
+   is
+      Ptr : Node_Access := Container.Head;
+   begin
+      for I in 2 .. Position loop
+         Ptr := Ptr.Next;
+      end loop;
+      return (Element => Ptr.all.Element, Dummy => 1);
+   end Constant_Reference;
+
+   function Variable_Reference (Container : in List; Position : in Peek_Type) 
return Variable_Reference_Type
+   is
+      Ptr : Node_Access := Container.Head;
+   begin
+      for I in 2 .. Position loop
+         Ptr := Ptr.Next;
+      end loop;
+      return (Element => Ptr.all.Element, Dummy => 1);
+   end Variable_Reference;
+
+   function Variable_Ref (Position : in Cursor) return Variable_Reference_Type
+   is begin
+      return (Element => Position.Ptr.all.Element, Dummy => 1);
+   end Variable_Ref;
+
+end SAL.Gen_Indefinite_Doubly_Linked_Lists;
diff --git a/packages/wisi/sal-gen_indefinite_doubly_linked_lists.ads 
b/packages/wisi/sal-gen_indefinite_doubly_linked_lists.ads
index 0ebfc54..609e26c 100644
--- a/packages/wisi/sal-gen_indefinite_doubly_linked_lists.ads
+++ b/packages/wisi/sal-gen_indefinite_doubly_linked_lists.ads
@@ -29,7 +29,9 @@ generic
    type Element_Type (<>) is private;
 package SAL.Gen_Indefinite_Doubly_Linked_Lists is
 
-   type List is new Ada.Finalization.Controlled with private;
+   type List is new Ada.Finalization.Controlled with private with
+     Constant_Indexing => Constant_Reference,
+     Variable_Indexing => Variable_Reference;
 
    Empty_List : constant List;
 
@@ -66,23 +68,23 @@ package SAL.Gen_Indefinite_Doubly_Linked_Lists is
    function Persistent_Ref (Position : in Cursor) return access Element_Type
    with Pre => Has_Element (Position);
 
-   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is null record
-   with Implicit_Dereference => Element;
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is private with
+     Implicit_Dereference => Element;
 
-   function Constant_Reference (Position : in Cursor) return 
Constant_Reference_Type
-   with Pre => Has_Element (Position);
-   pragma Inline (Constant_Reference);
+   function Constant_Ref (Position : in Cursor) return Constant_Reference_Type
+   with Inline, Pre => Has_Element (Position);
 
-   function Constant_Ref (Container : in List'Class; Position : in Peek_Type) 
return Constant_Reference_Type
-   with Pre => Position <= Container.Length;
-   pragma Inline (Constant_Ref);
+   function Constant_Reference (Container : in List; Position : in Peek_Type) 
return Constant_Reference_Type
+   with Inline, Pre => Position <= Container.Length;
 
-   type Reference_Type (Element : not null access Element_Type) is null record
-   with Implicit_Dereference => Element;
+   type Variable_Reference_Type (Element : not null access Element_Type) is 
private with
+     Implicit_Dereference => Element;
 
-   function Reference (Position : in Cursor) return Reference_Type
-   with Pre => Has_Element (Position);
-   pragma Inline (Reference);
+   function Variable_Reference (Container : in List; Position : in Peek_Type) 
return Variable_Reference_Type
+   with Inline, Pre => Position <= Container.Length;
+
+   function Variable_Ref (Position : in Cursor) return Variable_Reference_Type
+   with Inline, Pre => Has_Element (Position);
 
 private
    type Node_Type;
@@ -110,6 +112,16 @@ private
       Ptr       : Node_Access;
    end record;
 
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
+   type Variable_Reference_Type (Element : not null access Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
    Empty_List : constant List := (Ada.Finalization.Controlled with null, null, 
0);
 
    No_Element : constant Cursor := (null, null);
diff --git a/packages/wisi/sal-gen_unbounded_definite_min_heaps_fibonacci.adb 
b/packages/wisi/sal-gen_unbounded_definite_min_heaps_fibonacci.adb
index c58a9d4..c88a0cb 100644
--- a/packages/wisi/sal-gen_unbounded_definite_min_heaps_fibonacci.adb
+++ b/packages/wisi/sal-gen_unbounded_definite_min_heaps_fibonacci.adb
@@ -35,27 +35,6 @@ package body SAL.Gen_Unbounded_Definite_Min_Heaps_Fibonacci 
is
    ----------
    --  local subprogram bodies, alphabetical order
 
-   function Add (Heap : in out Heap_Type; Item : in Element_Type) return 
Node_Access
-   is
-      X : constant Node_Access := new Node'(Item, null, null, null, null, 0, 
False);
-   begin
-      --  [1] 19.2 FIB-HEAP-INSERT
-      if Heap.Min = null then
-         Heap.Min       := X;
-         Heap.Min.Left  := Heap.Min;
-         Heap.Min.Right := Heap.Min;
-      else
-         Insert_Into_Root_List (Heap, X);
-
-         if Key (Item) < Key (Heap.Min.Element) then
-            Heap.Min := X;
-         end if;
-      end if;
-      Heap.Count := Heap.Count + 1;
-
-      return X;
-   end Add;
-
    procedure Consolidate (Heap : in out Heap_Type)
    is
       --  [1] 19.4 max degree of Fibonacci heap
@@ -319,22 +298,26 @@ package body 
SAL.Gen_Unbounded_Definite_Min_Heaps_Fibonacci is
 
    procedure Add (Heap : in out Heap_Type; Item : in Element_Type)
    is
-      X : constant Node_Access := Add (Heap, Item);
-      pragma Unreferenced (X);
+      X : constant Node_Access := new Node'(Item, null, null, null, null, 0, 
False);
    begin
-      null;
-   end Add;
+      --  [1] 19.2 FIB-HEAP-INSERT
+      if Heap.Min = null then
+         Heap.Min       := X;
+         Heap.Min.Left  := Heap.Min;
+         Heap.Min.Right := Heap.Min;
+      else
+         Insert_Into_Root_List (Heap, X);
 
-   function Add (Heap : in out Heap_Type; Item : in Element_Type) return 
Element_Access
-   is
-      X : constant Node_Access := Add (Heap, Item);
-   begin
-      return X.all.Element'Access;
+         if Key (Item) < Key (Heap.Min.Element) then
+            Heap.Min := X;
+         end if;
+      end if;
+      Heap.Count := Heap.Count + 1;
    end Add;
 
    function Peek (Heap : in Heap_Type) return Constant_Reference_Type
    is begin
-      return (Element => Heap.Min.all.Element'Access);
+      return (Element => Heap.Min.all.Element'Access, Dummy => 1);
    end Peek;
 
    procedure Process (Heap : in Heap_Type; Process_Element : access procedure 
(Element : in Element_Type))
diff --git a/packages/wisi/sal-gen_unbounded_definite_min_heaps_fibonacci.ads 
b/packages/wisi/sal-gen_unbounded_definite_min_heaps_fibonacci.ads
index 6f978e7..aab9fcf 100644
--- a/packages/wisi/sal-gen_unbounded_definite_min_heaps_fibonacci.ads
+++ b/packages/wisi/sal-gen_unbounded_definite_min_heaps_fibonacci.ads
@@ -25,7 +25,6 @@ pragma License (Modified_GPL);
 with Ada.Finalization;
 generic
    type Element_Type is private;
-   type Element_Access is access all Element_Type;
    type Key_Type is private;
    with function Key (Item : in Element_Type) return Key_Type;
    with procedure Set_Key (Item : in out Element_Type; Key : in Key_Type);
@@ -68,23 +67,8 @@ package SAL.Gen_Unbounded_Definite_Min_Heaps_Fibonacci is
 
    procedure Insert (Heap : in out Heap_Type; Item : in Element_Type) renames 
Add;
 
-   function Add (Heap : in out Heap_Type; Item : in Element_Type) return 
Element_Access;
-   --  Add Item to Heap, return a pointer to it. This avoids extra
-   --  copying of Item.
-   --
-   --  Result is valid at least until next Get.
-
-   --  Despite being called a "mergeable heap" in [1], there is no
-   --  algorithm for merging two Fibonacci heaps. And the naive method of
-   --  simply splicing the root lists apparently breaks the consolidate
-   --  algorithm; it assumes there can only be one tree of each degree >
-   --  0.
-
-   --  procedure Increase_Key (Heap : in out Heap_Type; index : in index_type; 
Item : in Element_Type);
-   --  IMPROVEME: implement. need Index (heap, Key), or Add return index.
-
-   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is null record
-   with Implicit_Dereference => Element;
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is private with
+     Implicit_Dereference => Element;
 
    function Peek (Heap : in Heap_Type) return Constant_Reference_Type;
    --  Return a constant reference to the min element.
@@ -117,8 +101,11 @@ private
       Min   : Node_Access;
       Count : Base_Peek_Type;
    end record;
-   type Heap_Access_Constant is access constant Heap_Type;
-   for Heap_Access_Constant'Storage_Size use 0;
+
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
 
    Empty_Heap : constant Heap_Type := (Ada.Finalization.Controlled with Min => 
null, Count => 0);
 
diff --git a/packages/wisi/sal-gen_unbounded_definite_queues.adb 
b/packages/wisi/sal-gen_unbounded_definite_queues.adb
index f0290fc..af53823 100644
--- a/packages/wisi/sal-gen_unbounded_definite_queues.adb
+++ b/packages/wisi/sal-gen_unbounded_definite_queues.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2017, 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
 --
 --  This library is free software;  you can redistribute it and/or modify it
 --  under terms of the  GNU General Public License  as published by the Free
@@ -81,7 +81,7 @@ package body SAL.Gen_Unbounded_Definite_Queues is
          Next (I);
       end loop;
 
-      return (Element => Element_Lists.Reference (Queue.Data, I).Element, 
Dummy => 1);
+      return (Element => Element_Lists.Variable_Reference (Queue.Data, 
I).Element, Dummy => 1);
    end Variable_Peek;
 
    procedure Add (Queue : in out Pkg.Queue; Item : in Element_Type)
diff --git a/packages/wisi/sal-gen_unbounded_definite_queues.ads 
b/packages/wisi/sal-gen_unbounded_definite_queues.ads
index 8e7163b..237800d 100644
--- a/packages/wisi/sal-gen_unbounded_definite_queues.ads
+++ b/packages/wisi/sal-gen_unbounded_definite_queues.ads
@@ -17,7 +17,7 @@
 
 pragma License (Modified_GPL);
 
-with Ada.Containers.Doubly_Linked_Lists;
+with SAL.Gen_Definite_Doubly_Linked_Lists;
 generic
    type Element_Type is private;
 package SAL.Gen_Unbounded_Definite_Queues is
@@ -37,7 +37,7 @@ package SAL.Gen_Unbounded_Definite_Queues is
    function Length (Queue : in Pkg.Queue) return Base_Peek_Type renames Count;
 
    function Is_Empty (Queue : in Pkg.Queue) return Boolean;
-   --  Return true if no items are in Pkg.Queue.
+   --  Return true if no items are in Queue.
 
    function Is_Full (Queue : in Pkg.Queue) return Boolean is (False);
    --  Return true if Queue is full.
@@ -85,7 +85,7 @@ package SAL.Gen_Unbounded_Definite_Queues is
 
 private
 
-   package Element_Lists is new Ada.Containers.Doubly_Linked_Lists 
(Element_Type);
+   package Element_Lists is new SAL.Gen_Definite_Doubly_Linked_Lists 
(Element_Type);
 
    --  We don't provide cursors or write access to queue elements, so we
    --  don't need any tampering checks.
diff --git a/packages/wisi/sal-gen_unbounded_definite_red_black_trees.adb 
b/packages/wisi/sal-gen_unbounded_definite_red_black_trees.adb
index 9099f06..adea0d4 100644
--- a/packages/wisi/sal-gen_unbounded_definite_red_black_trees.adb
+++ b/packages/wisi/sal-gen_unbounded_definite_red_black_trees.adb
@@ -2,7 +2,7 @@
 --
 --  Generic unbounded red-black tree with definite elements.
 --
---  Copyright (C) 2017, 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
 --
 --  This library is free software;  you can redistribute it and/or modify it
 --  under terms of the  GNU General Public License  as published by the Free
@@ -298,53 +298,53 @@ package body SAL.Gen_Unbounded_Definite_Red_Black_Trees is
       return Cursor.Node /= null;
    end Has_Element;
 
-   function Constant_Ref
+   function Constant_Reference
      (Container : aliased in Tree;
       Position  :         in Cursor)
-     return Constant_Ref_Type
+     return Constant_Reference_Type
    is
       pragma Unreferenced (Container);
    begin
-      return (Element => Position.Node.all.Element'Access);
-   end Constant_Ref;
+      return (Element => Position.Node.all.Element'Access, Dummy => 1);
+   end Constant_Reference;
 
-   function Constant_Ref
+   function Constant_Reference
      (Container : aliased in Tree;
       Key       :         in Key_Type)
-     return Constant_Ref_Type
+     return Constant_Reference_Type
    is
       Node : constant Node_Access := Find (Container.Root, Key, Container.Nil);
    begin
       if Node = null then
          raise Not_Found;
       else
-         return (Element => Node.all.Element'Access);
+         return (Element => Node.all.Element'Access, Dummy => 1);
       end if;
-   end Constant_Ref;
+   end Constant_Reference;
 
-   function Variable_Ref
+   function Variable_Reference
      (Container : aliased in Tree;
       Position  :         in Cursor)
-     return Variable_Ref_Type
+     return Variable_Reference_Type
    is
       pragma Unreferenced (Container);
    begin
-      return (Element => Position.Node.all.Element'Access);
-   end Variable_Ref;
+      return (Element => Position.Node.all.Element'Access, Dummy => 1);
+   end Variable_Reference;
 
-   function Variable_Ref
+   function Variable_Reference
      (Container : aliased in Tree;
       Key       :         in Key_Type)
-     return Variable_Ref_Type
+     return Variable_Reference_Type
    is
       Node : constant Node_Access := Find (Container.Root, Key, Container.Nil);
    begin
       if Node = null then
          raise Not_Found;
       else
-         return (Element => Node.all.Element'Access);
+         return (Element => Node.all.Element'Access, Dummy => 1);
       end if;
-   end Variable_Ref;
+   end Variable_Reference;
 
    function Iterate (Tree : in Pkg.Tree'Class) return Iterator
    is begin
diff --git a/packages/wisi/sal-gen_unbounded_definite_red_black_trees.ads 
b/packages/wisi/sal-gen_unbounded_definite_red_black_trees.ads
index 83c9c88..b51e4b9 100644
--- a/packages/wisi/sal-gen_unbounded_definite_red_black_trees.ads
+++ b/packages/wisi/sal-gen_unbounded_definite_red_black_trees.ads
@@ -37,8 +37,8 @@ package SAL.Gen_Unbounded_Definite_Red_Black_Trees is
 
    type Tree is new Ada.Finalization.Limited_Controlled with private
    with
-     Constant_Indexing => Constant_Ref,
-     Variable_Indexing => Variable_Ref,
+     Constant_Indexing => Constant_Reference,
+     Variable_Indexing => Variable_Reference,
      Default_Iterator  => Iterate,
      Iterator_Element  => Element_Type;
 
@@ -58,34 +58,35 @@ package SAL.Gen_Unbounded_Definite_Red_Black_Trees is
 
    function Has_Element (Cursor : in Pkg.Cursor) return Boolean;
 
-   type Constant_Ref_Type (Element : not null access constant Element_Type) is 
null record
-   with Implicit_Dereference => Element;
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is private with
+     Implicit_Dereference => Element;
 
-   function Constant_Ref
+   function Constant_Reference
      (Container : aliased in Tree;
       Position  :         in Cursor)
-     return Constant_Ref_Type;
+     return Constant_Reference_Type with
+     Inline;
 
-   function Constant_Ref
+   function Constant_Reference
      (Container : aliased in Tree;
       Key       :         in Key_Type)
-     return Constant_Ref_Type;
-   pragma Inline (Constant_Ref);
+     return Constant_Reference_Type with
+     Inline;
 
-   type Variable_Ref_Type (Element : not null access Element_Type) is null 
record
-   with Implicit_Dereference => Element;
+   type Variable_Reference_Type (Element : not null access Element_Type) is 
private with
+     Implicit_Dereference => Element;
 
-   function Variable_Ref
+   function Variable_Reference
      (Container : aliased in Tree;
       Position  :         in Cursor)
-     return Variable_Ref_Type;
-   pragma Inline (Variable_Ref);
+     return Variable_Reference_Type with
+     Inline;
 
-   function Variable_Ref
+   function Variable_Reference
      (Container : aliased in Tree;
       Key       :         in Key_Type)
-     return Variable_Ref_Type;
-   pragma Inline (Variable_Ref);
+     return Variable_Reference_Type with
+     Inline;
    --  Raises Not_Found if Key not found in Container.
 
    package Iterators is new Ada.Iterator_Interfaces (Cursor, Has_Element);
@@ -116,11 +117,13 @@ package SAL.Gen_Unbounded_Definite_Red_Black_Trees is
       Direction   : in Known_Direction_Type;
       First, Last : in Key_Type)
      return Cursor;
-   --  Find first element with Key greater than or equal to First, and
-   --  less than or equal to Last. If Direction is Ascending, start
-   --  search at First; if Descending, at Last.
+   --  Find first element with key in range First .. Last. If Direction
+   --  is Ascending, start at First, otherwise start at Last.
    --
-   --  Has_Element is False if there is no such Key.
+   --  Has_Element (result) is False if there is no such element.
+   --
+   --  The Iterator does not remember First, Last; the user must check
+   --  those for any element that Next or Previous returns.
 
    function Count (Tree : in Pkg.Tree) return Ada.Containers.Count_Type;
 
@@ -131,7 +134,7 @@ package SAL.Gen_Unbounded_Definite_Red_Black_Trees is
    --  Result points to newly inserted element.
 
    procedure Delete (Tree : in out Pkg.Tree; Position : in out Cursor);
-   --  Delete element at Position; set Position to point to no element.
+   --  Delete element at Position, set Position to No_Element.
 private
 
    type Node;
@@ -169,6 +172,16 @@ private
       Right_Done : Boolean := True;
    end record;
 
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
+   type Variable_Reference_Type (Element : not null access Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
    No_Element : constant Cursor :=
      (Node       => null,
       Direction  => Unknown,
diff --git a/packages/wisi/sal-gen_unbounded_definite_stacks.adb 
b/packages/wisi/sal-gen_unbounded_definite_stacks.adb
index 0a54eab..2ead18f 100644
--- a/packages/wisi/sal-gen_unbounded_definite_stacks.adb
+++ b/packages/wisi/sal-gen_unbounded_definite_stacks.adb
@@ -165,25 +165,25 @@ package body SAL.Gen_Unbounded_Definite_Stacks is
       Stack.Data (Depth - Index + 1) := Element;
    end Set;
 
-   function Constant_Ref
+   function Constant_Reference
      (Container : aliased in Stack'Class;
       Position  :         in Peek_Type)
-     return Constant_Ref_Type
+     return Constant_Reference_Type
    is begin
       return
         (Element => Container.Data (Container.Top - Position + 1)'Access,
          Dummy => 1);
-   end Constant_Ref;
+   end Constant_Reference;
 
-   function Constant_Ref
+   function Constant_Reference
      (Container : aliased in Stack'Class;
       Position  :         in Cursor)
-     return Constant_Ref_Type
+     return Constant_Reference_Type
    is begin
       return
         (Element => Container.Data (Container.Top - Position.Ptr + 1)'Access,
          Dummy => 1);
-   end Constant_Ref;
+   end Constant_Reference;
 
    function Has_Element (Position : in Cursor) return Boolean
    is begin
diff --git a/packages/wisi/sal-gen_unbounded_definite_stacks.ads 
b/packages/wisi/sal-gen_unbounded_definite_stacks.ads
index cb54a24..26d0466 100644
--- a/packages/wisi/sal-gen_unbounded_definite_stacks.ads
+++ b/packages/wisi/sal-gen_unbounded_definite_stacks.ads
@@ -33,7 +33,7 @@ package SAL.Gen_Unbounded_Definite_Stacks is
 
    type Stack is new Ada.Finalization.Controlled with private
    with
-     Constant_Indexing => Constant_Ref,
+     Constant_Indexing => Constant_Reference,
      Default_Iterator  => Iterate,
      Iterator_Element  => Element_Type;
 
@@ -56,7 +56,7 @@ package SAL.Gen_Unbounded_Definite_Stacks is
    function Peek
      (Stack : in Sguds.Stack;
       Index : in Peek_Type := 1)
-     return Element_Type;
+     return Element_Type with Inline;
    --  Return the Index'th item from the top of Stack; the Item is _not_ 
removed.
    --  Top item has index 1.
    --
@@ -106,25 +106,20 @@ package SAL.Gen_Unbounded_Definite_Stacks is
    --
    --  Useful when creating a stack from pre-existing data.
 
-   type Constant_Ref_Type (Element : not null access constant Element_Type) is
-   record
-      Dummy : Integer := raise Program_Error with "uninitialized reference";
-   end record
-   with Implicit_Dereference => Element;
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is private with
+     Implicit_Dereference => Element;
 
-   function Constant_Ref
+   function Constant_Reference
      (Container : aliased in Stack'Class;
       Position  :         in Peek_Type)
-     return Constant_Ref_Type;
-   pragma Inline (Constant_Ref);
+     return Constant_Reference_Type with Inline;
 
    type Cursor is private;
 
-   function Constant_Ref
+   function Constant_Reference
      (Container : aliased in Stack'Class;
       Position  :         in Cursor)
-     return Constant_Ref_Type;
-   pragma Inline (Constant_Ref);
+     return Constant_Reference_Type with Inline;
 
    function Has_Element (Position : in Cursor) return Boolean;
 
@@ -143,11 +138,16 @@ private
       Data : Element_Array_Access;
 
       --  Top of stack is at Data (Top).
-      --  Data (1 .. Last_Index) has been set at some point.
+      --  Data (1 .. Top) has been set at some point.
    end record;
 
    type Stack_Access is access all Stack;
 
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
    Empty_Stack : constant Stack := (Ada.Finalization.Controlled with 
Invalid_Peek_Index, null);
 
    type Cursor is record
diff --git a/packages/wisi/sal-gen_unbounded_definite_vectors.adb 
b/packages/wisi/sal-gen_unbounded_definite_vectors.adb
index b5019bb..be77f9c 100644
--- a/packages/wisi/sal-gen_unbounded_definite_vectors.adb
+++ b/packages/wisi/sal-gen_unbounded_definite_vectors.adb
@@ -112,6 +112,26 @@ package body SAL.Gen_Unbounded_Definite_Vectors is
       end if;
    end Capacity;
 
+   procedure Set_Capacity
+     (Container : in out Vector;
+      First     : in     Index_Type;
+      Last      : in     Extended_Index)
+   is
+      First_Peek : constant Peek_Type := To_Peek_Type (First);
+      Last_Peek  : constant Peek_Type := To_Peek_Type (Last);
+   begin
+      if Container.Elements = null then
+         Container.Elements := new Array_Type (First_Peek .. Last_Peek);
+      else
+         if First_Peek < Container.Elements'First then
+            Grow (Container.Elements, First_Peek);
+         end if;
+         if Last_Peek < Container.Elements'Last then
+            Grow (Container.Elements, Last_Peek);
+         end if;
+      end if;
+   end Set_Capacity;
+
    function Element (Container : Vector; Index : Index_Type) return 
Element_Type
    is begin
       return Container.Elements (To_Peek_Type (Index));
@@ -124,7 +144,7 @@ package body SAL.Gen_Unbounded_Definite_Vectors is
 
    function First_Index (Container : Vector) return Extended_Index
    is begin
-      if Container.Elements = null then
+      if Container.First = No_Index then
          return No_Index + 1;
       else
          return Container.First;
@@ -133,11 +153,7 @@ package body SAL.Gen_Unbounded_Definite_Vectors is
 
    function Last_Index (Container : Vector) return Extended_Index
    is begin
-      if Container.Elements = null then
-         return No_Index;
-      else
-         return Container.Last;
-      end if;
+      return Container.Last;
    end Last_Index;
 
    procedure Append (Container : in out Vector; New_Item : in Element_Type)
@@ -388,19 +404,6 @@ package body SAL.Gen_Unbounded_Definite_Vectors is
       Set_Last (Container, Last);
    end Set_First_Last;
 
-   procedure Set_Length (Container : in out Vector; Length : in 
Ada.Containers.Count_Type)
-   is
-      use all type Ada.Containers.Count_Type;
-   begin
-      if Container.First = No_Index then
-         Container.First := Index_Type'First;
-         Container.Last  := Container.First - 1;
-      end if;
-      if Length > 0 then
-         Container.Set_Last (Index_Type (Length) + Container.First - 1);
-      end if;
-   end Set_Length;
-
    procedure Delete (Container : in out Vector; Index : in Index_Type)
    is
       J : constant Peek_Type := To_Peek_Type (Index);
@@ -438,10 +441,8 @@ package body SAL.Gen_Unbounded_Definite_Vectors is
    end Element;
 
    function First (Container : aliased in Vector) return Cursor
-   is
-      use all type Ada.Containers.Count_Type;
-   begin
-      if Container.Length = 0 then
+   is begin
+      if Container.First = No_Index then
          return No_Element;
       else
          return (Container'Access, To_Peek_Type (Container.First));
@@ -517,7 +518,7 @@ package body SAL.Gen_Unbounded_Definite_Vectors is
    is
       J : constant Peek_Type := To_Peek_Type (Index);
    begin
-      return (Element => Container.Elements (J)'Access);
+      return (Element => Container.Elements (J)'Access, Dummy => 1);
    end Constant_Ref;
 
    function Variable_Ref
@@ -527,7 +528,7 @@ package body SAL.Gen_Unbounded_Definite_Vectors is
    is
       J : constant Peek_Type := To_Peek_Type (Index);
    begin
-      return (Element => Container.Elements (J)'Access);
+      return (Element => Container.Elements (J)'Access, Dummy => 1);
    end Variable_Ref;
 
    overriding function First (Object : Iterator) return Cursor
@@ -535,7 +536,7 @@ package body SAL.Gen_Unbounded_Definite_Vectors is
       if Object.Container.Elements = null then
          return (null, Invalid_Peek_Index);
       else
-         return (Object.Container, To_Peek_Type 
(Object.Container.First_Index));
+         return (Object.Container, To_Peek_Type (Object.Container.First));
       end if;
    end First;
 
@@ -544,7 +545,7 @@ package body SAL.Gen_Unbounded_Definite_Vectors is
       if Object.Container.Elements = null then
          return (null, Invalid_Peek_Index);
       else
-         return (Object.Container, To_Peek_Type (Object.Container.Last_Index));
+         return (Object.Container, To_Peek_Type (Object.Container.Last));
       end if;
    end Last;
 
@@ -573,7 +574,7 @@ package body SAL.Gen_Unbounded_Definite_Vectors is
 
    function Constant_Ref (Container : aliased Vector; Position : in Cursor) 
return Constant_Reference_Type
    is begin
-      return (Element => Container.Elements (Position.Index)'Access);
+      return (Element => Container.Elements (Position.Index)'Access, Dummy => 
1);
    end Constant_Ref;
 
    function Variable_Ref
@@ -581,7 +582,7 @@ package body SAL.Gen_Unbounded_Definite_Vectors is
       Position  :         in Cursor)
      return Variable_Reference_Type
    is begin
-      return (Element => Container.Elements (Position.Index)'Access);
+      return (Element => Container.Elements (Position.Index)'Access, Dummy => 
1);
    end Variable_Ref;
 
 end SAL.Gen_Unbounded_Definite_Vectors;
diff --git a/packages/wisi/sal-gen_unbounded_definite_vectors.ads 
b/packages/wisi/sal-gen_unbounded_definite_vectors.ads
index 8023794..76cca13 100644
--- a/packages/wisi/sal-gen_unbounded_definite_vectors.ads
+++ b/packages/wisi/sal-gen_unbounded_definite_vectors.ads
@@ -1,230 +1,241 @@
---  Abstract :
---
---  A simple unbounded vector of definite items, intended to be faster
---  than Ada.Containers.Vectors.
---
---  Prepend is as fast (in amortized time) as Append.
---
---  It provides no checking of cursor tampering; higher level code
---  must ensure that.
---
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
---
---  This library is free software;  you can redistribute it and/or modify it
---  under terms of the  GNU General Public License  as published by the Free
---  Software  Foundation;  either version 3,  or (at your  option) any later
---  version. This library is distributed in the hope that it will be useful,
---  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
---  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
---  As a special exception under Section 7 of GPL version 3, you are granted
---  additional permissions described in the GCC Runtime Library Exception,
---  version 3.1, as published by the Free Software Foundation.
-
-pragma License (Modified_GPL);
-
-with Ada.Finalization;
-with Ada.Iterator_Interfaces;
-with Ada.Unchecked_Deallocation;
-generic
-   type Index_Type is range <>;
-   type Element_Type is private;
-   Default_Element : in Element_Type;
-package SAL.Gen_Unbounded_Definite_Vectors is
-
-   subtype Extended_Index is Index_Type'Base
-     range Index_Type'First - 1 ..
-           Index_Type'Min (Index_Type'Base'Last - 1, Index_Type'Last) + 1;
-
-   No_Index : constant Extended_Index := Extended_Index'First;
-
-   type Vector is new Ada.Finalization.Controlled with private with
-      Constant_Indexing => Constant_Ref,
-      Variable_Indexing => Variable_Ref,
-      Default_Iterator  => Iterate,
-      Iterator_Element  => Element_Type;
-
-   Empty_Vector : constant Vector;
-
-   overriding procedure Finalize (Container : in out Vector);
-   overriding procedure Adjust (Container : in out Vector);
-
-   overriding function "=" (Left, Right : in Vector) return Boolean is
-     (raise Programmer_Error);
-   --  Use Gen_Comparable child.
-
-   function Length (Container : in Vector) return Ada.Containers.Count_Type;
-   function Capacity (Container : in Vector) return Ada.Containers.Count_Type;
-
-   procedure Clear (Container : in out Vector)
-   renames Finalize;
-
-   function First_Index (Container : Vector) return Extended_Index;
-   --  No_Index + 1 when Container is empty, so "for I in C.First_Index
-   --  .. C.Last_Index loop" works.
-
-   function Last_Index (Container : Vector) return Extended_Index;
-   --  No_Index when Container is empty.
-
-   function Element (Container : Vector; Index : Index_Type) return 
Element_Type
-   with Pre => Index >= Container.First_Index and Index <= 
Container.Last_Index;
-
-   procedure Replace_Element (Container : Vector; Index : Index_Type; New_Item 
: in Element_Type);
-
-   procedure Append (Container : in out Vector; New_Item : in Element_Type);
-   --  Insert New_Item at end of Container.
-   --
-   --  Raises Constraint_Error if index of new item would be greater than
-   --  Index_Type'Last.
-
-   procedure Append (Container : in out Vector; New_Items : in Vector);
-   --  Insert all elements of New_Items at end of Container.
-
-   procedure Prepend (Container : in out Vector; New_Item : in Element_Type);
-   --  Insert New_Item at beginning of Container.
-   --
-   --  Raises Constraint_Error if index of new item would be less than
-   --  Index_Type'First.
-
-   procedure Prepend
-     (Target       : in out Vector;
-      Source       : in     Vector;
-      Source_First : in     Index_Type;
-      Source_Last  : in     Index_Type);
-   --  Copy Source (Source_First .. Source_Last) to Target, before
-   --  Target.First_Index.
-
-   procedure Insert
-     (Container : in out Vector;
-      Element   : in     Element_Type;
-      Before    : in     Index_Type);
-   --  Existing elements at Before and after are slid to higher indices.
-
-   procedure Merge
-     (Target : in out Vector;
-      Source : in out Vector);
-   --  Copy all elements from Source to Target, to the same index range,
-   --  deleting them from Source, and overwriting overlapping ranges.
-
-   function To_Vector (Item : in Element_Type; Count : in 
Ada.Containers.Count_Type := 1) return Vector;
-
-   function "+" (Element : in Element_Type) return Vector;
-
-   function "&" (Left, Right : in Element_Type) return Vector;
-   function "&" (Left : in Vector; Right : in Element_Type) return Vector;
-
-   procedure Set_First (Container : in out Vector; First : in Index_Type);
-   procedure Set_Last (Container : in out Vector; Last : in Extended_Index);
-   procedure Set_First_Last
-     (Container : in out Vector;
-      First     : in     Index_Type;
-      Last      : in     Extended_Index);
-   --  Default First is Index_Type'First.
-   --  Elements with First <= index <= Last that have not been set have
-   --  Default_Element value.
-
-   procedure Set_Length (Container : in out Vector; Length : in 
Ada.Containers.Count_Type);
-   --  Set Last so Container.Length returns Length. New elements have
-   --  Default_Element value.
-
-   procedure Delete (Container : in out Vector; Index : in Index_Type);
-   --  Replace Index element contents with default. If Index =
-   --  Container.Last_Index, Container.Last_Index is decremented.
-
-   function Contains (Container : in Vector; Element : in Element_Type) return 
Boolean;
-   --  Return True if Element is in Container, False if not.
-
-   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is null record
-   with Implicit_Dereference => Element;
-
-   function Constant_Ref (Container : aliased in Vector; Index : in 
Index_Type) return Constant_Reference_Type
-   with Pre => Index >= Container.First_Index and Index <= 
Container.Last_Index;
-   pragma Inline (Constant_Ref);
-
-   type Variable_Reference_Type (Element : not null access Element_Type) is 
null record
-   with Implicit_Dereference => Element;
-
-   function Variable_Ref (Container : aliased in Vector; Index : in 
Index_Type) return Variable_Reference_Type
-   with Pre => Index >= Container.First_Index and Index <= 
Container.Last_Index;
-   pragma Inline (Variable_Ref);
-
-   type Cursor is private;
-
-   No_Element : constant Cursor;
-
-   function Has_Element (Position : Cursor) return Boolean;
-   function Element (Position : Cursor) return Element_Type
-   with Pre => Position /= No_Element;
-   function First (Container : aliased in Vector) return Cursor;
-   function Next (Position : in Cursor) return Cursor;
-   procedure Next (Position : in out Cursor);
-   function Prev (Position : in Cursor) return Cursor;
-   procedure Prev (Position : in out Cursor);
-
-   function To_Cursor
-     (Container : aliased in Vector;
-      Index     :         in Extended_Index)
-     return Cursor;
-
-   function To_Index (Position : in Cursor) return Extended_Index;
-
-   package Iterator_Interfaces is new Ada.Iterator_Interfaces (Cursor, 
Has_Element);
-
-   function Iterate (Container : aliased in Vector) return 
Iterator_Interfaces.Reversible_Iterator'Class;
-
-   function Constant_Ref (Container : aliased in Vector; Position : in Cursor) 
return Constant_Reference_Type
-   with Pre => Has_Element (Position);
-   pragma Inline (Constant_Ref);
-
-   function Variable_Ref (Container : aliased in Vector; Position  : in 
Cursor) return Variable_Reference_Type
-   with Pre => Has_Element (Position);
-   pragma Inline (Variable_Ref);
-
-private
-
-   type Array_Type is array (SAL.Peek_Type range <>) of aliased Element_Type;
-   type Array_Access is access Array_Type;
-   procedure Free is new Ada.Unchecked_Deallocation (Array_Type, Array_Access);
-
-   type Vector is new Ada.Finalization.Controlled with
-   record
-      Elements : Array_Access;
-      First    : Extended_Index := No_Index;
-      Last     : Extended_Index := No_Index;
-   end record;
-
-   type Vector_Access is access constant Vector;
-   for Vector_Access'Storage_Size use 0;
-
-   type Cursor is record
-      Container : Vector_Access  := null;
-      Index     : Base_Peek_Type := Invalid_Peek_Index;
-   end record;
-
-   type Iterator is new Iterator_Interfaces.Reversible_Iterator with
-   record
-      Container : Vector_Access;
-   end record;
-
-   overriding function First (Object : Iterator) return Cursor;
-   overriding function Last  (Object : Iterator) return Cursor;
-
-   overriding function Next
-     (Object   : Iterator;
-      Position : Cursor) return Cursor;
-
-   overriding function Previous
-     (Object   : Iterator;
-      Position : Cursor) return Cursor;
-
-   Empty_Vector : constant Vector := (Ada.Finalization.Controlled with others 
=> <>);
-
-   No_Element : constant Cursor := (others => <>);
-
-   ----------
-   --  Visible for child package
-
-   function To_Peek_Type (Item : in Extended_Index) return Base_Peek_Type with 
Inline;
-   function To_Index_Type (Item : in Base_Peek_Type) return Extended_Index;
-
-end SAL.Gen_Unbounded_Definite_Vectors;
+--  Abstract :
+--
+--  A simple unbounded vector of definite items, intended to be faster
+--  than Ada.Containers.Vectors.
+--
+--  Prepend is as fast (in amortized time) as Append.
+--
+--  It provides no checking of cursor tampering; higher level code
+--  must ensure that.
+--
+--  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+with Ada.Finalization;
+with Ada.Iterator_Interfaces;
+with Ada.Unchecked_Deallocation;
+generic
+   type Index_Type is range <>;
+   type Element_Type is private;
+   Default_Element : in Element_Type;
+package SAL.Gen_Unbounded_Definite_Vectors is
+
+   subtype Extended_Index is Index_Type'Base
+     range Index_Type'First - 1 ..
+           Index_Type'Min (Index_Type'Base'Last - 1, Index_Type'Last) + 1;
+
+   No_Index : constant Extended_Index := Extended_Index'First;
+
+   type Vector is new Ada.Finalization.Controlled with private with
+      Constant_Indexing => Constant_Ref,
+      Variable_Indexing => Variable_Ref,
+      Default_Iterator  => Iterate,
+      Iterator_Element  => Element_Type;
+
+   Empty_Vector : constant Vector;
+
+   overriding procedure Finalize (Container : in out Vector);
+   overriding procedure Adjust (Container : in out Vector);
+
+   overriding function "=" (Left, Right : in Vector) return Boolean is
+     (raise Programmer_Error);
+   --  Use Gen_Comparable child.
+
+   function Length (Container : in Vector) return Ada.Containers.Count_Type;
+   function Capacity (Container : in Vector) return Ada.Containers.Count_Type;
+
+   procedure Set_Capacity
+     (Container : in out Vector;
+      First     : in     Index_Type;
+      Last      : in     Extended_Index);
+   --  Allocates memory, but does not change Container.First, Container.Last.
+
+   procedure Clear (Container : in out Vector)
+   renames Finalize;
+
+   function First_Index (Container : Vector) return Extended_Index;
+   --  No_Index + 1 when Container is empty, so "for I in C.First_Index
+   --  .. C.Last_Index loop" works.
+
+   function Last_Index (Container : Vector) return Extended_Index;
+   --  No_Index when Container is empty.
+
+   function Element (Container : Vector; Index : Index_Type) return 
Element_Type
+   with Pre => Index >= Container.First_Index and Index <= 
Container.Last_Index;
+
+   procedure Replace_Element (Container : Vector; Index : Index_Type; New_Item 
: in Element_Type);
+
+   procedure Append (Container : in out Vector; New_Item : in Element_Type);
+   --  Insert New_Item at end of Container.
+   --
+   --  Raises Constraint_Error if index of new item would be greater than
+   --  Index_Type'Last.
+
+   procedure Append (Container : in out Vector; New_Items : in Vector);
+   --  Insert all elements of New_Items at end of Container.
+
+   procedure Prepend (Container : in out Vector; New_Item : in Element_Type);
+   --  Insert New_Item at beginning of Container.
+   --
+   --  Raises Constraint_Error if index of new item would be less than
+   --  Index_Type'First.
+
+   procedure Prepend
+     (Target       : in out Vector;
+      Source       : in     Vector;
+      Source_First : in     Index_Type;
+      Source_Last  : in     Index_Type);
+   --  Copy Source (Source_First .. Source_Last) to Target, before
+   --  Target.First_Index.
+
+   procedure Insert
+     (Container : in out Vector;
+      Element   : in     Element_Type;
+      Before    : in     Index_Type);
+   --  Existing elements at Before and after are slid to higher indices.
+
+   procedure Merge
+     (Target : in out Vector;
+      Source : in out Vector);
+   --  Copy all elements from Source to Target, to the same index range,
+   --  deleting them from Source, and overwriting overlapping ranges.
+
+   function To_Vector (Item : in Element_Type; Count : in 
Ada.Containers.Count_Type := 1) return Vector;
+
+   function "+" (Element : in Element_Type) return Vector;
+
+   function "&" (Left, Right : in Element_Type) return Vector;
+   function "&" (Left : in Vector; Right : in Element_Type) return Vector;
+
+   procedure Set_First_Last
+     (Container : in out Vector;
+      First     : in     Index_Type;
+      Last      : in     Extended_Index);
+   --  Elements in First .. Last that have not been set have
+   --  Default_Element value.
+
+   procedure Delete (Container : in out Vector; Index : in Index_Type);
+   --  Replace Index element contents with default. If Index =
+   --  Container.Last_Index, Container.Last_Index is decremented.
+
+   function Contains (Container : in Vector; Element : in Element_Type) return 
Boolean;
+   --  Return True if Element is in Container, False if not.
+
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is private with
+     Implicit_Dereference => Element;
+
+   function Constant_Ref (Container : aliased in Vector; Index : in 
Index_Type) return Constant_Reference_Type
+   with Inline, Pre => Index in Container.First_Index .. Container.Last_Index;
+
+   type Variable_Reference_Type (Element : not null access Element_Type) is 
private with
+     Implicit_Dereference => Element;
+
+   function Variable_Ref (Container : aliased in Vector; Index : in 
Index_Type) return Variable_Reference_Type
+   with Inline, Pre => Index in Container.First_Index .. Container.Last_Index;
+
+   type Cursor is private;
+
+   No_Element : constant Cursor;
+
+   function Has_Element (Position : Cursor) return Boolean;
+   function Element (Position : Cursor) return Element_Type
+   with Pre => Position /= No_Element;
+   function First (Container : aliased in Vector) return Cursor;
+   function Next (Position : in Cursor) return Cursor;
+   procedure Next (Position : in out Cursor);
+   function Prev (Position : in Cursor) return Cursor;
+   procedure Prev (Position : in out Cursor);
+
+   function To_Cursor
+     (Container : aliased in Vector;
+      Index     :         in Extended_Index)
+     return Cursor;
+
+   function To_Index (Position : in Cursor) return Extended_Index;
+
+   package Iterator_Interfaces is new Ada.Iterator_Interfaces (Cursor, 
Has_Element);
+
+   function Iterate (Container : aliased in Vector) return 
Iterator_Interfaces.Reversible_Iterator'Class;
+
+   function Constant_Ref (Container : aliased in Vector; Position : in Cursor) 
return Constant_Reference_Type
+   with Inline, Pre => Has_Element (Position);
+
+   function Variable_Ref (Container : aliased in Vector; Position  : in 
Cursor) return Variable_Reference_Type
+   with Pre => Has_Element (Position);
+   pragma Inline (Variable_Ref);
+
+private
+
+   type Array_Type is array (SAL.Peek_Type range <>) of aliased Element_Type;
+   type Array_Access is access Array_Type;
+   procedure Free is new Ada.Unchecked_Deallocation (Array_Type, Array_Access);
+
+   type Vector is new Ada.Finalization.Controlled with
+   record
+      Elements : Array_Access;
+      --  Elements may be non-null with First = No_Index, after
+      --  Set_Capacity. If First /= No_Index and Last >= First, Elements /=
+      --  null.
+      First    : Extended_Index := No_Index;
+      Last     : Extended_Index := No_Index;
+   end record;
+
+   type Vector_Access is access constant Vector;
+   for Vector_Access'Storage_Size use 0;
+
+   type Cursor is record
+      Container : Vector_Access  := null;
+      Index     : Base_Peek_Type := Invalid_Peek_Index;
+   end record;
+
+   type Iterator is new Iterator_Interfaces.Reversible_Iterator with
+   record
+      Container : Vector_Access;
+   end record;
+
+   overriding function First (Object : Iterator) return Cursor;
+   overriding function Last  (Object : Iterator) return Cursor;
+
+   overriding function Next
+     (Object   : Iterator;
+      Position : Cursor) return Cursor;
+
+   overriding function Previous
+     (Object   : Iterator;
+      Position : Cursor) return Cursor;
+
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
+   type Variable_Reference_Type (Element : not null access Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
+   Empty_Vector : constant Vector := (Ada.Finalization.Controlled with others 
=> <>);
+
+   No_Element : constant Cursor := (others => <>);
+
+   ----------
+   --  Visible for child package
+
+   function To_Peek_Type (Item : in Extended_Index) return Base_Peek_Type with 
Inline;
+   function To_Index_Type (Item : in Base_Peek_Type) return Extended_Index;
+
+   procedure Grow (Elements : in out Array_Access; Index : in Base_Peek_Type);
+
+end SAL.Gen_Unbounded_Definite_Vectors;
diff --git a/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.adb 
b/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.adb
new file mode 100644
index 0000000..6d836c5
--- /dev/null
+++ b/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.adb
@@ -0,0 +1,368 @@
+--  Abstract :
+--
+--  See spec.
+--
+--  Copyright (C) 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+package body SAL.Gen_Unbounded_Definite_Vectors_Sorted is
+
+   ----------
+   --  Body subprograms, arbitrary order
+
+   procedure Grow (Elements : in out Array_Access; Index : in Base_Peek_Type)
+   is
+      --  Reallocate Elements so Elements (Index) is a valid element.
+
+      Old_First  : constant Peek_Type := Elements'First;
+      Old_Last   : constant Peek_Type := Elements'Last;
+      New_First  : Peek_Type          := Old_First;
+      New_Last   : Peek_Type          := Old_Last;
+      New_Length : Peek_Type          := Elements'Length;
+
+      New_Array : Array_Access;
+   begin
+      loop
+         exit when New_First <= Index;
+         New_Length := New_Length * 2;
+         New_First  := Peek_Type'Max (Peek_Type'First, Old_Last - New_Length + 
1);
+      end loop;
+      loop
+         exit when New_Last >= Index;
+         New_Length := New_Length * 2;
+         New_Last   := Peek_Type'Min (Peek_Type'Last, New_First + New_Length - 
1);
+      end loop;
+
+      New_Array := new Array_Type (New_First .. New_Last);
+
+      --  We'd like to use this:
+      --
+      --  New_Array (New_First .. Old_First - 1) := (others => <>);
+      --
+      --  but that can overflow the stack, since the aggregate is allocated
+      --  on the stack.
+
+      for I in New_First .. Old_First - 1 loop
+         New_Array (I .. I) := (others => <>);
+      end loop;
+
+      New_Array (Old_First .. Old_Last) := Elements.all;
+
+      for I in Old_Last + 1 .. New_Last loop
+         New_Array (I .. I)   := (others => <>);
+      end loop;
+
+      Free (Elements);
+      Elements := New_Array;
+   end Grow;
+
+   procedure Find
+     (Container : in     Vector;
+      Key       : in     Key_Type;
+      Found     :    out Boolean;
+      At_After  :    out Base_Peek_Type)
+   with Pre => Container.Last /= No_Index
+   is
+      --  If Found is True, item is at At_After. If False, item should be
+      --  inserted after At_After.
+      Low  : Base_Peek_Type := Peek_Type'First - 1;
+      High : Base_Peek_Type := Container.Last + 1;
+      I    : Base_Peek_Type := Low + High / 2;
+   begin
+      loop
+         case Key_Compare (Key, To_Key (Container.Elements (I))) is
+         when Less =>
+            High := I;
+            if I = Low then
+               Found    := False;
+               At_After := I;
+               return;
+
+            elsif I - 1 = Low then
+               Found    := False;
+               At_After := I - 1;
+               return;
+
+            else
+               I := I - (I - Low) / 2;
+            end if;
+
+         when Equal =>
+            Found    := True;
+            At_After := I;
+            return;
+
+         when Greater =>
+            Low := I;
+            if I = High then
+               Found    := False;
+               At_After := I - 1;
+               return;
+
+            elsif I + 1 = High then
+               Found    := False;
+               At_After := I;
+               return;
+
+            else
+               I := I + (High - I) / 2;
+            end if;
+         end case;
+      end loop;
+   end Find;
+
+   ----------
+   --  Public subprograms
+
+   overriding procedure Finalize (Container : in out Vector)
+   is begin
+      Free (Container.Elements);
+      Container.Last := No_Index;
+   end Finalize;
+
+   overriding procedure Adjust (Container : in out Vector)
+   is begin
+      if Container.Elements /= null then
+         Container.Elements := new Array_Type'(Container.Elements.all);
+      end if;
+   end Adjust;
+
+   function Length (Container : in Vector) return Ada.Containers.Count_Type
+   is begin
+      --  We assume the type ranges are sensible, so no exceptions occur
+      --  here.
+      if Container.Elements = null then
+         return 0;
+      else
+         return Ada.Containers.Count_Type (Container.Last - 
Container.Elements'First + 1);
+      end if;
+   end Length;
+
+   function Capacity (Container : in Vector) return Ada.Containers.Count_Type
+   is begin
+      if Container.Elements = null then
+         return 0;
+      else
+         return Ada.Containers.Count_Type (Container.Elements'Length);
+      end if;
+   end Capacity;
+
+   procedure Set_Capacity
+     (Container : in out Vector;
+      Length    : in     Ada.Containers.Count_Type)
+   is
+      use all type Ada.Containers.Count_Type;
+      First_Peek : constant Peek_Type      := Peek_Type'First;
+      Last_Peek  : constant Base_Peek_Type := Base_Peek_Type (Length);
+   begin
+      if Length = 0 then
+         return;
+      elsif Container.Elements = null then
+         Container.Elements := new Array_Type (First_Peek .. Last_Peek);
+      else
+         if First_Peek < Container.Elements'First then
+            Grow (Container.Elements, First_Peek);
+         end if;
+         if Last_Peek < Container.Elements'Last then
+            Grow (Container.Elements, Last_Peek);
+         end if;
+      end if;
+   end Set_Capacity;
+
+   function Has_Element (Position : Cursor) return Boolean is
+   begin
+      return Position.Index /= Invalid_Peek_Index;
+   end Has_Element;
+
+   function "&" (Left, Right : in Element_Type) return Vector
+   is begin
+      return Result : Vector do
+         Result.Insert (Left);
+         Result.Insert (Right);
+      end return;
+   end "&";
+
+   function "&" (Left : in Vector; Right : in Element_Type) return Vector
+   is begin
+      return Result : Vector := Left do
+         Result.Insert (Right);
+      end return;
+   end "&";
+
+   function Contains (Container : in Vector; Key : in Key_Type) return Boolean
+   is
+      Found : Boolean;
+      I     : Base_Peek_Type;
+   begin
+      if Container.Last = No_Index then
+         return False;
+      end if;
+      Find (Container, Key, Found, I);
+      return Found;
+   end Contains;
+
+   procedure Insert
+     (Container : in out Vector;
+      New_Item  : in     Element_Type)
+   is
+      New_Key : constant Key_Type       := To_Key (New_Item);
+      J       : constant Peek_Type      := Peek_Type'First;
+      K       : constant Base_Peek_Type := Container.Last;
+      I       : Base_Peek_Type          := K;
+   begin
+      if Container.Last = No_Index then
+         Container.Last := Peek_Type'First;
+         I              := Container.Last;
+
+         if Container.Elements = null then
+            Container.Elements := new Array_Type (I .. I);
+            --  else Set_Capacity called.
+         end if;
+         Container.Elements (I) := New_Item;
+         return;
+
+      else
+         Container.Last := Container.Last + 1;
+      end if;
+
+      pragma Assert (Container.Elements /= null);
+
+      if I + 1 > Container.Elements'Last then
+         Grow (Container.Elements, I + 1);
+      end if;
+
+      loop
+         exit when I < J;
+
+         case Key_Compare (New_Key, To_Key (Container.Elements (I))) is
+         when Less =>
+            --  Linear search is simple, we assume insert is used far less 
often
+            --  than Find. And this is optimal when inserting in Key order.
+            I :=  I - 1;
+         when Equal =>
+            --  Insert after I
+            exit;
+         when Greater =>
+            --  Insert after I
+            exit;
+         end case;
+      end loop;
+
+      if I < J then
+         --  Insert before all
+         Container.Elements (J + 1 .. K + 1) := Container.Elements (J .. K);
+         Container.Elements (J) := New_Item;
+      else
+         --  Insert after I
+         Container.Elements (I + 2 .. K + 1) := Container.Elements (I + 1 .. 
K);
+         Container.Elements (I + 1) := New_Item;
+      end if;
+   end Insert;
+
+   function Find
+     (Container : aliased in Vector;
+      Key       :         in Key_Type)
+     return Find_Reference_Type
+   is
+      Found : Boolean;
+      I     : Base_Peek_Type;
+   begin
+      if Container.Last = No_Index then
+         return (Element => null, Dummy => 1);
+      end if;
+      Find (Container, Key, Found, I);
+      if Found then
+         return (Element => Container.Elements (I)'Access, Dummy => 1);
+      else
+         return (Element => null, Dummy => 1);
+      end if;
+   end Find;
+
+   function Find_Constant
+     (Container : aliased in Vector;
+      Key       :         in Key_Type)
+     return Find_Reference_Constant_Type
+   is
+      Found : Boolean;
+      I     : Base_Peek_Type;
+   begin
+      if Container.Last = No_Index then
+         return (Element => null, Dummy => 1);
+      end if;
+      Find (Container, Key, Found, I);
+      if Found then
+         return (Element => Container.Elements (I)'Access, Dummy => 1);
+      else
+         return (Element => null, Dummy => 1);
+      end if;
+   end Find_Constant;
+
+   overriding function First (Object : Iterator) return Cursor
+   is begin
+      if Object.Container.Elements = null then
+         return (null, Invalid_Peek_Index);
+      else
+         return (Object.Container, Peek_Type'First);
+      end if;
+   end First;
+
+   overriding function Last  (Object : Iterator) return Cursor
+   is begin
+      if Object.Container.Elements = null then
+         return (null, Invalid_Peek_Index);
+      else
+         return (Object.Container, Object.Container.Last);
+      end if;
+   end Last;
+
+   overriding function Next (Object : in Iterator; Position : in Cursor) 
return Cursor
+   is begin
+      if Position.Index = Object.Container.Last then
+         return (null, Invalid_Peek_Index);
+      else
+         return (Object.Container, Position.Index + 1);
+      end if;
+   end Next;
+
+   overriding function Previous (Object : in Iterator; Position : in Cursor) 
return Cursor
+   is begin
+      if Position.Index = Peek_Type'First then
+         return (null, Invalid_Peek_Index);
+      else
+         return (Object.Container, Position.Index - 1);
+      end if;
+   end Previous;
+
+   function Iterate (Container : aliased in Vector) return 
Iterator_Interfaces.Reversible_Iterator'Class
+   is begin
+      return Iterator'(Container => Container'Unrestricted_Access);
+   end Iterate;
+
+   function Constant_Ref (Container : aliased Vector; Position : in Cursor) 
return Constant_Reference_Type
+   is begin
+      return (Element => Container.Elements (Position.Index)'Access, Dummy => 
1);
+   end Constant_Ref;
+
+   function Last_Index (Container : aliased Vector) return Base_Peek_Type
+   is begin
+      return Container.Last;
+   end Last_Index;
+
+   function Constant_Ref (Container : aliased Vector; Index : in Peek_Type) 
return Constant_Reference_Type
+   is begin
+      return (Element => Container.Elements (Index)'Access, Dummy => 1);
+   end Constant_Ref;
+
+end SAL.Gen_Unbounded_Definite_Vectors_Sorted;
diff --git a/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.ads 
b/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.ads
new file mode 100644
index 0000000..c197ec4
--- /dev/null
+++ b/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.ads
@@ -0,0 +1,170 @@
+--  Abstract :
+--
+--  A simple unbounded sorted vector of definite items.
+--
+--  Copyright (C) 2019 Free Software Foundation, Inc.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+with Ada.Finalization;
+with Ada.Iterator_Interfaces;
+with Ada.Unchecked_Deallocation;
+generic
+   type Element_Type is private;
+   type Key_Type is private;
+   with function To_Key (Item : in Element_Type) return Key_Type;
+   with function Key_Compare (Left, Right : in Key_Type) return Compare_Result;
+package SAL.Gen_Unbounded_Definite_Vectors_Sorted is
+
+   type Vector is new Ada.Finalization.Controlled with private with
+      Constant_Indexing => Constant_Ref,
+      Default_Iterator  => Iterate,
+      Iterator_Element  => Element_Type;
+
+   Empty_Vector : constant Vector;
+
+   overriding procedure Finalize (Container : in out Vector);
+   overriding procedure Adjust (Container : in out Vector);
+
+   procedure Clear (Container : in out Vector)
+   renames Finalize;
+
+   function Length (Container : in Vector) return Ada.Containers.Count_Type;
+   function Capacity (Container : in Vector) return Ada.Containers.Count_Type;
+
+   procedure Set_Capacity
+     (Container : in out Vector;
+      Length    : in     Ada.Containers.Count_Type);
+   --  Allocates uninitialized memory; does not change Container.First,
+   --  Container.Last.
+
+   function "&" (Left, Right : in Element_Type) return Vector;
+   function "&" (Left : in Vector; Right : in Element_Type) return Vector;
+
+   function Contains (Container : in Vector; Key : in Key_Type) return Boolean;
+
+   procedure Insert
+     (Container : in out Vector;
+      New_Item  : in     Element_Type);
+   --  Insert New_Item in sorted position. Items are sorted in increasing
+   --  order according to Element_Compare.
+   --
+   --  Raises Duplicate_Key if To_Key (New_Item) is already in Container.
+
+   type Find_Reference_Type (Element : access Element_Type) is private with
+     Implicit_Dereference => Element;
+
+   function Find
+     (Container : aliased in Vector;
+      Key       :         in Key_Type)
+     return Find_Reference_Type;
+   --  Result.Element is null if Key not in Container. User must not modify 
Key.
+
+   type Find_Reference_Constant_Type (Element : access constant Element_Type) 
is private with
+     Implicit_Dereference => Element;
+
+   function Find_Constant
+     (Container : aliased in Vector;
+      Key       : in Key_Type)
+     return Find_Reference_Constant_Type;
+   --  Result.Element is null if Key not in Container.
+
+   type Cursor is private;
+
+   No_Element : constant Cursor;
+
+   function Has_Element (Position : Cursor) return Boolean;
+
+   package Iterator_Interfaces is new Ada.Iterator_Interfaces (Cursor, 
Has_Element);
+
+   function Iterate (Container : aliased in Vector) return 
Iterator_Interfaces.Reversible_Iterator'Class;
+
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is private with
+     Implicit_Dereference => Element;
+
+   function Constant_Ref (Container : aliased Vector; Position : in Cursor) 
return Constant_Reference_Type
+   with Inline;
+
+   function First_Index (Container : aliased Vector) return Peek_Type is 
(Peek_Type'First);
+   function Last_Index (Container : aliased Vector) return Base_Peek_Type
+   with Inline;
+   function Constant_Ref (Container : aliased Vector; Index : in Peek_Type) 
return Constant_Reference_Type
+   with Inline;
+
+private
+
+   type Array_Type is array (SAL.Peek_Type range <>) of aliased Element_Type;
+   type Array_Access is access Array_Type;
+   procedure Free is new Ada.Unchecked_Deallocation (Array_Type, Array_Access);
+
+   No_Index : constant Base_Peek_Type := 0;
+
+   type Vector is new Ada.Finalization.Controlled with
+   record
+      Elements : Array_Access;
+      --  Elements may be non-null with First = No_Index, after
+      --  Set_Capacity. If First /= No_Index and Last >= First, Elements /=
+      --  null.
+      Last     : Base_Peek_Type := No_Index;
+   end record;
+
+   type Vector_Access is access constant Vector;
+   for Vector_Access'Storage_Size use 0;
+
+   type Cursor is record
+      Container : Vector_Access  := null;
+      Index     : Base_Peek_Type := No_Index;
+   end record;
+
+   type Iterator is new Iterator_Interfaces.Reversible_Iterator with
+   record
+      Container : Vector_Access;
+   end record;
+
+   overriding function First (Object : Iterator) return Cursor;
+   overriding function Last  (Object : Iterator) return Cursor;
+
+   overriding function Next
+     (Object   : Iterator;
+      Position : Cursor) return Cursor;
+
+   overriding function Previous
+     (Object   : Iterator;
+      Position : Cursor) return Cursor;
+
+   type Find_Reference_Type (Element : access Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
+   type Find_Reference_Constant_Type (Element : access constant Element_Type) 
is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
+   type Constant_Reference_Type (Element : not null access constant 
Element_Type) is
+   record
+      Dummy : Integer := raise Program_Error with "uninitialized reference";
+   end record;
+
+   Empty_Vector : constant Vector := (Ada.Finalization.Controlled with others 
=> <>);
+
+   No_Element : constant Cursor := (others => <>);
+
+   ----------
+   --  Visible for child package
+
+   procedure Grow (Elements : in out Array_Access; Index : in Base_Peek_Type);
+
+end SAL.Gen_Unbounded_Definite_Vectors_Sorted;
diff --git a/packages/wisi/sal.adb b/packages/wisi/sal.adb
index ac3b037..e3f5d52 100644
--- a/packages/wisi/sal.adb
+++ b/packages/wisi/sal.adb
@@ -26,7 +26,7 @@ package body SAL is
 
    function Version return String is
    begin
-      return "SAL 3.2";
+      return "SAL 3.3";
    end Version;
 
 end SAL;
diff --git a/packages/wisi/wisi-compile.el b/packages/wisi/wisi-compile.el
deleted file mode 100644
index 9788938..0000000
--- a/packages/wisi/wisi-compile.el
+++ /dev/null
@@ -1,225 +0,0 @@
-;; wisi-compile.el --- Grammar compiler for the wisi parser, integrating Wisi 
OpenToken output.  -*- lexical-binding:t -*-
-;;
-;; Copyright (C) 2012-2017 Free Software Foundation, Inc.
-;;
-;; Author: Stephen Leake <address@hidden>
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-;;
-
-;;; Commentary:
-;;
-
-;;;; History: first experimental version Jan 2013
-;;
-;;;; Context
-;;
-;; Semantic (info "(semantic)Top") provides an LALR(1) parser
-;; wisent-parse.  The grammar used is defined by the functions
-;; semantic-grammar-create-package, which reads a bison-like source
-;; file and produces corresponding elisp source, and
-;; wisent-compile-grammar, which generates a parser table.
-;;
-;; However, the algorithm used in wisent-compile-grammar cannot cope
-;; with the grammar for the Ada language, because it is not
-;; LALR(1).  So we provide a generalized LALR parser, which spawns
-;; parallel LALR parsers at each conflict.  Instead of also rewriting
-;; the entire semantic grammar compiler, we use the OpenToken LALR
-;; parser generator, which is easier to modify (it is written in Ada,
-;; not Lisp).
-;;
-;; The Ada function Wisi.Generate reads the bison-like input and
-;; produces corresponding elisp source code, similar to that
-;; produced by semantic-grammar-create-package.
-;;
-;; wisi-compile-grammar (provided here) generates the automaton
-;; structure required by wisi-parse
-;;
-;;;;
-
-(defun wisi-compose-action (value symbol-obarray nonterms)
-  (let* ((nonterm (car value))
-       (index   (cdr value))
-       (symbol (intern-soft (format "%s:%d" nonterm index) symbol-obarray))
-       (rhs (car (nth index (cdr (assoc nonterm nonterms))))))
-    (list nonterm symbol (length rhs))
-    ))
-
-(defun wisi-replace-actions (action symbol-obarray nonterms)
-  "Replace semantic action symbol names in ACTION with list as defined in 
`wisi-compile-grammar'.
-ACTION is the alist for one state from the grammar, with the form:
-  ((default . error) ITEM ... )
-ITEM is one of:
-reduction  (TOKEN . (NONTERM . INDEX)) where NONTERM . INDEX gives the action 
symbol name.
-shift (TOKEN . STATE)
-shift/reduce conflict (STATE (NONTERM . INDEX))
-reduce/shift conflict ((NONTERM . INDEX) (NONTERM . INDEX))
-
-SYMBOL-OBARRAY contains the action symbols.
-NONTERMS is from the grammar.
-Return the new action alist."
-  ;; result is list of (nonterm index action-symbol token-count)
-  (let (result item)
-    (while action
-     (setq item (pop action))
-     (cond
-      ((or
-       (memq (cdr item) '(error accept))
-       (numberp (cdr item))) ;; shift
-       (push item result))
-
-      ((listp (cdr item))
-       (let ((value (cdr item)))
-        (cond
-         ((symbolp (car value))
-          ;; reduction
-          (push (cons (car item)
-                      (wisi-compose-action value symbol-obarray nonterms))
-                result))
-
-         ((integerp (car value))
-          ;; shift/reduce conflict
-          (push (cons (car item)
-                      (list (car value)
-                            (wisi-compose-action (cadr value) symbol-obarray 
nonterms)))
-                result))
-
-         (t ;; reduce/reduce conflict
-          (push (cons (car item)
-                      (list (wisi-compose-action (car value) symbol-obarray 
nonterms)
-                            (wisi-compose-action (cadr value) symbol-obarray 
nonterms)))
-                result))
-         )))
-
-      (t
-       (error "unexpected '%s'; expected 'error, 'accept, numberp, stringp, 
listp" (cdr item)))
-      ));; while/cond
-
-   (reverse result)))
-
-(defun wisi-semantic-action (form nonterm iactn symbol-obarray)
-  "Define an Elisp semantic action function for a production, interned in 
SYMBOL-OBARRAY.
-FORM is the body of the semantic action.
-NONTERM is the nonterminal left hand side.
-IACTN is the index of the production in the NTERM rule.
-
-The semantic action function accepts two arguments;
-- wisi-nterm  : the nonterminal
-- wisi-tokens : the list of tokens to be reduced.
-
-It returns nil; it is called for the semantic side-effects only."
-  ;; based on comp.el wisent-semantic-action
-  (let* ((name (format "%s:%d" nonterm iactn))
-        (action-symbol (intern name symbol-obarray)))
-
-    (fset action-symbol
-         `(lambda (wisi-nterm wisi-tokens)
-            ,form
-            nil))
-    (byte-compile action-symbol)))
-
-(defun wisi-compile-grammar (grammar)
-  "Compile the LALR(1) GRAMMAR; return the automaton for wisi-parse.
-GRAMMAR is a list NONTERMS ACTIONS GOTOS, where:
-
-NONTERMS is a list of productions; each production is a
-list (nonterm (tokens semantic-action) ...) where `semantic-action' is
-any lisp form. The set of (tokens semantic-action) are the right hand
-sides; nonterm is the left hand side.
-
-ACTIONS is an array indexed by parser state, of alists indexed by
-terminal tokens. The value of each item in the alists is one of:
-
-`error'
-
-`accept'
-
-integer - shift; gives new state
-
- (nonterm . index) - reduce by nonterm production index.
-
- (integer (nonterm . index)) - a shift/reduce conflict
- ((nonterm . index) (nonterm . index)) - a reduce/reduce conflict
-
-The first item in the alist must have the key `default' (not a
-terminal token); it is used when no other item matches the
-current token.
-
-GOTOS is an array indexed by parser state, of alists giving the
-new state after a reduce for each nonterminal legal in that
-state.
-
-The automaton is an array [parser-actions gotos symbol-obarray]:
-
-- parser-actions is a copy of the input ACTIONS, with semantic
-actions replaced by a list (nonterm action-symbol token-count),
-where:
-
--- nonterm is a symbol from NONTERMS, and is the non-terminal to
-reduce to
-
--- token-count is the number of tokens in the reduction,
-
--- action-symbol is nil if there is no semantic action, or a
-symbol interned in symbol-obarray
-
-- gotos is a copy of GOTOS.
-
-- symbol-obarray is an obarray containing functions that
-implement the semantic action for each nonterminal; the function
-names have the format nonterm:index."
-  ;; We store named symbols for semantic actions, not just lambda
-  ;; functions, so we have a name for debug trace.
-
-  (let ((defs (nth 0 grammar))
-       (symbol-obarray (make-vector 13 0));; for parse actions
-        (byte-compile-warnings '(not free-vars)) ;; for "wisi-test-success" in 
test/wisi/*
-       def nonterm rhs-list rule
-       semantic-action index)
-
-    (while defs
-      (setq def      (car defs)
-            defs     (cdr defs)
-            nonterm  (car def)
-            rhs-list (cdr def)
-            index    0)
-      (while rhs-list
-        (setq rule            (car rhs-list)
-              rhs-list        (cdr rhs-list)
-              semantic-action (cadr rule))
-
-       (when semantic-action
-         (wisi-semantic-action semantic-action nonterm index symbol-obarray))
-
-       (setq index (1+ index))
-       ))
-
-    ;; replace semantic actions in ACTIONS with symbols from symbol-obarray
-    (let ((nactions (length (nth 1 grammar)))
-         (actions (nth 1 grammar))
-         (i 0))
-      (while (< i nactions)
-       (aset actions i
-             (wisi-replace-actions (aref actions i) symbol-obarray (nth 0 
grammar)))
-       (setq i (1+ i)))
-      (vector
-       actions
-       (nth 2 grammar)
-       symbol-obarray)
-      )))
-
-(provide 'wisi-compile)
-;;; wisi-compile.el ends here
diff --git a/packages/wisi/wisi-elisp-lexer.el 
b/packages/wisi/wisi-elisp-lexer.el
deleted file mode 100644
index b0d1e3c..0000000
--- a/packages/wisi/wisi-elisp-lexer.el
+++ /dev/null
@@ -1,393 +0,0 @@
-;;; wisi-elisp-lexer.el --- A lexer for wisi, implemented in elisp -*- 
lexical-binding:t -*-
-;;
-;; Copyright (C) 2017, 2018  Free Software Foundation, Inc.
-;;
-;; Author: Stephen Leake <address@hidden>
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-;;
-
-;;; Commentary:
-
-;;;; History: see NEWS-wisi.text
-
-(require 'cl-lib)
-(require 'semantic/lex)
-(require 'wisi-parse-common)
-
-(cl-defstruct wisi-elisp-lexer
-  id-alist ;; alist mapping strings to token ids; used by repair error
-  keyword-table ;; obarray holding keyword tokens
-  punctuation-table ;; obarray holding punctuation tokens
-  punctuation-table-max-length ;; max string length in punctuation-table
-  string-double-term ;; non-nil if strings delimited by double quotes
-  string-quote-escape-doubled ;; Non-nil if a string delimiter is escaped by 
doubling it
-  string-quote-escape
-  ;; Cons (delim . character) where `character' escapes quotes in strings 
delimited by `delim'.
-  string-single-term ;; non-nil if strings delimited by single quotes
-  symbol-term ;; symbol for a terminal symbol token
-  number-term ;; symbol for a terminal number literal token
-  number-p ;; function that determines if argument is a number literal
-  line-begin ;; vector of beginning-of-line positions in buffer
-  last-line ;; index into line-begin of line containing last lexed token
-  )
-
-(defun wisi-elisp-lexer-reset (line-count lexer)
-  "Reset lexer to start a new parse. LINE-COUNT is the count of lines in the 
current buffer."
-  (setf (wisi-elisp-lexer-line-begin lexer) (wisi--set-line-begin line-count))
-  (setf (wisi-elisp-lexer-last-line lexer) nil))
-
-(defvar-local wisi--lexer nil
-  "A `wisi-elisp-lexer' struct defining the lexer for the current buffer.")
-
-(defun wisi-elisp-lexer--safe-intern (name obtable)
-  (let ((var (intern-soft name obtable)))
-    (and (boundp var) (symbol-value var))))
-
-(cl-defun wisi-make-elisp-lexer (&key token-table-raw keyword-table-raw 
string-quote-escape-doubled string-quote-escape)
-  "Return a ‘wisi-elisp-lexer’ object."
-  (let* ((token-table (semantic-lex-make-type-table token-table-raw))
-        (keyword-table (semantic-lex-make-keyword-table keyword-table-raw))
-        (left-paren (cadr (wisi-elisp-lexer--safe-intern "left-paren" 
token-table)))
-        (right-paren (cadr (wisi-elisp-lexer--safe-intern "right-paren" 
token-table)))
-        (punctuation-table (wisi-elisp-lexer--safe-intern "punctuation" 
token-table))
-        (punct-max-length 0)
-        (number (cadr (wisi-elisp-lexer--safe-intern "number" token-table)))
-        (symbol (cadr (wisi-elisp-lexer--safe-intern "symbol" token-table)))
-        (string-double (cadr (wisi-elisp-lexer--safe-intern "string-double" 
token-table)))
-        (string-single (cadr (wisi-elisp-lexer--safe-intern "string-single" 
token-table)))
-        id-alist
-        fail)
-    (dolist (item punctuation-table)
-      ;; check that all chars used in punctuation tokens have punctuation 
syntax
-      (mapc (lambda (char)
-             (when (not (= ?. (char-syntax char)))
-               (setq fail t)
-               (message "in %s, %c does not have punctuation syntax"
-                        (car item) char)))
-           (cdr item))
-
-      ;; accumulate max length
-      (when (< punct-max-length (length (cdr item)))
-       (setq punct-max-length (length (cdr item))))
-
-      ;; build id-alist
-      (push item id-alist)
-      )
-
-    (when fail
-      (error "aborting due to punctuation errors"))
-
-    (when number
-      (push (cons (nth 0 number) "1234") id-alist)
-      (when (nth 2 number)
-       (require (nth 2 number)))) ;; for number-p
-
-    (when left-paren
-      (push left-paren id-alist)
-      (set (intern (cdr left-paren) keyword-table) (car left-paren)))
-    (when right-paren
-      (push right-paren id-alist)
-      (set (intern (cdr right-paren) keyword-table) (car right-paren)))
-
-    (when symbol
-      (push (cons (car symbol) "a_bogus_identifier") id-alist))
-
-    (when string-double
-      (push (cons (car string-double) "\"\"") id-alist))
-
-    (when string-single
-      (push (cons (car string-single) "''") id-alist))
-
-    (dolist (item keyword-table-raw)
-      (push (cons (cdr item) (car item)) id-alist))
-
-    (make-wisi-elisp-lexer
-     :id-alist id-alist
-     :keyword-table keyword-table
-     :punctuation-table punctuation-table
-     :punctuation-table-max-length punct-max-length
-     :string-double-term (car string-double)
-     :string-quote-escape-doubled string-quote-escape-doubled
-     :string-quote-escape string-quote-escape
-     :string-single-term (car string-single)
-     :symbol-term (car symbol)
-     :number-term (nth 0 number)
-     :number-p (nth 1 number)
-     )
-    ))
-
-(defun wisi-number-p (token-text)
-  ;; Not ’wisi-elisp-lexer-number-p’, because this can appear in grammar files.
-  "Return t if TOKEN-TEXT plus text after point matches the
-syntax for a real literal; otherwise nil.  Point is after
-TOKEN-TEXT; move point to just past token."
-  ;; Typical literals:
-  ;; 1234
-  ;; 1234.5678
-  ;; _not_ including non-decimal base, or underscores (see ada-wisi-number-p)
-  ;;
-  ;; Starts with a simple integer
-  (when (string-match "^[0-9]+$" token-text)
-    (when (looking-at "\\.[0-9]+")
-      ;; real number
-      (goto-char (match-end 0))
-      (when (looking-at  "[Ee][+-][0-9]+")
-        ;; exponent
-        (goto-char (match-end 0))))
-
-    t
-    ))
-
-(defun wisi-forward-token ()
-  ;; Not ’wisi-elisp-lexer-forward-token’, for backward compatibility
-  "Move point forward across one token, then skip whitespace and comments.
-Return the corresponding token as a `wisi-tok'.
-If at whitespace or comment, throw an error.
-If at end of buffer, return `wisi-eoi-term'."
-  (let ((start (point))
-       ;; (info "(elisp)Syntax Table Internals" "*info elisp syntax*")
-       end
-       (syntax (syntax-class (syntax-after (point))))
-       (first nil)
-       (comment-line nil)
-       (comment-end nil)
-       token-id token-text line)
-    (cond
-     ((eobp)
-      (setq token-id wisi-eoi-term))
-
-     ((eq syntax 1)
-      ;; punctuation. Find the longest matching string in 
wisi-punctuation-table
-      (forward-char 1)
-      (let ((next-point (point))
-           temp-text temp-id done)
-       (while (not done)
-         (setq temp-text (buffer-substring-no-properties start (point)))
-         (setq temp-id (car (rassoc temp-text 
(wisi-elisp-lexer-punctuation-table wisi--lexer))))
-         (when temp-id
-           (setq token-id temp-id
-                 next-point (point)))
-         (if (or
-              (eobp)
-              (= (- (point) start) 
(wisi-elisp-lexer-punctuation-table-max-length wisi--lexer)))
-             (setq done t)
-           (forward-char 1))
-         )
-       (goto-char next-point)))
-
-     ((memq syntax '(4 5)) ;; open, close parenthesis
-      (forward-char 1)
-      (setq token-text (buffer-substring-no-properties start (point)))
-      (setq token-id (symbol-value (intern-soft token-text 
(wisi-elisp-lexer-keyword-table wisi--lexer)))))
-
-     ((eq syntax 7)
-      ;; string quote, either single or double. we assume point is
-      ;; before the start quote, not the end quote
-      (let ((delim (char-after (point)))
-           (forward-sexp-function nil))
-       (condition-case err
-           (progn
-             (forward-sexp)
-
-             ;; point is now after the end quote; check for an escaped quote
-             (while (or
-                     (and (wisi-elisp-lexer-string-quote-escape-doubled 
wisi--lexer)
-                          (eq (char-after (point)) delim))
-                     (and (eq delim (car (wisi-elisp-lexer-string-quote-escape 
wisi--lexer)))
-                          (eq (char-before (1- (point))) (cdr 
(wisi-elisp-lexer-string-quote-escape wisi--lexer)))))
-               (forward-sexp))
-             (setq token-id (if (= delim ?\")
-                                (wisi-elisp-lexer-string-double-term 
wisi--lexer)
-                              (wisi-elisp-lexer-string-single-term 
wisi--lexer))))
-         (scan-error
-          ;; Something screwed up; we should not get here if
-          ;; syntax-propertize works properly.
-          (signal 'wisi-parse-error (format "wisi-forward-token: forward-sexp 
failed %s" err))
-          ))))
-
-     ((memq syntax '(2 3 6)) ;; word, symbol, expression prefix (includes 
numbers)
-      (skip-syntax-forward "w_'")
-      (setq token-text (buffer-substring-no-properties start (point)))
-      (setq token-id
-           (or (symbol-value (intern-soft (downcase token-text) 
(wisi-elisp-lexer-keyword-table wisi--lexer)))
-               (and (functionp (wisi-elisp-lexer-number-p wisi--lexer))
-                    (funcall (wisi-elisp-lexer-number-p wisi--lexer) 
token-text)
-                    (setq token-text (buffer-substring-no-properties start 
(point)))
-                    (wisi-elisp-lexer-number-term wisi--lexer))
-               (wisi-elisp-lexer-symbol-term wisi--lexer)))
-      )
-
-     (t
-      (signal 'wisi-parse-error (format "wisi-forward-token: unsupported 
syntax %s" syntax)))
-
-     );; cond
-
-    (unless token-id
-      (signal 'wisi-parse-error
-             (wisi-error-msg "unrecognized token '%s'" 
(buffer-substring-no-properties start (point)))))
-
-    (setq end (point))
-
-    (forward-comment (point-max))
-
-    (when (and (not (eq token-id wisi-eoi-term))
-              (eq wisi--parse-action 'indent))
-      ;; parsing for indent; track line numbers
-
-      (if (wisi-elisp-lexer-last-line wisi--lexer)
-         (progn
-           (setq line (wisi-elisp-lexer-last-line wisi--lexer))
-           (when (>= start (aref (wisi-elisp-lexer-line-begin wisi--lexer) 
line))
-             ;; first token on next non-blank line
-             (setq line (1+ line))
-             (setq first t))
-           ;; else other token on line
-           )
-
-       ;; First token on first non-comment line
-       (setq line (line-number-at-pos start))
-       (setq first t)
-       )
-      (setf (wisi-elisp-lexer-last-line wisi--lexer) line)
-
-      ;; set comment-line, comment-end
-      (when (and (< (1+ (wisi-elisp-lexer-last-line wisi--lexer)) (length 
(wisi-elisp-lexer-line-begin wisi--lexer)))
-                (>= (point) (aref (wisi-elisp-lexer-line-begin wisi--lexer)
-                                (1+ (wisi-elisp-lexer-last-line 
wisi--lexer)))))
-       (setq comment-line (1+ (wisi-elisp-lexer-last-line wisi--lexer)))
-       (setf (wisi-elisp-lexer-last-line wisi--lexer) comment-line)
-       (setq comment-end (line-end-position 0)))
-
-      ;; count blank or comment lines following token
-      (when comment-end
-       (while (and (< (1+ (wisi-elisp-lexer-last-line wisi--lexer)) (length 
(wisi-elisp-lexer-line-begin wisi--lexer)))
-                   (>= comment-end (aref (wisi-elisp-lexer-line-begin 
wisi--lexer) (wisi-elisp-lexer-last-line wisi--lexer))))
-         (setf (wisi-elisp-lexer-last-line wisi--lexer) (1+ 
(wisi-elisp-lexer-last-line wisi--lexer))))
-
-      ))
-
-    (make-wisi-tok
-     :token token-id
-     :region (cons start end)
-     :line line
-     :first first
-     :comment-end comment-end
-     :comment-line comment-line)
-    ))
-
-(defun wisi-backward-token ()
-  ;; Not ’wisi-elisp-lexer-backward-token’, for backward compatibility
-  "Move point backward across one token, skipping whitespace and comments.
-Does _not_ handle numbers with wisi-number-p; just sees
-lower-level syntax.  Return a `wisi-tok' - same structure as
-wisi-forward-token, but only sets token-id and region."
-  (forward-comment (- (point)))
-  ;; skips leading whitespace, comment, trailing whitespace.
-
-  ;; (info "(elisp)Syntax Table Internals" "*info elisp syntax*")
-  (let ((end (point))
-       (syntax (syntax-class (syntax-after (1- (point)))))
-       token-id token-text)
-    (cond
-     ((bobp) nil)
-
-     ((eq syntax 1)
-      ;; punctuation. Find the longest matching string in 
wisi-lex-punctuation-table
-      (backward-char 1)
-      (let ((next-point (point))
-           temp-text temp-id done)
-       (while (not done)
-         (setq temp-text (buffer-substring-no-properties (point) end))
-         (when (setq temp-id (car (rassoc temp-text 
(wisi-elisp-lexer-punctuation-table wisi--lexer))))
-           (setq token-id temp-id)
-           (setq next-point (point)))
-         (if (or
-              (bobp)
-              (= (- end (point)) 
(wisi-elisp-lexer-punctuation-table-max-length wisi--lexer)))
-             (setq done t)
-           (backward-char 1))
-         )
-       (goto-char next-point))
-      )
-
-     ((memq syntax '(4 5)) ;; open, close parenthesis
-      (backward-char 1)
-      (setq token-id
-           (symbol-value
-            (intern-soft (buffer-substring-no-properties (point) end)
-                         (wisi-elisp-lexer-keyword-table wisi--lexer)))))
-
-     ((eq syntax 7)
-      ;; a string quote. we assume we are after the end quote, not the start 
quote
-      (let ((delim (char-after (1- (point))))
-           (forward-sexp-function nil))
-       (forward-sexp -1)
-       (setq token-id (if (= delim ?\")
-                          (wisi-elisp-lexer-string-double-term wisi--lexer)
-                        (wisi-elisp-lexer-string-single-term wisi--lexer)))
-       ))
-
-     (t ;; assuming word or symbol syntax
-      (if (zerop (skip-syntax-backward "."))
-         (skip-syntax-backward "w_'"))
-      (setq token-text (buffer-substring-no-properties (point) end))
-      (setq token-id
-           (or (symbol-value (intern-soft (downcase token-text) 
(wisi-elisp-lexer-keyword-table wisi--lexer)))
-               (and (functionp (wisi-elisp-lexer-number-p wisi--lexer))
-                    (funcall (wisi-elisp-lexer-number-p wisi--lexer) 
token-text)
-                    (setq token-text (buffer-substring-no-properties (point) 
end))
-                    (wisi-elisp-lexer-number-term wisi--lexer))
-               (wisi-elisp-lexer-symbol-term wisi--lexer))))
-     )
-
-    (make-wisi-tok
-     :token token-id
-     :region (cons (point) end))
-    ))
-
-;;;; Debugging
-
-(defun wisi-lex-buffer (&optional parse-action)
-  ;; for timing the lexer
-  (interactive)
-  (when (< emacs-major-version 25) (syntax-propertize (point-max)))
-
-  (let* ((wisi--parse-action (or parse-action 'indent))
-        (line-count (1+ (count-lines (point-min) (point-max))))
-        )
-
-    (cl-case wisi--parse-action
-      (indent
-       (setf (wisi-elisp-lexer-last-line wisi--lexer) nil)
-       (setf (wisi-elisp-lexer-line-begin wisi--lexer) (wisi--set-line-begin 
line-count)))
-      (t nil))
-
-    (goto-char (point-min))
-    (while (forward-comment 1))
-    (while (not (eq wisi-eoi-term (wisi-tok-token (wisi-forward-token)))))
-    ))
-
-(defun wisi-show-token ()
-  "Move forward across one keyword, show token."
-  (interactive)
-  (let* ((wisi--parse-action nil)
-        (token (wisi-forward-token)))
-    (message "%s" token)))
-
-
-(provide 'wisi-elisp-lexer)
-;;; end of file
diff --git a/packages/wisi/wisi-elisp-parse.el 
b/packages/wisi/wisi-elisp-parse.el
deleted file mode 100644
index 2c93a37..0000000
--- a/packages/wisi/wisi-elisp-parse.el
+++ /dev/null
@@ -1,1721 +0,0 @@
-;; wisi-elisp-parse.el --- Wisi parser  -*- lexical-binding:t -*-
-
-;; Copyright (C) 2013-2015, 2017 - 2019  Free Software Foundation, Inc.
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-
-;;; Commentary:
-
-;; An extended LALR parser, that handles shift/reduce and
-;; reduce/reduce conflicts by spawning parallel parsers to follow each
-;; path.
-
-;;; Code:
-
-(require 'cl-lib)
-(require 'wisi-elisp-lexer)
-(require 'wisi-parse-common)
-
-(defvar wisi-elisp-parse-max-parallel-current (cons 0 0)
-  "Cons (count . point); Maximum number of parallel parsers used in most 
recent parse,
-point at which that max was spawned.")
-
-(defvar wisi-debug-identical 0
-  "Debug terminating identical parsers.
-0 - keep lower-numbered parser.
-1 - keep higher-numbered parser.
-2 - error.")
-
-(cl-defstruct (wisi-elisp-parser-state
-           (:copier nil))
-  label ;; integer identifying parser for debug
-
-  active
-  ;; 'shift  - need new token
-  ;; 'reduce - need reduce
-  ;; 'accept - parsing completed
-  ;; 'error  - failed, error not reported yet
-  ;; nil     - terminated
-  ;;
-  ;; 'pending-shift, 'pending-reduce - newly created parser
-
-  stack
-  ;; Each stack item takes two slots: wisi-tok, state
-
-  sp ;; stack pointer
-
-  pending
-  ;; list of (action-symbol stack-fragment)
-  )
-
-(cl-defstruct (wisi-elisp-parser (:include wisi-parser))
-  actions
-  gotos
-  next-token
-  )
-
-;;;###autoload
-(defun wisi-make-elisp-parser (automaton next-token)
-  "Return ‘wisi-parser’ object.
-
-- AUTOMATON is the parse table generated by `wisi-compile-grammar'.
-
-- NEXT-TOKEN is a function with no argument called by the parser to
-  obtain the next token from the current buffer after point, as a
-  ’wisi-tok’ object (normally ‘wisi-forward-token’)."
-  (make-wisi-elisp-parser
-   :actions (aref automaton 0)
-   :gotos (aref automaton 1)
-   :next-token next-token))
-
-(cl-defmethod wisi-parse-kill ((_parser wisi-elisp-parser))
-  nil)
-
-(defvar wisi-elisp-parse--indent nil
-  ;; not buffer-local; only let-bound in wisi-parse-current (elisp)
-  "A vector of indentation for all lines in buffer.
-Each element can be one of:
-- nil : no indent set yet
-
-- integer : indent
-
-- list ('anchor (start-id ...) indent)  :
-  indent for current line, base indent for following 'anchored
-  lines. Start-id is list of ids anchored at this line. For parens
-  and other uses.
-
-- list ('anchored id delta) :
-  indent = delta + 'anchor id line indent; for lines indented
-  relative to anchor.
-
-- list ('anchor (start-id ...) ('anchored id delta))
-  for nested anchors.")
-
-(cl-defmethod wisi-parse-current ((parser wisi-elisp-parser) _begin _send-end 
_parse-end)
-  "Parse entire current buffer.
-BEGIN, END are ignored"
-
-  (let ((actions (wisi-elisp-parser-actions parser))
-       (gotos   (wisi-elisp-parser-gotos parser))
-       (parser-states ;; vector of parallel parser states
-        (vector
-         (make-wisi-elisp-parser-state
-          :label 0
-          :active  'shift
-          :stack   (make-vector wisi-parse-max-stack-size nil)
-          :sp      0
-          :pending nil)))
-       (active-parser-count 1)
-       active-parser-count-prev
-       (active 'shift)
-       (token nil)
-       some-pending
-       wisi-elisp-parse--indent)
-
-    (cl-case wisi--parse-action
-      (indent
-       (let ((line-count (1+ (count-lines (point-min) (point-max)))))
-        (setq wisi-elisp-parse--indent (make-vector line-count nil))
-        (wisi-elisp-lexer-reset line-count wisi--lexer)))
-
-      (navigate
-       (setq wisi-end-caches nil))
-
-      (t nil))
-
-    (setf (wisi-parser-lexer-errors parser) nil)
-    (setf (wisi-parser-parse-errors parser) nil)
-
-    ;; We assume the lexer relies on syntax properties
-    (when (< emacs-major-version 25) (syntax-propertize (point-max)))
-
-    (goto-char (point-min))
-    (forward-comment (point-max))
-    (aset (wisi-elisp-parser-state-stack (aref parser-states 0)) 0 0)
-
-    (setq token (funcall (wisi-elisp-parser-next-token parser)))
-    (setq wisi-elisp-parse-max-parallel-current (cons 0 0))
-
-    (while (not (eq active 'accept))
-      (setq active-parser-count-prev active-parser-count)
-      (setq some-pending nil)
-      (dotimes (parser-index (length parser-states))
-       (when (eq active (wisi-elisp-parser-state-active (aref parser-states 
parser-index)))
-         (let* ((parser-state (aref parser-states parser-index))
-                (result (wisi-elisp-parse-1 token parser-state (> 
active-parser-count 1) actions gotos)))
-           (when result
-             ;; spawn a new parser
-             (when (= active-parser-count wisi-parse-max-parallel)
-               (let* ((state (aref (wisi-elisp-parser-state-stack parser-state)
-                                   (wisi-elisp-parser-state-sp parser-state)))
-                      (msg (wisi-error-msg (concat "too many parallel parsers 
required in grammar state %d;"
-                                                   " simplify grammar, or 
increase `wisi-elisp-parse-max-parallel'")
-                                           state)))
-                 (push (make-wisi--parse-error :pos (point) :message msg) 
(wisi-parser-parse-errors parser))
-                 (signal 'wisi-parse-error msg)))
-
-             (let ((j (wisi-elisp-parse-free-parser parser-states)))
-               (cond
-                ((= j -1)
-                 ;; Add to parser-states; the new parser won't be executed
-                 ;; again in this parser-index loop.
-                 (setq parser-states (vconcat parser-states (vector nil)))
-                 (setq j (1- (length parser-states))))
-                ((< j parser-index)
-                 ;; The new parser won't be executed again in this
-                 ;; parser-index loop; nothing to do.
-                 )
-                (t
-                 ;; Don't let the new parser execute again in this
-                 ;; parser-index loop.
-                 (setq some-pending t)
-                 (setf (wisi-elisp-parser-state-active result)
-                       (cl-case (wisi-elisp-parser-state-active result)
-                         (shift 'pending-shift)
-                         (reduce 'pending-reduce)
-                        )))
-                 )
-               (setq active-parser-count (1+ active-parser-count))
-               (when (> active-parser-count (car 
wisi-elisp-parse-max-parallel-current))
-                 (setq wisi-elisp-parse-max-parallel-current (cons 
active-parser-count (point))))
-               (setf (wisi-elisp-parser-state-label result) j)
-               (aset parser-states j result))
-             (when (> wisi-debug 1)
-                (message "spawn parser (%d active)" active-parser-count)))
-
-           (when (eq 'error (wisi-elisp-parser-state-active parser-state))
-             (setq active-parser-count (1- active-parser-count))
-             (when (> wisi-debug 1)
-                (message "terminate parser (%d active)" active-parser-count))
-             (cl-case active-parser-count
-               (0
-                (cond
-                 ((= active-parser-count-prev 1)
-                  ;; We were not in a parallel parse; abandon parsing, report 
the error.
-                  (let* ((state (aref (wisi-elisp-parser-state-stack 
parser-state)
-                                      (wisi-elisp-parser-state-sp 
parser-state)))
-                         (msg (wisi-error-msg "syntax error in grammar state 
%d; unexpected %s, expecting one of %s"
-                                              state
-                                              (wisi-token-text token)
-                                              (mapcar 'car (aref actions 
state)))))
-                    (push (make-wisi--parse-error :pos (point) :message msg) 
(wisi-parser-parse-errors parser))
-                    (signal 'wisi-parse-error msg)))
-                 (t
-                  ;; Report errors from all parsers that failed on this token.
-                  (let ((msg))
-                    (dotimes (_ (length parser-states))
-                      (let* ((parser-state (aref parser-states parser-index))
-                             (state (aref (wisi-elisp-parser-state-stack 
parser-state)
-                                          (wisi-elisp-parser-state-sp 
parser-state))))
-                        (when (eq 'error (wisi-elisp-parser-state-active 
parser-state))
-                          (setq msg
-                                (concat msg
-                                        (when msg "\n")
-                                        (wisi-error-msg
-                                         "syntax error in grammar state %d; 
unexpected %s, expecting one of %s"
-                                         state
-                                         (wisi-token-text token)
-                                         (mapcar 'car (aref actions state)))))
-                          )))
-                    (push (make-wisi--parse-error :pos (point) :message msg) 
(wisi-parser-parse-errors parser))
-                    (signal 'wisi-parse-error msg)))
-                 ))
-
-               (1
-                (setf (wisi-elisp-parser-state-active parser-state) nil); 
Don't save error for later.
-                (wisi-elisp-parse-execute-pending (aref parser-states 
(wisi-elisp-parse-active-parser parser-states))))
-
-               (t
-                ;; We were in a parallel parse, and this parser
-                ;; failed; mark it inactive, don't save error for
-                ;; later.
-                (setf (wisi-elisp-parser-state-active parser-state) nil)
-                )))
-           )));; end dotimes
-
-      (when some-pending
-       ;; Change pending-* parsers to *.
-       (dotimes (parser-index (length parser-states))
-         (cond
-          ((eq (wisi-elisp-parser-state-active (aref parser-states 
parser-index)) 'pending-shift)
-           (setf (wisi-elisp-parser-state-active (aref parser-states 
parser-index)) 'shift))
-          ((eq (wisi-elisp-parser-state-active (aref parser-states 
parser-index)) 'pending-reduce)
-           (setf (wisi-elisp-parser-state-active (aref parser-states 
parser-index)) 'reduce))
-          )))
-
-      (setq active (wisi-elisp-parsers-active parser-states 
active-parser-count))
-      (when (eq active 'shift)
-       (when (> active-parser-count 1)
-         (setq active-parser-count (wisi-elisp-parse-elim-identical parser 
parser-states active-parser-count)))
-
-       (setq token (funcall (wisi-elisp-parser-next-token parser))))
-    )
-    (when (> active-parser-count 1)
-      (error "ambiguous parse result"))
-
-    (cl-case wisi--parse-action
-      (indent
-       (wisi-elisp-parse--indent-leading-comments)
-       (wisi-elisp-parse--resolve-anchors))
-
-      (t nil))
-
-    ;; Return region parsed.
-    (cons (point-min) (point))
-    ))
-
-(defun wisi-elisp-parsers-active-index (parser-states)
-  ;; only called when active-parser-count = 1
-  (let ((result nil)
-       (i 0))
-    (while (and (not result)
-               (< i (length parser-states)))
-      (when (wisi-elisp-parser-state-active (aref parser-states i))
-       (setq result i))
-      (setq i (1+ i)))
-    result))
-
-(defun wisi-elisp-parsers-active (parser-states active-count)
-  "Return the type of parser cycle to execute.
-PARSER-STATES[*].active is the last action a parser took. If it
-was `shift', that parser used the input token, and should not be
-executed again until another input token is available, after all
-parsers have shifted the current token or terminated.
-
-Returns one of:
-
-`accept' : all PARSER-STATES have active set to nil or `accept' -
-done parsing
-
-`shift' : all PARSER-STATES have active set to nil, `accept', or
-`shift' - get a new token, execute `shift' parsers.
-
-`reduce' : some PARSER-STATES have active set to `reduce' - no new
-token, execute `reduce' parsers."
-  (let ((result nil)
-       (i 0)
-       (shift-count 0)
-       (accept-count 0)
-       active)
-    (while (and (not result)
-               (< i (length parser-states)))
-      (setq active (wisi-elisp-parser-state-active (aref parser-states i)))
-      (cond
-       ((eq active 'shift) (setq shift-count (1+ shift-count)))
-       ((eq active 'reduce) (setq result 'reduce))
-       ((eq active 'accept) (setq accept-count (1+ accept-count)))
-       )
-      (setq i (1+ i)))
-
-    (cond
-     (result )
-     ((= accept-count active-count)
-      'accept)
-     ((= (+ shift-count accept-count) active-count)
-      'shift)
-     (t
-      ;; all parsers in error state; should not get here
-      (error "all parsers in error state; programmer error"))
-     )))
-
-(defun wisi-elisp-parse-free-parser (parser-states)
-  "Return index to a non-active parser in PARSER-STATES, -1 if there is none."
-  (let ((result nil)
-       (i 0))
-    (while (and (not result)
-               (< i (length parser-states)))
-      (when (not (wisi-elisp-parser-state-active (aref parser-states i)))
-       (setq result i))
-      (setq i (1+ i)))
-    (if result result -1)))
-
-(defun wisi-elisp-parse-active-parser (parser-states)
-  "Return index to the first active parser in PARSER-STATES."
-  (let ((result nil)
-       (i 0))
-    (while (and (not result)
-               (< i (length parser-states)))
-      (when (wisi-elisp-parser-state-active (aref parser-states i))
-       (setq result i))
-      (setq i (1+ i)))
-    (unless result
-      (error "no active parsers"))
-    result))
-
-(defun wisi-elisp-parse-elim-identical (parser parser-states 
active-parser-count)
-  "Check for parsers in PARSER-STATES that have reached identical states 
eliminate one.
-Return new ACTIVE-PARSER-COUNT. Assumes all parsers have active
-nil, `shift', or `accept'."
-  ;; parser-states passed by reference; active-parser-count by copy
-  ;; see test/ada_mode-slices.adb for example
-  (dotimes (parser-i (1- (length parser-states)))
-    (when (wisi-elisp-parser-state-active (aref parser-states parser-i))
-      (dotimes (parser-j (- (length parser-states) parser-i 1))
-       (when (wisi-elisp-parser-state-active (aref parser-states (+ parser-i 
parser-j 1)))
-         (when (eq (wisi-elisp-parser-state-sp (aref parser-states parser-i))
-                    (wisi-elisp-parser-state-sp (aref parser-states (+ 
parser-i parser-j 1))))
-           (let ((compare t)
-                 exec)
-             (dotimes (stack-i (wisi-elisp-parser-state-sp (aref parser-states 
parser-i)))
-               (setq
-                compare
-                (and compare ;; bypass expensive 'arefs' after first stack 
item compare fail
-                     (equal (aref (wisi-elisp-parser-state-stack (aref 
parser-states parser-i)) stack-i)
-                            (aref (wisi-elisp-parser-state-stack (aref 
parser-states (+ parser-i parser-j 1)))
-                                  stack-i)))))
-             (when compare
-               ;; parser stacks are identical
-               (setq active-parser-count (1- active-parser-count))
-               (when (> wisi-debug 1)
-                 (message "terminate identical parser %d (%d active)"
-                          (+ parser-i parser-j 1) active-parser-count)
-                 (let ((state-i (aref parser-states parser-i))
-                       (state-j (aref parser-states (+ parser-i parser-j 1))))
-                   (message "%d actions:" (wisi-elisp-parser-state-label 
state-i))
-                   (mapc #'wisi-elisp-parse-debug-put-action 
(wisi-elisp-parser-state-pending state-i))
-
-                   (message "%d actions:" (wisi-elisp-parser-state-label 
state-j))
-                   (mapc #'wisi-elisp-parse-debug-put-action 
(wisi-elisp-parser-state-pending state-j))
-                   ))
-               (cl-ecase wisi-debug-identical
-                 (0
-                  (setq exec parser-i)
-                  (setf (wisi-elisp-parser-state-active (aref parser-states (+ 
parser-i parser-j 1))) nil))
-
-                 (1
-                  (setq exec (+ parser-i parser-j 1))
-                  (setf (wisi-elisp-parser-state-active (aref parser-states 
parser-i)) nil))
-
-                 (2
-                  (let ((msg "identical parser stacks"))
-                    (push (make-wisi--parse-error :pos (point) :message msg) 
(wisi-parser-parse-errors parser))
-                    (signal 'wisi-parse-error msg)))
-                 )
-               (when (= active-parser-count 1)
-                 ;; The actions for the two parsers are not
-                 ;; identical, but most of the time either is good
-                 ;; enough for indentation and navigation, so we just
-                 ;; do the actions for the one that is not
-                 ;; terminating. Some times, a significant action is
-                 ;; lost. In that case, turn on
-                 ;; ‘wisi-debug-identical’ to investigate fixing it.
-                 (wisi-elisp-parse-execute-pending (aref parser-states exec)))
-               ))))
-       )))
-  active-parser-count)
-
-(defun wisi-elisp-parse-exec-action (func nonterm tokens)
-  "Execute action if TOKENS not null."
-  ;; `tokens' is null when all tokens in a grammar statement are
-  ;; optional and not present.
-  (unless wisi-action-disable
-    (if (< 0 (length tokens))
-       (when wisi--parse-action
-         (funcall func nonterm tokens))
-
-      (when (> wisi-debug 1)
-       (message "... action skipped; no tokens"))
-      )))
-
-(defvar wisi-elisp-parser-state nil
-  "Let-bound in `wisi-elisp-parse-reduce', used in `wisi-parse-find-token'.")
-
-(defun wisi-elisp-parse-debug-put-action (action)
-  ;; Action is (semantic-function nonterm [tokens])
-  (message "%s [%s]"
-          (nth 0 action)
-          (mapcar #'wisi-tok-debug-image (nth 2 action))))
-
-(defun wisi-elisp-parse-execute-pending (parser-state)
-  (let ((wisi-elisp-parser-state parser-state);; reference, for 
wisi-parse-find-token
-       (pending (wisi-elisp-parser-state-pending parser-state)))
-
-    (when (> wisi-debug 1)
-      (message "%d: pending actions:" (wisi-elisp-parser-state-label 
parser-state)))
-
-    (while pending
-      (when (> wisi-debug 1) (wisi-elisp-parse-debug-put-action (car pending)))
-
-      (let ((func-args (pop pending)))
-       (wisi-elisp-parse-exec-action (nth 0 func-args) (nth 1 func-args) 
(cl-caddr func-args)))
-      )
-    (setf (wisi-elisp-parser-state-pending parser-state) nil)
-    ))
-
-(defmacro wisi-elisp-parse-action (i al)
-  "Return the parser action.
-I is a token item number and AL is the list of (item . action)
-available at current state.  The first element of AL contains the
-default action for this state."
-  `(cdr (or (assq ,i ,al) (car ,al))))
-
-(defun wisi-elisp-parse-1 (token parser-state pendingp actions gotos)
-  "Perform one shift or reduce on PARSER-STATE.
-If PENDINGP, push actions onto PARSER-STATE.pending; otherwise execute them.
-See `wisi-elisp-parse' for full details.
-Return nil or new parser (a wisi-elisp-parser-state struct)."
-  (let* ((state (aref (wisi-elisp-parser-state-stack parser-state)
-               (wisi-elisp-parser-state-sp parser-state)))
-        (parse-action (wisi-elisp-parse-action (wisi-tok-token token) (aref 
actions state)))
-        new-parser-state)
-
-    (when (> wisi-debug 1)
-      ;; output trace info
-      (if (> wisi-debug 2)
-         (progn
-           ;; put top 10 stack items
-           (let* ((count (min 20 (wisi-elisp-parser-state-sp parser-state)))
-                  (msg (make-vector (+ 1 count) nil)))
-             (dotimes (i count)
-               (aset msg (- count i)
-                     (aref (wisi-elisp-parser-state-stack parser-state)
-                           (- (wisi-elisp-parser-state-sp parser-state) i)))
-               )
-             (message "%d: %s: %d: %s"
-                      (wisi-elisp-parser-state-label parser-state)
-                      (wisi-elisp-parser-state-active parser-state)
-                      (wisi-elisp-parser-state-sp parser-state)
-                      msg))
-           (message "   %d: %s: %s" state (wisi-tok-debug-image token) 
parse-action))
-       (message "%d: %d: %s: %s" (wisi-elisp-parser-state-label parser-state) 
state token parse-action)))
-
-    (when (and (listp parse-action)
-              (not (symbolp (car parse-action))))
-      ;; Conflict; spawn a new parser.
-      (setq new-parser-state
-           (make-wisi-elisp-parser-state
-            :active  nil
-            :stack   (vconcat (wisi-elisp-parser-state-stack parser-state))
-            :sp      (wisi-elisp-parser-state-sp parser-state)
-            :pending (wisi-elisp-parser-state-pending parser-state)))
-
-      (wisi-elisp-parse-2 (cadr parse-action) token new-parser-state t gotos)
-      (setq pendingp t)
-      (setq parse-action (car parse-action))
-      );; when
-
-    ;; current parser
-    (wisi-elisp-parse-2 parse-action token parser-state pendingp gotos)
-
-    new-parser-state))
-
-(defun wisi-elisp-parse-2 (action token parser-state pendingp gotos)
-  "Execute parser ACTION (must not be a conflict).
-Return nil."
-  (cond
-   ((eq action 'accept)
-    (setf (wisi-elisp-parser-state-active parser-state) 'accept))
-
-   ((eq action 'error)
-    (setf (wisi-elisp-parser-state-active parser-state) 'error))
-
-   ((natnump action)
-    ;; Shift token and new state (= action) onto stack
-    (let ((stack (wisi-elisp-parser-state-stack parser-state)); reference
-         (sp (wisi-elisp-parser-state-sp parser-state))); copy
-      (setq sp (+ sp 2))
-      (aset stack (1- sp) token)
-      (aset stack sp action)
-      (setf (wisi-elisp-parser-state-sp parser-state) sp))
-    (setf (wisi-elisp-parser-state-active parser-state) 'shift))
-
-   (t
-    (wisi-elisp-parse-reduce action parser-state pendingp gotos)
-    (setf (wisi-elisp-parser-state-active parser-state) 'reduce))
-   ))
-
-(defun wisi-elisp-parse-first-last (stack i j)
-  "Return a pair (FIRST . LAST), indices for the first and last
-non-empty tokens for a nonterminal; or nil if all tokens are
-empty. STACK is the parser stack.  I and J are the indices in
-STACK of the first and last tokens of the nonterminal."
-  (let ((start (car (wisi-tok-region (aref stack i))))
-        (end   (cdr (wisi-tok-region (aref stack j)))))
-    (while (and (or (not start) (not end))
-               (/= i j))
-      (cond
-       ((not start)
-       ;; item i is an empty production
-       (setq start (car (wisi-tok-region (aref stack (setq i (+ i 2)))))))
-
-       ((not end)
-       ;; item j is an empty production
-       (setq end (cdr (wisi-tok-region (aref stack (setq j (- j 2)))))))
-
-       (t (setq i j))))
-
-    (when (and start end)
-      (cons i j))
-    ))
-
-(cl-defmethod wisi-parse-find-token ((_parser wisi-elisp-parser) token-symbol)
-  "Find token with TOKEN-SYMBOL on current parser stack, return token struct.
-For use in grammar actions."
-  ;; Called from wisi-parse-exec-action in wisi-parse-reduce
-  (let* ((stack (wisi-elisp-parser-state-stack wisi-elisp-parser-state))
-        (sp (1- (wisi-elisp-parser-state-sp wisi-elisp-parser-state)))
-        (tok (aref stack sp)))
-    (while (and (> sp 0)
-               (not (eq token-symbol (wisi-tok-token tok))))
-      (setq sp (- sp 2))
-      (setq tok (aref stack sp)))
-    (if (= sp 0)
-       (error "token %s not found on parse stack" token-symbol)
-      tok)
-    ))
-
-(cl-defmethod wisi-parse-stack-peek ((_parser wisi-elisp-parser) n)
-  ;; IMPROVEME: store stack in parser
-  (let* ((stack (wisi-elisp-parser-state-stack wisi-elisp-parser-state))
-        (sp (1- (wisi-elisp-parser-state-sp wisi-elisp-parser-state)))
-        (i (- sp (* 2 n))))
-    (when (> i 0)
-      (aref stack i))))
-
-(defun wisi-elisp-parse-reduce (action parser-state pendingp gotos)
-  "Reduce PARSER-STATE.stack, and execute or pend ACTION."
-  (let* ((wisi-elisp-parser-state parser-state);; reference, for 
wisi-parse-find-token
-        (stack (wisi-elisp-parser-state-stack parser-state)); reference
-        (sp (wisi-elisp-parser-state-sp parser-state)); copy
-        (token-count (nth 2 action))
-        (nonterm (nth 0 action))
-        (first-last (when (> token-count 0)
-                      (wisi-elisp-parse-first-last stack (- sp (* 2 (1- 
token-count)) 1) (1- sp))))
-        (nonterm-region (when first-last
-                          (cons
-                           (car (wisi-tok-region (aref stack (car 
first-last))))
-                           (cdr (wisi-tok-region (aref stack (cdr 
first-last)))))))
-        (post-reduce-state (aref stack (- sp (* 2 token-count))))
-        (new-state (cdr (assoc nonterm (aref gotos post-reduce-state))))
-        (tokens (make-vector token-count nil))
-        line first comment-line comment-end)
-
-    (when (not new-state)
-      (error "no goto for %s %d" nonterm post-reduce-state))
-
-    (dotimes (i token-count) ;;  i = 0 .. (1- token-count); last token = 0, 
first token = (1- token-count)
-      (let ((tok (aref stack (- sp (* 2 i) 1))))
-       (when (nth 1 action)
-         ;; don't need wisi-tokens for a null user action
-         (aset tokens (- token-count i 1) tok))
-
-       (when (eq wisi--parse-action 'indent)
-         (setq line (or (wisi-tok-line tok) line))
-         (cond
-          ((numberp (wisi-tok-first tok))
-           (setq first (wisi-tok-first tok)))
-
-          ((wisi-tok-first tok)
-           (setq first (wisi-tok-line tok)))
-
-          ((and (not (= i 0))
-                      (wisi-tok-comment-line tok))
-           ;; comment lines following last token are not included in nonterm
-           ;; test/ada_mode-nominal.ads Object_Access_Type_5a
-           ;; test/ada_mode-parens.adb
-           (setq first (wisi-tok-comment-line tok)))
-          )
-         (when (and (= i 0)
-                    (wisi-tok-comment-line tok))
-           (setq comment-line (wisi-tok-comment-line tok))
-           (setq comment-end (wisi-tok-comment-end tok)))
-       )))
-
-    (setq sp (+ 2 (- sp (* 2 token-count))))
-    (aset stack (1- sp)
-         (make-wisi-tok
-          :token nonterm
-          :region nonterm-region
-          :nonterminal t
-          :line line
-          :first first
-          :comment-line comment-line
-          :comment-end comment-end))
-    (aset stack sp new-state)
-    (setf (wisi-elisp-parser-state-sp parser-state) sp)
-
-    (when (nth 1 action)
-      ;; nothing to do for a null user action
-      (if pendingp
-         (if (wisi-elisp-parser-state-pending parser-state)
-             (setf (wisi-elisp-parser-state-pending parser-state)
-                   (append (wisi-elisp-parser-state-pending parser-state)
-                           (list (list (nth 1 action) nonterm tokens))))
-           (setf (wisi-elisp-parser-state-pending parser-state)
-                 (list (list (nth 1 action) nonterm tokens))))
-
-       ;; Not pending.
-       (wisi-elisp-parse-exec-action (nth 1 action) nonterm tokens)
-       ))
-    ))
-
-;;;; navigate grammar actions
-
-(defun wisi-elisp-parse--set-end (start-mark end-mark)
-  "Set END-MARK on all caches in `wisi-end-caches' in range START-MARK 
END-MARK,
-delete from `wisi-end-caches'."
-  (let ((i 0)
-       pos cache)
-    (while (< i (length wisi-end-caches))
-      (setq pos (nth i wisi-end-caches))
-      (setq cache (wisi-get-cache pos))
-
-      (if (and (>= pos start-mark)
-              (<  pos end-mark))
-         (progn
-           (setf (wisi-cache-end cache) end-mark)
-           (setq wisi-end-caches (delq pos wisi-end-caches)))
-
-       ;; else not in range
-       (setq i (1+ i)))
-      )))
-
-(defvar wisi-tokens nil
-  ;; Not wisi-elisp-parse--tokens for ease in debugging actions, and
-  ;; to match lots of doc strings.
-  "Array of ‘wisi-tok’ structures for the right hand side of the current 
production.
-Let-bound in parser semantic actions.")
-
-(defvar wisi-nterm nil
-  ;; Not wisi-elisp-parse--nterm for ease in debugging actions
-  "The token id for the left hand side of the current production.
-Let-bound in parser semantic actions.")
-
-(defun wisi-statement-action (pairs)
-  ;; Not wisi-elisp-parse--statement-action to match existing grammar files
-  "Cache navigation information in text properties of tokens.
-Intended as a grammar non-terminal action.
-
-PAIRS is a vector of the form [TOKEN-NUMBER CLASS TOKEN-NUMBER
-CLASS ...] where TOKEN-NUMBER is the (1 indexed) token number in
-the production, CLASS is the wisi class of that token. Use in a
-grammar action as:
-  (wisi-statement-action [1 statement-start 7 statement-end])"
-  (when (eq wisi--parse-action 'navigate)
-    (save-excursion
-      (let ((first-item t)
-           first-keyword-mark
-           (override-start nil)
-           (i 0))
-       (while (< i (length pairs))
-         (let* ((number (1- (aref pairs i)))
-                (region (wisi-tok-region (aref wisi-tokens number)))
-                (token (wisi-tok-token (aref wisi-tokens number)))
-                (class (aref pairs (setq i (1+ i))))
-                (mark (when region (copy-marker (car region) t)))
-                cache)
-
-           (setq i (1+ i))
-
-           (unless
-               (cond
-                ((fboundp 'seq-contains)  ;; emacs < 27
-                   (seq-contains wisi-class-list class))
-                ((fboundp 'seq-contains-p) ;; emacs >= 27
-                 (seq-contains-p wisi-class-list class)))
-             (error "%s not in wisi-class-list" class))
-
-           (if region
-               (progn
-                 (if (setq cache (wisi-get-cache (car region)))
-                     ;; We are processing a previously set non-terminal; ie 
simple_statement in
-                     ;;
-                     ;; statement : label_opt simple_statement
-                     ;;
-                     ;; override nonterm, class, containing
-                     (progn
-                       (setf (wisi-cache-class cache) (or override-start 
class))
-                       (setf (wisi-cache-nonterm cache) wisi-nterm)
-                       (setf (wisi-cache-containing cache) first-keyword-mark)
-                       (if wisi-end-caches
-                           (push (car region) wisi-end-caches)
-                         (setq wisi-end-caches (list (car region)))
-                         ))
-
-                   ;; else create new cache
-                   (with-silent-modifications
-                     (put-text-property
-                      (car region)
-                      (1+ (car region))
-                      'wisi-cache
-                      (wisi-cache-create
-                       :nonterm    wisi-nterm
-                       :token      token
-                       :last       (- (cdr region) (car region))
-                       :class      (or override-start class)
-                       :containing first-keyword-mark)
-                      ))
-                   (if wisi-end-caches
-                       (push (car region) wisi-end-caches)
-                     (setq wisi-end-caches (list (car region)))
-                     ))
-
-                 (when first-item
-                   (setq first-item nil)
-                   (when (or override-start
-                             (eq class 'statement-start))
-                     (setq override-start nil)
-                     (setq first-keyword-mark mark)))
-
-                 (when (eq class 'statement-end)
-                   (wisi-elisp-parse--set-end first-keyword-mark (copy-marker 
(car region) t)))
-                 )
-
-             ;; region is nil when a production is empty; if the first
-             ;; token is a start, override the class on the next token.
-             (when (and first-item
-                        (eq class 'statement-start))
-               (setq override-start class)))
-           ))
-       ))))
-
-(defun wisi-name-action (name)
-  ;; Not wisi-elisp-parse--name-action to simplify grammar files
-  "NAME is a token number; mark that token with the 'wisi-name text property.
-Intended as a grammar action."
-  (when (eq wisi--parse-action 'navigate)
-    (let ((region (wisi-tok-region (aref wisi-tokens (1- name)))))
-      (when region
-       ;; region can be null on an optional or virtual token
-       (with-silent-modifications
-         (put-text-property (car region) (cdr region) 'wisi-name t))
-       ))))
-
-(defun wisi-containing-action (containing-token contained-token)
-  ;; Not wisi-elisp-parse--containing-action to match existing grammar files
-  "Set containing marks in all tokens in CONTAINED-TOKEN
-with null containing mark to marker pointing to CONTAINING-TOKEN.
-If CONTAINING-TOKEN is empty, the next token number is used."
-  (when (eq wisi--parse-action 'navigate)
-    (let* ((containing-tok (aref wisi-tokens (1- containing-token)))
-          (containing-region (wisi-tok-region containing-tok))
-          (contained-tok (aref wisi-tokens (1- contained-token)))
-          (contained-region (wisi-tok-region contained-tok)))
-
-      (unless containing-region
-       (signal 'wisi-parse-error
-               (wisi-error-msg
-                "wisi-containing-action: containing-region '%s' is empty. 
grammar error; bad action"
-                (wisi-tok-token containing-tok))))
-
-      (unless (or (not contained-region) ;; contained-token is empty
-                 (wisi-get-cache (car containing-region)))
-       (signal 'wisi-parse-error
-               (wisi-error-msg
-                "wisi-containing-action: containing-token '%s' has no cache. 
grammar error; missing action"
-                (wisi-token-text (aref wisi-tokens (1- containing-token))))))
-
-      (when contained-region
-         ;; nil when empty production, may not contain any caches
-         (save-excursion
-           (goto-char (cdr contained-region))
-           (let ((cache (wisi-backward-cache))
-                 (mark (copy-marker (car containing-region) t)))
-             (while cache
-
-               ;; skip blocks that are already marked
-               (while (and (>= (point) (car contained-region))
-                           (markerp (wisi-cache-containing cache)))
-                 (goto-char (wisi-cache-containing cache))
-                 (setq cache (wisi-get-cache (point))))
-
-               (if (or (and (= (car containing-region) (car contained-region))
-                            (<= (point) (car contained-region)))
-                       (< (point) (car contained-region)))
-                   ;; done
-                   (setq cache nil)
-
-                 ;; else set mark, loop
-                 (setf (wisi-cache-containing cache) mark)
-                 (setq cache (wisi-backward-cache)))
-               ))))
-      )))
-
-(defun wisi-elisp-parse--match-token (cache tokens start)
-  "Return t if CACHE has id from TOKENS and is at START or has containing 
equal to START.
-point must be at cache token start.
-TOKENS is a vector [number token_id token_id ...].
-number is ignored."
-  (let ((i 1)
-       (done nil)
-       (result nil)
-       token)
-    (when (or (= start (point))
-             (and (wisi-cache-containing cache)
-                  (= start (wisi-cache-containing cache))))
-      (while (and (not done)
-                 (< i (length tokens)))
-       (setq token (aref tokens i))
-       (if (eq token (wisi-cache-token cache))
-           (setq result t
-                 done t)
-         (setq i (1+ i)))
-       ))
-    result))
-
-(defun wisi-motion-action (token-numbers)
-  ;; Not wisi-elisp-parse--motion-action to match existing grammar files
-  "Set prev/next marks in all tokens given by TOKEN-NUMBERS.
-TOKEN-NUMBERS is a vector with each element one of:
-
-number: the token number; mark that token
-
-vector [number token_id]:
-vector [number token_id token_id ...]:
-   mark all tokens in number nonterminal matching token_id with nil prev/next."
-  (when (eq wisi--parse-action 'navigate)
-    (save-excursion
-      (let (prev-keyword-mark
-           prev-cache
-           token
-           start
-           cache
-           mark
-           (i 0))
-       (while (< i (length token-numbers))
-         (let ((token-number (aref token-numbers i))
-               region)
-           (setq i (1+ i))
-           (cond
-            ((numberp token-number)
-             (setq token (aref wisi-tokens (1- token-number)))
-             (setq region (wisi-tok-region token))
-             (when region
-               (unless start (setq start (car region)))
-               (setq cache (wisi-get-cache (car region)))
-               (unless cache (error "no cache on token %d; add to 
statement-action" token-number))
-               (setq mark (copy-marker (car region) t))
-
-               (if prev-keyword-mark
-                   (progn
-                     (setf (wisi-cache-prev cache) prev-keyword-mark)
-                     (setf (wisi-cache-next prev-cache) mark)
-                     (setq prev-keyword-mark mark)
-                     (setq prev-cache cache))
-
-                 ;; else first token; save as prev
-                 (setq prev-keyword-mark mark)
-                 (setq prev-cache cache))
-               ))
-
-            ((vectorp token-number)
-             ;; token-number may contain 1 or more token_ids
-             ;; the corresponding region may be empty
-             ;; there may not have been a prev keyword
-             (setq region (wisi-tok-region (aref wisi-tokens (1- (aref 
token-number 0)))))
-             (when region ;; not an empty token
-               ;; We must search for all targets at the same time, to
-               ;; get the motion order right.
-               (unless start (setq start (car region)))
-               (goto-char (car region))
-               (setq cache (wisi-get-cache (point)))
-               (unless cache (error "no cache at %d; add to statement-action" 
(car region)))
-               (while (< (point) (cdr region))
-                 (when (wisi-elisp-parse--match-token cache token-number start)
-                   (setq mark (copy-marker (point) t))
-
-                   (if prev-keyword-mark
-                       ;; Don't include this token if prev/next
-                       ;; already set by a lower level statement,
-                       ;; such as a nested if/then/elsif/end if.
-                       (when (and (null (wisi-cache-prev cache))
-                                  (null (wisi-cache-next prev-cache)))
-                         (setf (wisi-cache-prev cache) prev-keyword-mark)
-                         (setf (wisi-cache-next prev-cache) mark)
-                         (setq prev-keyword-mark mark)
-                         (setq prev-cache cache))
-
-                     ;; else first token; save as prev
-                     (setq prev-keyword-mark mark)
-                     (setq prev-cache cache)))
-
-                 (setq cache (wisi-forward-cache))
-                 )))
-
-            (t
-             (error "unexpected token-number %s" token-number))
-            )
-
-           ))
-       ))))
-
-;;;; Face grammar actions
-
-(defun wisi-elisp-parse--face-put-cache (region class)
-  "Put a ’wisi-face’ cache with class CLASS on REGION."
-  (when (> wisi-debug 1)
-    (message "face: put cache %s:%s" region class))
-  (with-silent-modifications
-    (put-text-property
-     (car region)
-     (1+ (car region))
-     'wisi-face
-     (wisi-cache-create
-      :last (- (cdr region) (car region))
-      :class class)
-     )))
-
-(defun wisi-face-mark-action (pairs)
-  ;; Not wisi-elisp-parse--face-mark-action to match existing grammar files
-  "PAIRS is a vector of TOKEN CLASS pairs; mark TOKEN (token number)
-as having face CLASS (prefix or suffix).
-Intended as a grammar action."
-  (when (eq wisi--parse-action 'face)
-    (let ((i 0))
-      (while (< i (length pairs))
-       (let ((region (wisi-tok-region (aref wisi-tokens (1- (aref pairs i)))))
-             (class (aref pairs (setq i (1+ i)))))
-         (setq i (1+ i))
-         (when region
-           ;; region can be null on an optional or virtual token
-           (let ((cache (get-text-property (car region) 'wisi-face)))
-             (if cache
-                 ;; previously marked; extend this cache, delete any others
-                 (progn
-                   (with-silent-modifications
-                     (remove-text-properties (+ (car region) (wisi-cache-last 
cache)) (cdr region) '(wisi-face nil)))
-                   (setf (wisi-cache-class cache) class)
-                   (setf (wisi-cache-last cache) (- (cdr region) (car 
region))))
-
-               ;; else not previously marked
-               (wisi-elisp-parse--face-put-cache region class)))
-           ))
-       ))))
-
-(defun wisi-face-remove-action (tokens)
-  ;; Not wisi-elisp-parse--face-remove-action to match existing grammar files
-  "Remove face caches and faces in TOKENS.
-Intended as a grammar action.
-
-TOKENS is a vector of token numbers."
-  (when (eq wisi--parse-action 'face)
-    (let ((i 0))
-      (while (< i (length tokens))
-       (let* ((number (1- (aref tokens i)))
-              (region (wisi-tok-region (aref wisi-tokens number)))
-              face-cache)
-
-         (setq i (1+ i))
-
-         (when region
-           (let ((pos (car region)))
-             (while (< pos (cdr region))
-               (when (setq face-cache (get-text-property pos 'wisi-face))
-                 (when (> wisi-debug 1)
-                   (message "face: remove face %s" (cons pos (+ pos 
(wisi-cache-last face-cache)))))
-                 (with-silent-modifications
-                   (remove-text-properties
-                    pos (+ pos (wisi-cache-last face-cache))
-                    (list
-                     'wisi-face nil
-                     'font-lock-face nil
-                     'fontified t))))
-               (setq pos (next-single-property-change
-                          (+ pos (or (and face-cache
-                                          (wisi-cache-last face-cache))
-                                     0))
-                          'wisi-face nil (cdr region)))
-               )))
-         )))))
-
-(defun wisi-elisp-parse--face-action-1 (face region)
-  "Apply FACE to REGION."
-  (when region
-    (when (> wisi-debug 1)
-      (message "face: add face %s:%s" region face))
-    (with-silent-modifications
-      (add-text-properties
-       (car region) (cdr region)
-       (list
-       'font-lock-face face
-       'fontified t)))
-    ))
-
-(defun wisi-face-apply-action (triples)
-  ;; Not wisi-elisp-parse--face-apply-action to match existing grammar files
-  "Set face information in `wisi-face' text properties of tokens.
-Intended as a grammar non-terminal action.
-
-TRIPLES is a vector of the form [TOKEN-NUMBER PREFIX-FACE SUFFIX-FACE ...]
-
-In the first ’wisi-face’ cache in each token region, apply
-PREFIX-FACE to class PREFIX, SUFFIX-FACE to class SUFFIX, or
-SUFFIX-FACE to all of the token region if there is no ’wisi-face’
-cache."
-  (when (eq wisi--parse-action 'face)
-    (let (number prefix-face suffix-face (i 0))
-      (while (< i (length triples))
-       (setq number (aref triples i))
-       (setq prefix-face (aref triples (setq i (1+ i))))
-       (setq suffix-face (aref triples (setq i (1+ i))))
-       (cond
-        ((integerp number)
-         (let* ((token-region (wisi-tok-region (aref wisi-tokens (1- number))))
-                (pos (car token-region))
-                (j 0)
-                (some-cache nil)
-                cache)
-           (when token-region
-             ;; region can be null for an optional or virtual token
-             (while (< j 2)
-               (setq cache (get-text-property pos 'wisi-face))
-               (cond
-                ((and (not some-cache)
-                      (null cache))
-                 ;; cache is null when applying a face to a token
-                 ;; directly, without first calling
-                 ;; wisi-face-mark-action. Or when there is a
-                 ;; previously applied face in a lower level token,
-                 ;; such as a numeric literal.
-                 (wisi-elisp-parse--face-action-1 suffix-face token-region))
-
-                ((and cache
-                      (eq 'prefix (wisi-cache-class cache)))
-                 (setq some-cache t)
-                 (wisi-elisp-parse--face-action-1 prefix-face 
(wisi-cache-region cache pos)))
-
-                ((and cache
-                      (eq 'suffix (wisi-cache-class cache)))
-                 (setq some-cache t)
-                 (wisi-elisp-parse--face-action-1 suffix-face 
(wisi-cache-region cache pos)))
-
-                (t
-                 ;; don’t apply a face
-                 nil)
-                )
-
-               (setq j (1+ j))
-               (if suffix-face
-                   (setq pos (next-single-property-change (+ 2 pos) 'wisi-face 
nil (cdr token-region)))
-                 (setq j 2))
-               ))))
-
-        (t
-         ;; catch conversion errors from previous grammar syntax
-         (error "wisi-face-apply-action with non-integer token number"))
-        )
-       (setq i (1+ i))
-       ))))
-
-(defun wisi-face-apply-list-action (triples)
-  ;; Not wisi-elisp-parse--face-apply-list-action to match existing grammar 
files
-  "Similar to ’wisi-face-apply-action’, but applies faces to all
-tokens with a `wisi-face' cache in the wisi-tokens[token-number]
-region, and does not apply a face if there are no such caches."
-  (when (eq wisi--parse-action 'face)
-    (let (number token-region face-region prefix-face suffix-face cache (i 0) 
pos)
-      (while (< i (length triples))
-       (setq number (aref triples i))
-       (setq prefix-face (aref triples (setq i (1+ i))))
-       (setq suffix-face (aref triples (setq i (1+ i))))
-       (cond
-        ((integerp number)
-         (setq token-region (wisi-tok-region (aref wisi-tokens (1- number))))
-         (when token-region
-           ;; region can be null for an optional token
-           (setq pos (car token-region))
-           (while (and pos
-                       (< pos (cdr token-region)))
-             (setq cache (get-text-property pos 'wisi-face))
-             (setq face-region (wisi-cache-region cache pos))
-             (cond
-              ((or (null (wisi-cache-class cache))
-                   (eq 'prefix (wisi-cache-class cache)))
-               (wisi-elisp-parse--face-action-1 prefix-face face-region))
-              ((eq 'suffix (wisi-cache-class cache))
-               (wisi-elisp-parse--face-action-1 suffix-face face-region))
-
-              (t
-               (error "wisi-face-apply-list-action: face cache class is not 
prefix or suffix")))
-
-             (setq pos (next-single-property-change (1+ pos) 'wisi-face nil 
(cdr token-region)))
-             )))
-        (t
-         ;; catch conversion errors from previous grammar syntax
-         (error "wisi-face-apply-list-action with non-integer token number"))
-        )
-       (setq i (1+ i))
-       ))))
-
-;;;; indent grammar actions
-
-(defvar wisi-elisp-parse-indent-hanging-function nil
-  "Language-specific implementation of `wisi-hanging', `wisi-hanging%'.
-A function taking args TOK DELTA1 DELTA2 OPTION NO-ACCUMULATE,
-and returning an indent.
-TOK is a `wisi-tok' struct for the token being indented.
-DELTA1, DELTA2 are the indents of the first and following lines
-within the nonterminal.  OPTION is non-nil if action is `wisi-hanging%'.
-point is at start of TOK, and may be moved.")
-(make-variable-buffer-local 'wisi-elisp-parse-indent-hanging-function)
-
-(defvar wisi-token-index nil
-  ;; Not wisi-elisp-parse--token-index for backward compatibility
-  "Index of current token in `wisi-tokens'.
-Let-bound in `wisi-indent-action', for grammar actions.")
-
-(defvar wisi-indent-comment nil
-  ;; Not wisi-elisp-parse--indent-comment for backward compatibility
-  "Non-nil if computing indent for comment.
-Let-bound in `wisi-indent-action', for grammar actions.")
-
-(defun wisi-elisp-parse--apply-int (i delta)
-  "Add DELTA (an integer) to the indent at index I."
-  (let ((indent (aref wisi-elisp-parse--indent i))) ;; reference if list
-
-    (cond
-     ((null indent)
-      (aset wisi-elisp-parse--indent i delta))
-
-     ((integerp indent)
-      (aset wisi-elisp-parse--indent i (+ delta indent)))
-
-     ((listp indent)
-      (cond
-       ((eq 'anchor (car indent))
-       (cond
-        ((null (nth 2 indent))
-         (setf (nth 2 indent) delta))
-
-        ((integerp (nth 2 indent))
-         (setf (nth 2 indent) (+ delta (nth 2 indent))))
-
-        ;; else anchored; not affected by this delta
-        ))
-
-       ((eq 'anchored (car indent))
-       ;; not affected by this delta
-       )))
-
-     (t
-      (error "wisi-elisp-parse--apply-int: invalid form : %s" indent))
-     )))
-
-(defun wisi-elisp-parse--apply-anchored (delta i)
-  "Apply DELTA (an anchored indent) to indent I."
-  ;; delta is from wisi-anchored; ('anchored 1 delta no-accumulate)
-  (let ((indent (aref wisi-elisp-parse--indent i))
-       (accumulate (not (nth 3 delta))))
-
-    (when delta
-      (cond
-       ((null indent)
-       (aset wisi-elisp-parse--indent i (seq-take delta 3)))
-
-       ((integerp indent)
-       (when accumulate
-         (let ((temp (seq-take delta 3)))
-           (setf (nth 2 temp) (+ indent (nth 2 temp)))
-           (aset wisi-elisp-parse--indent i temp))))
-
-       ((and (listp indent)
-            (eq 'anchor (car indent))
-            (or (null (nth 2 indent))
-                (integerp (nth 2 indent))))
-       (when (or (null (nth 2 indent))
-                 accumulate)
-         (let ((temp (seq-take delta 3)))
-           (cond
-            ((null (nth 2 indent))
-             (setf (nth 2 indent) temp))
-
-            (t
-             (setf (nth 2 temp) (+ (nth 2 indent) (nth 2 temp)))
-             (setf (nth 2 indent) temp))))
-         ))
-       ))))
-
-(defun wisi-elisp-parse--indent-null-p (indent)
-  (or (null indent)
-      (and (eq 'anchor (nth 0 indent))
-          (null (nth 2 indent)))))
-
-(defun wisi-elisp-parse--indent-token-1 (line end delta)
-  "Apply indent DELTA to all lines from LINE (a line number) thru END (a 
buffer position)."
-  (let ((i (1- line));; index to wisi-elisp-lexer-line-begin, 
wisi-elisp-parse--indent
-       (paren-first (when (and (listp delta)
-                               (eq 'hanging (car delta)))
-                      (nth 2 delta))))
-
-    (while (<= (aref (wisi-elisp-lexer-line-begin wisi--lexer) i) end)
-      (if
-         (and ;; no check for called from wisi--indent-comment;
-              ;; comments within tokens are indented by
-              ;; wisi--indent-token
-              wisi-indent-comment-col-0
-              (= 11 (syntax-class (syntax-after (aref 
(wisi-elisp-lexer-line-begin wisi--lexer) i)))))
-         (wisi-elisp-parse--apply-int i 0)
-       (cond
-        ((integerp delta)
-         (wisi-elisp-parse--apply-int i delta))
-
-        ((listp delta)
-         (cond
-          ((eq 'anchored (car delta))
-           (wisi-elisp-parse--apply-anchored delta i))
-
-          ((eq 'hanging (car delta))
-           ;; from wisi-hanging; delta is ('hanging first-line nest delta1 
delta2 no-accumulate)
-           ;; delta1, delta2 may be anchored
-           (when (or (not (nth 5 delta))
-                     (wisi-elisp-parse--indent-null-p (aref 
wisi-elisp-parse--indent i)))
-             (if (= i (1- (nth 1 delta)))
-                 ;; apply delta1
-                 (let ((delta1 (nth 3 delta)))
-                   (cond
-                    ((integerp delta1)
-                     (wisi-elisp-parse--apply-int i delta1))
-
-                    (t ;; anchored
-                     (wisi-elisp-parse--apply-anchored delta1 i))
-                    ))
-
-               ;; don't apply hanging indent in nested parens.
-               ;; test/ada_mode-parens.adb
-               ;; No_Conditional_Set : constant Ada.Strings.Maps.Character_Set 
:=
-               ;;   Ada.Strings.Maps."or"
-               ;;     (Ada.Strings.Maps.To_Set (' '),
-               (when (= paren-first
-                        (nth 0 (save-excursion (syntax-ppss (aref 
(wisi-elisp-lexer-line-begin wisi--lexer) i)))))
-                 (let ((delta2 (nth 4 delta)))
-                   (cond
-                    ((integerp delta2)
-                     (wisi-elisp-parse--apply-int i delta2))
-
-                    (t ;; anchored
-                     (wisi-elisp-parse--apply-anchored delta2 i))
-                    )))
-               )))
-
-          (t
-           (error "wisi-elisp-parse--indent-token-1: invalid delta: %s" delta))
-          )) ;; listp delta
-
-        (t
-         (error "wisi-elisp-parse--indent-token-1: invalid delta: %s" delta))
-        ))
-      (setq i (1+ i))
-      )))
-
-(defun wisi-elisp-parse--indent-token (tok token-delta)
-  "Add TOKEN-DELTA to all indents in TOK region,"
-  (let ((line (if (wisi-tok-nonterminal tok)
-                 (wisi-tok-first tok)
-               (when (wisi-tok-first tok) (wisi-tok-line tok))))
-       (end (cdr (wisi-tok-region tok))))
-    (when (and line end token-delta)
-      (wisi-elisp-parse--indent-token-1 line end token-delta))))
-
-(defun wisi-elisp-parse--indent-comment (tok comment-delta)
-  "Add COMMENT-DELTA to all indents in comment region following TOK."
-  (let ((line (wisi-tok-comment-line tok))
-       (end (wisi-tok-comment-end tok)))
-    (when (and line end comment-delta)
-      (wisi-elisp-parse--indent-token-1 line end comment-delta))))
-
-(defun wisi-elisp-parse--anchored-1 (tok offset &optional no-accumulate)
-  "Return offset of TOK relative to current indentation + OFFSET.
-For use in grammar indent actions."
-  (when (wisi-tok-region tok)
-    ;; region can be nil when token is inserted by error recovery
-    (let ((pos (car (wisi-tok-region tok)))
-         delta)
-
-      (goto-char pos)
-      (setq delta (+ offset (- (current-column) (current-indentation))))
-      (wisi-elisp-parse--anchored-2
-       (wisi-tok-line tok) ;; anchor-line
-       (if wisi-indent-comment
-          (wisi-tok-comment-end (aref wisi-tokens wisi-token-index))
-        (cdr (wisi-tok-region (aref wisi-tokens wisi-token-index))));; end
-       delta
-       no-accumulate)
-      )))
-
-(defun wisi-elisp-parse--max-anchor (begin-line end)
-  (let ((i (1- begin-line))
-       (max-i (length (wisi-elisp-lexer-line-begin wisi--lexer)))
-       (result 0))
-    (while (and (< i max-i)
-               (<= (aref (wisi-elisp-lexer-line-begin wisi--lexer) i) end))
-      (let ((indent (aref wisi-elisp-parse--indent i)))
-       (when (and indent (listp indent))
-         (cond
-          ((eq 'anchor (car indent))
-           (setq result (max result (car (nth 1 indent))))
-           (when (and (nth 2 indent) (listp (nth 2 indent)))
-             (setq result (max result (nth 1 (nth 2 indent))))
-             ))
-          (t ;; anchored
-           (setq result (max result (nth 1 indent))))
-          )))
-      (setq i (1+ i)))
-    result
-    ))
-
-(defun wisi-elisp-parse--anchored-2 (anchor-line end delta no-accumulate)
-  "Set ANCHOR-LINE as anchor, increment anchors thru END, return anchored 
delta."
-  ;; Typically, we use anchored to indent relative to a token buried in a line:
-  ;;
-  ;; test/ada_mode-parens.adb
-  ;; Local_2 : Integer := (1 + 2 +
-  ;;                         3);
-  ;; line starting with '3' is anchored to '('
-  ;;
-  ;; If the anchor is a nonterminal, and the first token in the anchor
-  ;; is also first on a line, we don't need anchored to compute the
-  ;; delta:
-  ;;
-  ;; test/ada_mode-parens.adb
-  ;; Local_5 : Integer :=
-  ;;   (1 + 2 +
-  ;;      3);
-  ;; delta for line starting with '3' can just be '3'.
-  ;;
-  ;; However, in some places we need anchored to prevent later
-  ;; deltas from accumulating:
-  ;;
-  ;; test/ada_mode-parens.adb
-  ;; No_Conditional_Set : constant Ada.Strings.Maps.Character_Set :=
-  ;;   Ada.Strings.Maps."or"
-  ;;     (Ada.Strings.Maps.To_Set (' '),
-  ;;
-  ;; here the function call actual parameter part is indented first
-  ;; by 'name' and later by 'expression'; we use anchored to keep the
-  ;; 'name' delta and ignore the later delta.
-  ;;
-  ;; So we apply anchored whether the anchor token is first or not.
-
-  (let* ((i (1- anchor-line))
-        (indent (aref wisi-elisp-parse--indent i)) ;; reference if list
-        (anchor-id (1+ (wisi-elisp-parse--max-anchor anchor-line end))))
-
-    ;; Set anchor
-    (cond
-     ((or
-       (null indent)
-       (integerp indent))
-      (aset wisi-elisp-parse--indent i (list 'anchor (list anchor-id) indent)))
-
-     ((and (listp indent)
-          (eq 'anchor (car indent)))
-      (push anchor-id (nth 1 indent)))
-
-     ((and (listp indent)
-          (eq 'anchored (car indent)))
-      (aset wisi-elisp-parse--indent i (list 'anchor (list anchor-id) 
(copy-sequence indent))))
-
-     (t
-      (error "wisi-anchored-delta: invalid form in indent: %s" indent)))
-
-    (list 'anchored anchor-id delta no-accumulate)
-    ))
-
-(defun wisi-anchored (token-number offset &optional no-accumulate)
-  ;; Not wisi-elisp-parse--anchored to match existing grammar files
-  "Return offset of token TOKEN-NUMBER in `wisi-tokens'.relative to current 
indentation + OFFSET.
-For use in grammar indent actions."
-  (wisi-elisp-parse--anchored-1 (aref wisi-tokens (1- token-number)) offset 
no-accumulate))
-
-(defun wisi-anchored* (token-number offset)
-  ;; Not wisi-elisp-parse--anchored* to match existing grammar files
-  "If TOKEN-NUMBER token in `wisi-tokens' is first on a line,
-call ’wisi-anchored OFFSET’. Otherwise return 0.
-For use in grammar indent actions."
-  (if (wisi-tok-first (aref wisi-tokens (1- token-number)))
-      (wisi-anchored token-number offset)
-    0))
-
-(defun wisi-anchored*- (token-number offset)
-  ;; Not wisi-elisp-parse--anchored*- to match existing grammar files
-  "If existing indent is zero, and TOKEN-NUMBER token in `wisi-tokens' is 
first on a line,
-call ’wisi-anchored OFFSET’. Otherwise return 0.
-For use in grammar indent actions."
-  (if (wisi-tok-first (aref wisi-tokens (1- token-number)))
-      (wisi-anchored token-number offset t)
-    0))
-
-(defun wisi-elisp-parse--paren-in-anchor-line (anchor-tok offset)
-  "If there is an opening paren containing ANCHOR-TOK in the same line as 
ANCHOR-TOK,
-return OFFSET plus the delta from the line indent to the paren
-position. Otherwise return OFFSET."
-  (let* ((tok-syntax (syntax-ppss (car (wisi-tok-region anchor-tok))))
-        (paren-pos (nth 1 tok-syntax))
-        (anchor-line (wisi-tok-line anchor-tok)))
-
-    (when (and paren-pos ;; in paren
-             (< paren-pos (aref (wisi-elisp-lexer-line-begin wisi--lexer) (1- 
anchor-line))))
-      ;; paren not in anchor line
-      (setq paren-pos nil))
-
-    (if paren-pos
-       (progn
-         (goto-char paren-pos)
-         (+ 1 (- (current-column) (current-indentation)) offset))
-      offset)
-    ))
-
-(defun wisi-anchored% (token-number offset &optional no-accumulate)
-  ;; Not wisi-elisp-parse--anchored% to match existing grammar files
-  "Return either an anchor for the current token at OFFSET from an enclosing 
paren on
-the line containing TOKEN-NUMBER, or OFFSET.
-For use in grammar indent actions."
-  (let* ((indent-tok (aref wisi-tokens wisi-token-index))
-        ;; indent-tok is a nonterminal; this function makes no sense for 
terminals
-        (anchor-tok (aref wisi-tokens (1- token-number))))
-
-    (wisi-elisp-parse--anchored-2
-     (wisi-tok-line anchor-tok)
-
-     (if wisi-indent-comment
-        (wisi-tok-comment-end indent-tok)
-       (cdr (wisi-tok-region indent-tok))) ;; end
-
-     (wisi-elisp-parse--paren-in-anchor-line anchor-tok offset)
-     no-accumulate)
-    ))
-
-(defun wisi-anchored%- (token-number offset)
-  ;; Not wisi-elisp-parse--anchored%- to match existing grammar files
-  "If existing indent is zero, anchor the current token at OFFSET
-from the first token on the line containing TOKEN-NUMBER in `wisi-tokens'.
-Return the delta.
-For use in grammar indent actions."
-  (wisi-anchored% token-number offset t))
-
-(defun wisi-elisp-parse--hanging-1 (delta1 delta2 option no-accumulate)
-  "If OPTION is nil, implement `wisi-hanging'; otherwise `wisi-hanging%'."
-  (let ((tok (aref wisi-tokens wisi-token-index)))
-    ;; tok is a nonterminal; this function makes no sense for terminals
-    ;; syntax-ppss moves point to start of tok
-
-    (cond
-     ((functionp wisi-elisp-parse-indent-hanging-function)
-      (funcall wisi-elisp-parse-indent-hanging-function tok delta1 delta2 
option no-accumulate))
-
-     (t
-      (let ((tok-syntax (syntax-ppss (car (wisi-tok-region tok))))
-           (first-tok-first-on-line
-            ;; first token in tok is first on line
-            (and (numberp (wisi-tok-first tok))
-                 (= (wisi-tok-line tok) (wisi-tok-first tok)))))
-       (list 'hanging
-             (wisi-tok-line tok) ;; first line of token
-             (nth 0 tok-syntax) ;; paren nest level at tok
-             delta1
-             (if (or (not option) first-tok-first-on-line)
-                 delta2
-               delta1)
-             no-accumulate))
-      ))
-    ))
-
-(defun wisi-hanging (delta1 delta2)
-  ;; Not wisi-elisp-parse--hanging to match existing grammar files
-  "Use DETLA1 for first line, DELTA2 for following lines.
-For use in grammar indent actions."
-  (wisi-elisp-parse--hanging-1 delta1 delta2 nil nil))
-
-(defun wisi-hanging% (delta1 delta2)
-  ;; Not wisi-elisp-parse--hanging% to match existing grammar files
-  "If first token is first in line, use DETLA1 for first line, DELTA2 for 
following lines.
-Otherwise use DELTA1 for all lines.
-For use in grammar indent actions."
-  (wisi-elisp-parse--hanging-1 delta1 delta2 t nil))
-
-(defun wisi-hanging%- (delta1 delta2)
-  ;; Not wisi-elisp-parse--hanging%- to match existing grammar files
-  "If existing indent is non-zero, do nothing.
-Else if first token is first in line, use DETLA1 for first line,
-DELTA2 for following lines.  Otherwise use DELTA1 for all lines.
-For use in grammar indent actions."
-  (wisi-elisp-parse--hanging-1 delta1 delta2 t t))
-
-(defun wisi-elisp-parse--indent-offset (token offset)
-  "Return offset from beginning of first token on line containing TOKEN,
-   to beginning of TOKEN, plus OFFSET."
-  (save-excursion
-    (goto-char (aref (wisi-elisp-lexer-line-begin wisi--lexer) (1- 
(wisi-tok-line token))))
-    (back-to-indentation)
-    (+ offset (- (car (wisi-tok-region token)) (point)))
-    ))
-
-(defun wisi-elisp-parse--indent-compute-delta (delta tok)
-  "Return evaluation of DELTA."
-  (cond
-   ((integerp delta)
-    delta)
-
-   ((symbolp delta)
-    (symbol-value delta))
-
-   ((vectorp delta)
-    ;; [token comment]
-    ;; if wisi-indent-comment, we are indenting the comments of the
-    ;; previous token; they should align with the 'token' delta.
-    (wisi-elisp-parse--indent-compute-delta (aref delta 0) tok))
-
-   (t ;; form
-    (cond
-     ((eq 'anchored (car delta))
-      delta)
-
-     (t
-      (save-excursion
-       (goto-char (car (wisi-tok-region tok)))
-       (eval delta)))))
-   ))
-
-(defun wisi-indent-action (deltas)
-  ;; Not wisi-elisp-parse--indent-action to match existing grammar files
-  "Accumulate `wisi--indents' from DELTAS.
-DELTAS is a vector; each element can be:
-- an integer
-- a symbol
-- a lisp form
-- a vector.
-
-The first three are evaluated to give an integer delta. A vector must
-have two elements, giving the code and following comment
-deltas. Otherwise the comment delta is the following delta in
-DELTAS."
-  (when (eq wisi--parse-action 'indent)
-    (dotimes (wisi-token-index (length wisi-tokens))
-      (let* ((tok (aref wisi-tokens wisi-token-index))
-            (token-delta (aref deltas wisi-token-index))
-            (comment-delta
-             (cond
-              ((vectorp token-delta)
-               (aref token-delta 1))
-
-              ((< wisi-token-index (1- (length wisi-tokens)))
-               (aref deltas (1+ wisi-token-index)))
-              )))
-       (when (wisi-tok-region tok)
-         ;; region is null when optional nonterminal is empty
-         (let ((wisi-indent-comment nil))
-           (setq token-delta
-                 (when (and token-delta
-                            (wisi-tok-first tok))
-                   (wisi-elisp-parse--indent-compute-delta token-delta tok)))
-
-           (when token-delta
-             (wisi-elisp-parse--indent-token tok token-delta))
-
-           (setq wisi-indent-comment t)
-           (setq comment-delta
-                 (when (and comment-delta
-                            (wisi-tok-comment-line tok))
-                   (wisi-elisp-parse--indent-compute-delta comment-delta tok)))
-
-           (when comment-delta
-             (wisi-elisp-parse--indent-comment tok comment-delta))
-           )
-         )))))
-
-(defun wisi-indent-action* (n deltas)
-  ;; Not wisi-elisp-parse--indent-action* to match existing grammar files
-  "If any of the first N tokens in `wisi-tokens' is first on a line,
-call `wisi-indent-action' with DELTAS.  Otherwise do nothing."
-  (when (eq wisi--parse-action 'indent)
-    (let ((done nil)
-         (i 0)
-         tok)
-      (while (and (not done)
-                 (< i n))
-       (setq tok (aref wisi-tokens i))
-       (setq i (1+ i))
-       (when (and (wisi-tok-region tok)
-                  (wisi-tok-first tok))
-         (setq done t)
-         (wisi-indent-action deltas))
-       ))))
-
-;;;; non-grammar indent functions
-
-(defconst wisi-elisp-parse--max-anchor-depth 20) ;; IMRPOVEME: can compute in 
actions
-
-(defun wisi-elisp-parse--indent-leading-comments ()
-  "Set `wisi-elisp-parse--indent to 0 for comment lines before first token in 
buffer.
-Leave point at first token (or eob)."
-  (save-excursion
-    (goto-char (point-min))
-    (forward-comment (point-max))
-    (let ((end (point))
-         (i 0)
-         (max-i (length wisi-elisp-parse--indent)))
-      (while (and (< i max-i)
-                 (< (aref (wisi-elisp-lexer-line-begin wisi--lexer) i) end))
-       (aset wisi-elisp-parse--indent i 0)
-       (setq i (1+ i)))
-      )))
-
-(defun wisi-elisp-parse--resolve-anchors ()
-  (let ((anchor-indent (make-vector wisi-elisp-parse--max-anchor-depth 0))
-       pos)
-
-    (dotimes (i (length wisi-elisp-parse--indent))
-      (let ((indent (aref wisi-elisp-parse--indent i)))
-
-       (cond
-        ((or (null indent)
-             (integerp indent)))
-
-        ((listp indent)
-         (let ((anchor-ids (nth 1 indent))
-               (indent2 (nth 2 indent)))
-           (cond
-            ((eq 'anchor (car indent))
-             (cond
-              ((null indent2))
-
-              ((integerp indent2)
-               (dotimes (i (length anchor-ids))
-                 (aset anchor-indent (nth i anchor-ids) indent2))
-               (setq indent indent2))
-
-              ((listp indent2) ;; 'anchored
-               (setq indent (+ (aref anchor-indent (nth 1 indent2)) (nth 2 
indent2)))
-
-               (dotimes (i (length anchor-ids))
-                 (aset anchor-indent (nth i anchor-ids) indent)))
-
-              (t
-               (error "wisi-indent-region: invalid form in wisi-ind-indent %s" 
indent))
-              ));; 'anchor
-
-            ((eq 'anchored (car indent))
-             (setq indent (+ (aref anchor-indent (nth 1 indent)) indent2)))
-
-            (t
-             (error "wisi-indent-region: invalid form in wisi-ind-indent %s" 
indent))
-            )));; listp indent
-
-        (t
-         (error "wisi-indent-region: invalid form in wisi-ind-indent %s" 
indent))
-        );; cond indent
-
-       (when (> i 0)
-         (setq pos (aref (wisi-elisp-lexer-line-begin wisi--lexer) i))
-         (with-silent-modifications
-           (put-text-property (1- pos) pos 'wisi-indent indent)))
-       )) ;; dotimes lines
-
-    ))
-
-(provide 'wisi-elisp-parse)
-;;; wisi-elisp-parse.el ends here
diff --git a/packages/wisi/wisi-parse-common.el 
b/packages/wisi/wisi-parse-common.el
index 895e899..dd9d862 100644
--- a/packages/wisi/wisi-parse-common.el
+++ b/packages/wisi/wisi-parse-common.el
@@ -1,374 +1,404 @@
-;;; wisi-parse-common.el --- declarations used by wisi-parse.el, 
wisi-ada-parse.el, and wisi.el
-;;
-;; Copyright (C) 2014, 2015, 2017 - 2019  Free Software Foundation, Inc.
-;;
-;; Author: Stephen Leake <address@hidden>
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Code:
-
-(cl-defstruct (wisi--lexer-error)
-  pos ;; position (integer) in buffer where error was detected.
-  message  ;; string error message
-  inserted ;; char inserted after pos.
-  )
-
-(cl-defstruct (wisi--parse-error-repair)
-  pos ;; position (integer) in buffer where insert/delete is done.
-  inserted ;; list of token IDs that were inserted before pos
-  deleted  ;; list of token IDs that were deleted after pos
-  )
-
-(cl-defstruct (wisi--parse-error)
-  ;; Includes information derived from compiler error recovery to edit
-  ;; text to fix one error. Used by ’wisi-repair-error’ to edit buffer.
-  pos      ;; position (integer or marker) in buffer where error was detected.
-  message  ;; string error message
-  repair   ;; list of wisi--parse-error-repair.
-  )
-
-(cl-defstruct wisi-parser
-  ;; Separate lists for lexer and parse errors, because lexer errors
-  ;; must be repaired first, before parse errors can be repaired. And
-  ;; they have different structures.
-  lexer-errors
-  ;; list of wisi--lexer-errors from last parse.  Can be more than one if
-  ;; lexer supports error recovery.
-  parse-errors
-  ;; List of wisi--parse-errors from last parse. Can be more than one if
-  ;; parser supports error recovery.
-)
-
-(cl-defgeneric wisi-parse-format-language-options ((parser wisi-parser))
-  "Return a string to be sent to the parser, containing settings
-for the language-specific parser options."
-  ;; not needed for the elisp parser, which can see the options directly.
-  )
-
-(cl-defgeneric wisi-parse-expand-region ((parser wisi-parser) begin end)
-  "Return a cons SEND-BEGIN . SEND-END that is an expansion of
-region BEGIN END that starts and ends at points the parser can
-handle gracefully."
-  (cons begin end))
-
-(defun wisi-search-backward-skip (regexp skip-p)
-  "Search backward for REGEXP. If SKIP-P returns non-nil, search again.
-SKIP-P is a function taking no parameters.
-Return nil if no match found before bob."
-  (let ((maybe-found-p (search-backward-regexp regexp nil t)))
-    (while (and maybe-found-p
-               (funcall skip-p)
-               (setq maybe-found-p (search-backward-regexp regexp nil t))))
-    maybe-found-p))
-
-(defun wisi-search-forward-skip (regexp skip-p)
-  "Search forward for REGEXP. If SKIP-P returns non-nil, search again.
-SKIP-P is a function taking no parameters.
-Return nil if no match found before eob."
-  (let ((maybe-found-p (search-forward-regexp regexp nil t)))
-    (while (and maybe-found-p
-               (funcall skip-p)
-               (setq maybe-found-p (search-forward-regexp regexp nil t))))
-    maybe-found-p))
-
-(defun wisi-show-expanded-region ()
-  "For debugging. Expand currently selected region."
-  (interactive)
-  (let ((region (wisi-parse-expand-region wisi--parser (region-beginning) 
(region-end))))
-    (message "pre (%d . %d) post %s" (region-beginning) (region-end) region)
-    (set-mark (car region))
-    (goto-char (cdr region))
-    ))
-
-(cl-defgeneric wisi-parse-adjust-indent ((parser wisi-parser) indent _repair)
-  "Adjust INDENT for REPAIR (a wisi--parse-error-repair struct). Return new 
indent."
-  indent)
-
-(cl-defgeneric wisi-parse-current ((parser wisi-parser) begin send-end 
parse-end)
-  "Parse current buffer starting at BEGIN, continuing at least thru PARSE-END.
-If using an external parser, send it BEGIN thru SEND-END.")
-
-(cl-defgeneric wisi-parse-kill ((parser wisi-parser))
-  "Kill any external process associated with parser.")
-
-(cl-defgeneric wisi-parse-find-token ((parser wisi-parser) token-symbol)
-  "Find token with TOKEN-SYMBOL on current parser stack, return token struct.
-For use in grammar actions.")
-
-(cl-defgeneric wisi-parse-stack-peek ((parser wisi-parser) n)
-  "Return the Nth token on the parse stack.
-For use in grammar actions.")
-
-(cl-defstruct
-  (wisi-cache
-   (:constructor wisi-cache-create)
-   (:copier nil))
-  nonterm;; nonterminal from parse
-
-  token
-  ;; terminal symbol from wisi-keyword-table or
-  ;; wisi-punctuation-table, or lower-level nonterminal from parse
-
-  last ;; pos of last char in token, relative to first (0 indexed)
-
-  class ;; one of wisi-class-list
-
-  containing
-  ;; Marker at the start of the containing statement for this token.
-  ;; nil for outermost containing.
-
-  prev ;; marker at previous motion token in statement; nil if none
-  next ;; marker at next motion token in statement; nil if none
-  end  ;; marker at token at end of current statement
-  )
-
-(defun wisi-get-cache (pos)
-  "Return `wisi-cache' struct from the `wisi-cache' text property at POS."
-  (get-text-property pos 'wisi-cache))
-
-(defun wisi-backward-cache ()
-  "Move point backward to the beginning of the first token preceding point 
that has a cache.
-Returns cache, or nil if at beginning of buffer."
-  ;; If point is not near cache, p-s-p-c will return pos just after
-  ;; cache, so 1- is the beginning of cache.
-  ;;
-  ;; If point is just after end of cache, p-s-p-c will return pos at
-  ;; start of cache.
-  ;;
-  ;; So we test for the property before subtracting 1.
-  (let ((pos (previous-single-property-change (point) 'wisi-cache))
-       cache)
-    (cond
-     ((null pos)
-      (goto-char (point-min))
-      nil)
-
-     ((setq cache (get-text-property pos 'wisi-cache))
-      (goto-char pos)
-      cache)
-
-     (t
-      (setq pos (1- pos))
-      (setq cache (get-text-property pos 'wisi-cache))
-      (goto-char pos)
-      cache)
-     )))
-
-(defun wisi-forward-cache ()
-  "Move point forward to the beginning of the first token after point that has 
a cache.
-Returns cache, or nil if at end of buffer."
-  (let (cache pos)
-    (when (get-text-property (point) 'wisi-cache)
-      ;; on a cache; get past it
-      (goto-char (1+ (point))))
-
-    (setq cache (get-text-property (point) 'wisi-cache))
-    (if cache
-       nil
-
-      (setq pos (next-single-property-change (point) 'wisi-cache))
-      (if pos
-         (progn
-           (goto-char pos)
-           (setq cache (get-text-property pos 'wisi-cache)))
-       ;; at eob
-       (goto-char (point-max))
-       (setq cache nil))
-      )
-    cache
-    ))
-
-(defun wisi-cache-region (cache &optional start)
-  "Return region designated by START (default point) to cache last."
-  (unless start (setq start (point)))
-  (cons start (+ start (wisi-cache-last cache))))
-
-(defvar wisi-debug 0
-  "wisi debug mode:
-0 : normal - ignore parse errors, for indenting new code
-1 : report parse errors (for running tests)
-2 : show parse states, position point at parse errors
-3 : also show top 10 items of parser stack.")
-
-;; The following parameters are easily changeable for debugging.
-(defvar wisi-action-disable nil
-  "If non-nil, disable all elisp actions during parsing.
-Allows timing parse separate from actions.")
-
-(defvar-local wisi-trace-mckenzie 0
-  "McKenzie trace level; 0 for none")
-
-(defvar-local wisi-trace-action 0
-  "Parse action trace level; 0 for none")
-
-(defvar-local wisi-mckenzie-disable nil
-  "If non-nil, disable McKenzie error recovery. Otherwise, use parser 
default.")
-
-(defcustom wisi-mckenzie-task-count nil
-  "If integer, sets McKenzie error recovery task count.
-Higher value (up to system processor limit) runs error recovery
-faster, but may encounter race conditions.  Using only one task
-makes error recovery repeatable; useful for tests.  If nil, uses
-value from grammar file."
-  :type 'integer
-  :group 'wisi
-  :safe 'integerp)
-(make-variable-buffer-local 'wisi-mckenzie-task-count)
-
-(defcustom wisi-mckenzie-check-limit nil
-  "If integer, sets McKenzie error recovery algorithm token check limit.
-This sets the number of tokens past the error point that must be
-parsed successfully for a solution to be deemed successful.
-Higher value gives better solutions, but may fail if there are
-two errors close together.  If nil, uses value from grammar
-file."
-  :type 'integer
-  :group 'wisi
-  :safe 'integerp)
-(make-variable-buffer-local 'wisi-mckenzie-check-limit)
-
-(defcustom wisi-mckenzie-enqueue-limit nil
-  "If integer, sets McKenzie error recovery algorithm enqueue limit.
-This sets the maximum number of solutions that will be considered.
-Higher value has more recover power, but will be slower to fail.
-If nil, uses value from grammar file."
-  :type 'integer
-  :group 'wisi
-  :safe 'integerp)
-(make-variable-buffer-local 'wisi-mckenzie-enqueue-limit)
-
-(defcustom wisi-parse-max-parallel 15
-  "Maximum number of parallel parsers during regular parsing.
-Parallel parsers are used to resolve redundancy in the grammar.
-If a file needs more than this, it's probably an indication that
-the grammar is excessively redundant."
-  :type 'integer
-  :group 'wisi
-  :safe 'integerp)
-
-(defvar wisi-parse-max-stack-size 500
-  "Maximum parse stack size.
-Larger stack size allows more deeply nested constructs.")
-;; end of easily changeable parameters
-
-(defvar wisi--parse-action nil
-  ;; not buffer-local; only let-bound in wisi-indent-region, 
wisi-validate-cache
-  "Reason current parse is begin run; one of
-{indent, face, navigate}.")
-
-(defvar-local wisi-indent-comment-col-0 nil
-  "If non-nil, comments currently starting in column 0 are left in column 0.
-Otherwise, they are indented with previous comments or code.
-Normally set from a language-specific option.")
-
-(defvar-local wisi-end-caches nil
-  "List of buffer positions of caches in current statement that need 
wisi-cache-end set.")
-
-(defconst wisi-eoi-term 'Wisi_EOI
-  ;; must match FastToken wisi-output_elisp.adb EOI_Name, which must
-  ;; be part of a valid Ada identifer.
-  "End Of Input token.")
-
-(defconst wisi-class-list
-  [motion ;; motion-action
-   statement-end
-   statement-override
-   statement-start
-   misc ;; other stuff
-   ]
-  "array of valid token classes; checked in wisi-statement-action, used in 
wisi-process-parse.")
-
-(defun wisi-error-msg (message &rest args)
-  (let ((line (line-number-at-pos))
-       (col (- (point) (line-beginning-position))))
-    (format
-     "%s:%d:%d: %s"
-       (buffer-name) ;; buffer-file-name is sometimes nil here!?
-       line col
-       (apply 'format message args))))
-
-(defvar wisi-parse-error nil)
-(put 'wisi-parse-error
-     'error-conditions
-     '(error wisi-parse-error))
-(put 'wisi-parse-error
-     'error-message
-     "wisi parse error")
-
-(cl-defstruct wisi-tok
-  token  ;; symbol from a token table ;; IMPROVEME: rename to ’id’?
-  region ;; cons giving buffer region containing token text
-
-  nonterminal ;; t if a nonterminal
-
-  line ;; Line number at start of token. Nil for empty nonterminals
-
-  first
-  ;; For terminals, t if token is the first token on a line.
-  ;;
-  ;; For nonterminals, line number of first contained line (not
-  ;; including trailing comments) that needs indenting; it is a
-  ;; comment, or begins with a contained token.
-  ;;
-  ;; Otherwise nil.
-
-  ;; The following are non-nil if token (terminal or non-terminal) is
-  ;; followed by blank or comment lines
-  comment-line ;; first blank or comment line following token
-  comment-end ;; position at end of blank or comment lines
-  )
-
-(defun wisi-token-text (token)
-  "Return buffer text from token range."
-  (let ((region (wisi-tok-region token)))
-    (and region
-       (buffer-substring-no-properties (car region) (cdr region)))))
-
-(defun wisi-and-regions (left right)
-  "Return region enclosing both LEFT and RIGHT."
-  (if left
-      (if right
-         (cons (min (car left) (car right))
-               (max (cdr left) (cdr right)))
-       left)
-    right))
-
-(defun wisi--set-line-begin (line-count)
-  "Return a vector of line-beginning positions, with length LINE-COUNT."
-  (let ((result (make-vector line-count 0)))
-    (save-excursion
-      (goto-char (point-min))
-
-      (dotimes (i line-count)
-       (aset result i (point))
-       (forward-line 1)))
-    result))
-
-;;;; debugging
-(defun wisi-tok-debug-image (tok)
-  "Return id and region from TOK, as string."
-  (cond
-   ((wisi-tok-region tok)
-    (format "(%s %d . %d)"
-           (wisi-tok-token tok)
-           (car (wisi-tok-region tok))
-           (cdr (wisi-tok-region tok))))
-   (t
-    (format "(%s)" (wisi-tok-token tok)))
-   ))
-
-(provide 'wisi-parse-common)
+;;; wisi-parse-common.el --- declarations used by wisi-parse.el, 
wisi-ada-parse.el, and wisi.el
+;;
+;; Copyright (C) 2014, 2015, 2017 - 2019  Free Software Foundation, Inc.
+;;
+;; Author: Stephen Leake <address@hidden>
+;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(defcustom wisi-partial-parse-threshold 100001
+  "Minimum size that will be parsed by each call to the parser.
+A parse is always requested at a point (or on a region); the
+point is first expanded to a start point before the region and an
+end point after the region, that the parser can gracefully
+handle. If the final region covers the entire buffer, a complete
+parse is done. Indent assumes the start point of the parse region
+is properly indented. Most navigate parses ignore this setting
+and parse the whole buffer."
+  :type 'integer
+  :group 'wisi
+  :safe 'integerp)
+(make-variable-buffer-local 'wisi-partial-parse-threshold)
+
+(cl-defstruct (wisi--lexer-error)
+  pos ;; position (integer) in buffer where error was detected.
+  message  ;; string error message
+  inserted ;; char inserted after pos.
+  )
+
+(cl-defstruct (wisi--parse-error-repair)
+  pos ;; position (integer) in buffer where insert/delete is done.
+  inserted ;; list of token IDs that were inserted before pos
+  deleted  ;; list of token IDs that were deleted after pos
+  deleted-region ;; buffer (cons FIRST LAST) region deleted
+  )
+
+(cl-defstruct (wisi--parse-error)
+  ;; Includes information derived from compiler error recovery to edit
+  ;; text to fix one error. Used by ’wisi-repair-error’ to edit buffer.
+  pos      ;; position (integer or marker) in buffer where error was detected.
+  message  ;; string error message
+  repair   ;; list of wisi--parse-error-repair.
+  )
+
+(cl-defstruct wisi-parser
+  ;; Separate lists for lexer and parse errors, because lexer errors
+  ;; must be repaired first, before parse errors can be repaired. And
+  ;; they have different structures.
+  lexer-errors
+  ;; list of wisi--lexer-errors from last parse.  Can be more than one if
+  ;; lexer supports error recovery.
+  parse-errors
+  ;; List of wisi--parse-errors from last parse. Can be more than one if
+  ;; parser supports error recovery.
+
+  repair-image
+  ;; alist of (TOKEN-ID . STRING); used by repair error
+)
+
+(cl-defgeneric wisi-parse-format-language-options ((parser wisi-parser))
+  "Return a string to be sent to the parser, containing settings
+for the language-specific parser options."
+  ;; not needed for the elisp parser, which can see the options directly.
+  )
+
+(cl-defgeneric wisi-parse-expand-region ((parser wisi-parser) begin end)
+  "Return a cons SEND-BEGIN . SEND-END that is an expansion of
+region BEGIN END that starts and ends at points the parser can
+handle gracefully."
+  (cons begin end))
+
+(defvar-local wisi--parser nil
+  "The current wisi parser; a ‘wisi-parser’ object.")
+
+(defun wisi-read-parse-action ()
+  "Read a parse action symbol from the minibuffer."
+  (intern-soft (completing-read "parse action (indent): " '(face navigate 
indent) nil t nil nil 'indent)))
+
+(defun wisi-search-backward-skip (regexp skip-p)
+  "Search backward for REGEXP. If SKIP-P returns non-nil, search again.
+SKIP-P is a function taking no parameters.
+Return nil if no match found before bob."
+  (let ((maybe-found-p (search-backward-regexp regexp nil t)))
+    (while (and maybe-found-p
+               (funcall skip-p)
+               (setq maybe-found-p (search-backward-regexp regexp nil t))))
+    maybe-found-p))
+
+(defun wisi-search-forward-skip (regexp skip-p)
+  "Search forward for REGEXP. If SKIP-P returns non-nil, search again.
+SKIP-P is a function taking no parameters.
+Return nil if no match found before eob."
+  (let ((maybe-found-p (search-forward-regexp regexp nil t)))
+    (while (and maybe-found-p
+               (funcall skip-p)
+               (setq maybe-found-p (search-forward-regexp regexp nil t))))
+    maybe-found-p))
+
+(defun wisi-show-expanded-region ()
+  "For debugging. Expand currently selected region."
+  (interactive)
+  (let ((region (wisi-parse-expand-region wisi--parser (region-beginning) 
(region-end))))
+    (message "pre (%d . %d) post %s" (region-beginning) (region-end) region)
+    (set-mark (car region))
+    (goto-char (cdr region))
+    ))
+
+(cl-defgeneric wisi-parse-adjust-indent ((parser wisi-parser) indent _repair)
+  "Adjust INDENT for REPAIR (a wisi--parse-error-repair struct). Return new 
indent."
+  indent)
+
+(cl-defgeneric wisi-parse-current ((parser wisi-parser) begin send-end 
parse-end)
+  "Parse current buffer starting at BEGIN, continuing at least thru PARSE-END.
+If using an external parser, send it BEGIN thru SEND-END.")
+
+(cl-defgeneric wisi-refactor ((parser wisi-parser) refactor-action parse-begin 
parse-end edit-begin)
+  "Send parser command to perform REFACTOR-ACTION on region PARSE-BEGIN 
PARSE-END at point EDIT_BEGIN.
+The parse region is not expanded first; it must be the statement
+or declaration containing EDIT_BEGIN.")
+
+(cl-defgeneric wisi-parse-kill ((parser wisi-parser))
+  "Kill any external process associated with parser.")
+
+(cl-defgeneric wisi-parse-find-token ((parser wisi-parser) token-symbol)
+  "Find token with TOKEN-SYMBOL on current parser stack, return token struct.
+For use in grammar actions.")
+
+(cl-defgeneric wisi-parse-stack-peek ((parser wisi-parser) n)
+  "Return the Nth token on the parse stack.
+For use in grammar actions.")
+
+(cl-defstruct
+  (wisi-cache
+   (:constructor wisi-cache-create)
+   (:copier nil))
+  nonterm;; nonterminal from parse
+
+  token
+  ;; terminal symbol from wisi-keyword-table or
+  ;; wisi-punctuation-table, or lower-level nonterminal from parse
+
+  last ;; pos of last char in token, relative to first (0 indexed)
+
+  class ;; one of wisi-class-list
+
+  containing
+  ;; Marker at the start of the containing statement for this token.
+  ;; nil for outermost containing.
+
+  prev ;; marker at previous motion token in statement; nil if none
+  next ;; marker at next motion token in statement; nil if none
+  end  ;; marker at token at end of current statement
+  )
+
+(defun wisi-get-cache (pos)
+  "Return `wisi-cache' struct from the `wisi-cache' text property at POS."
+  (get-text-property pos 'wisi-cache))
+
+(defun wisi-backward-cache ()
+  "Move point backward to the beginning of the first token preceding point 
that has a cache.
+Returns cache, or nil if at beginning of buffer."
+  ;; If point is not near cache, p-s-p-c will return pos just after
+  ;; cache, so 1- is the beginning of cache.
+  ;;
+  ;; If point is just after end of cache, p-s-p-c will return pos at
+  ;; start of cache.
+  ;;
+  ;; So we test for the property before subtracting 1.
+  (let ((pos (previous-single-property-change (point) 'wisi-cache))
+       cache)
+    (cond
+     ((null pos)
+      (goto-char (point-min))
+      nil)
+
+     ((setq cache (get-text-property pos 'wisi-cache))
+      (goto-char pos)
+      cache)
+
+     (t
+      (setq pos (1- pos))
+      (setq cache (get-text-property pos 'wisi-cache))
+      (goto-char pos)
+      cache)
+     )))
+
+(defun wisi-forward-cache ()
+  "Move point forward to the beginning of the first token after point that has 
a cache.
+Returns cache, or nil if at end of buffer."
+  (let (cache pos)
+    (when (get-text-property (point) 'wisi-cache)
+      ;; on a cache; get past it
+      (goto-char (1+ (point))))
+
+    (setq cache (get-text-property (point) 'wisi-cache))
+    (if cache
+       nil
+
+      (setq pos (next-single-property-change (point) 'wisi-cache))
+      (if pos
+         (progn
+           (goto-char pos)
+           (setq cache (get-text-property pos 'wisi-cache)))
+       ;; at eob
+       (goto-char (point-max))
+       (setq cache nil))
+      )
+    cache
+    ))
+
+(defun wisi-cache-region (cache &optional start)
+  "Return region designated by START (default point) to cache last."
+  (unless start (setq start (point)))
+  (cons start (+ start (wisi-cache-last cache))))
+
+(defvar wisi-debug 0
+  "wisi debug mode:
+0 : normal - ignore parse errors, for indenting new code
+1 : report parse errors (for running tests)
+2 : show parse states, position point at parse errors
+3 : also show top 10 items of parser stack.")
+
+;; The following parameters are easily changeable for debugging.
+(defvar wisi-action-disable nil
+  "If non-nil, disable all elisp actions during parsing.
+Allows timing parse separate from actions.")
+
+(defvar-local wisi-trace-mckenzie 0
+  "McKenzie trace level; 0 for none")
+
+(defvar-local wisi-trace-action 0
+  "Parse action trace level; 0 for none")
+
+(defvar-local wisi-mckenzie-disable nil
+  "If non-nil, disable McKenzie error recovery. Otherwise, use parser 
default.")
+
+(defcustom wisi-mckenzie-task-count nil
+  "If integer, sets McKenzie error recovery task count.
+Higher value (up to system processor limit) runs error recovery
+faster, but may encounter race conditions.  Using only one task
+makes error recovery repeatable; useful for tests.  If nil, uses
+value from grammar file."
+  :type 'integer
+  :group 'wisi
+  :safe 'integerp)
+(make-variable-buffer-local 'wisi-mckenzie-task-count)
+
+(defcustom wisi-mckenzie-check-limit nil
+  "If integer, sets McKenzie error recovery algorithm token check limit.
+This sets the number of tokens past the error point that must be
+parsed successfully for a solution to be deemed successful.
+Higher value gives better solutions, but may fail if there are
+two errors close together.  If nil, uses value from grammar
+file."
+  :type 'integer
+  :group 'wisi
+  :safe 'integerp)
+(make-variable-buffer-local 'wisi-mckenzie-check-limit)
+
+(defcustom wisi-mckenzie-enqueue-limit nil
+  "If integer, sets McKenzie error recovery algorithm enqueue limit.
+This sets the maximum number of solutions that will be considered.
+Higher value has more recover power, but will be slower to fail.
+If nil, uses value from grammar file."
+  :type 'integer
+  :group 'wisi
+  :safe 'integerp)
+(make-variable-buffer-local 'wisi-mckenzie-enqueue-limit)
+
+(defcustom wisi-parse-max-parallel 15
+  "Maximum number of parallel parsers during regular parsing.
+Parallel parsers are used to resolve redundancy in the grammar.
+If a file needs more than this, it's probably an indication that
+the grammar is excessively redundant."
+  :type 'integer
+  :group 'wisi
+  :safe 'integerp)
+
+(defvar wisi-parse-max-stack-size 500
+  "Maximum parse stack size.
+Larger stack size allows more deeply nested constructs.")
+;; end of easily changeable parameters
+
+(defvar wisi--parse-action nil
+  ;; not buffer-local; only let-bound in wisi-indent-region, 
wisi-validate-cache
+  "Reason current parse is begin run; one of
+{indent, face, navigate}.")
+
+(defvar-local wisi-indent-comment-col-0 nil
+  "If non-nil, comments currently starting in column 0 are left in column 0.
+Otherwise, they are indented with previous comments or code.
+Normally set from a language-specific option.")
+
+(defvar-local wisi-end-caches nil
+  "List of buffer positions of caches in current statement that need 
wisi-cache-end set.")
+
+(defconst wisi-eoi-term 'Wisi_EOI
+  ;; must match FastToken wisi-output_elisp.adb EOI_Name, which must
+  ;; be part of a valid Ada identifer.
+  "End Of Input token.")
+
+(defconst wisi-class-list
+  [motion ;; motion-action
+   statement-end
+   statement-override
+   statement-start
+   misc ;; other stuff
+   ]
+  "array of valid token classes; checked in wisi-statement-action, used in 
wisi-process-parse.")
+
+(defun wisi-error-msg (message &rest args)
+  (let ((line (line-number-at-pos))
+       (col (- (point) (line-beginning-position))))
+    (format
+     "%s:%d:%d: %s"
+       (buffer-name) ;; buffer-file-name is sometimes nil here!?
+       line col
+       (apply 'format message args))))
+
+(defvar wisi-parse-error nil)
+(put 'wisi-parse-error
+     'error-conditions
+     '(error wisi-parse-error))
+(put 'wisi-parse-error
+     'error-message
+     "wisi parse error")
+
+(cl-defstruct wisi-tok
+  token  ;; symbol from a token table ;; IMPROVEME: rename to ’id’?
+  region ;; cons giving buffer region containing token text
+
+  nonterminal ;; t if a nonterminal
+
+  line ;; Line number at start of token. Nil for empty nonterminals
+
+  first
+  ;; For terminals, t if token is the first token on a line.
+  ;;
+  ;; For nonterminals, line number of first contained line (not
+  ;; including trailing comments) that needs indenting; it is a
+  ;; comment, or begins with a contained token.
+  ;;
+  ;; Otherwise nil.
+
+  ;; The following are non-nil if token (terminal or non-terminal) is
+  ;; followed by blank or comment lines
+  comment-line ;; first blank or comment line following token
+  comment-end ;; position at end of blank or comment lines
+  )
+
+(defun wisi-token-text (token)
+  "Return buffer text from token range."
+  (let ((region (wisi-tok-region token)))
+    (and region
+       (buffer-substring-no-properties (car region) (cdr region)))))
+
+(defun wisi-and-regions (left right)
+  "Return region enclosing both LEFT and RIGHT."
+  (if left
+      (if right
+         (cons (min (car left) (car right))
+               (max (cdr left) (cdr right)))
+       left)
+    right))
+
+(defun wisi--set-line-begin (line-count)
+  "Return a vector of line-beginning positions, with length LINE-COUNT."
+  (let ((result (make-vector line-count 0)))
+    (save-excursion
+      (goto-char (point-min))
+
+      (dotimes (i line-count)
+       (aset result i (point))
+       (forward-line 1)))
+    result))
+
+;;;; debugging
+(defun wisi-tok-debug-image (tok)
+  "Return id and region from TOK, as string."
+  (cond
+   ((wisi-tok-region tok)
+    (format "(%s %d . %d)"
+           (wisi-tok-token tok)
+           (car (wisi-tok-region tok))
+           (cdr (wisi-tok-region tok))))
+   (t
+    (format "(%s)" (wisi-tok-token tok)))
+   ))
+
+(provide 'wisi-parse-common)
diff --git a/packages/wisi/wisi-process-parse.el 
b/packages/wisi/wisi-process-parse.el
index d941781..5fb025d 100644
--- a/packages/wisi/wisi-process-parse.el
+++ b/packages/wisi/wisi-process-parse.el
@@ -1,782 +1,835 @@
-;;; wisi-process-parse.el --- interface to external parse program
-;;
-;; Copyright (C) 2014, 2017 - 2019 Free Software Foundation, Inc.
-;;
-;; Author: Stephen Leake <address@hidden>
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-(require 'cl-lib)
-(require 'wisi-parse-common)
-
-(defgroup wisi nil
-  "Options for Wisi package."
-  :group 'programming)
-
-(defcustom wisi-process-time-out 5.0
-  "Time out waiting for parser response. An error occurs if there
-  is no response from the parser after waiting this amount (in
-  seconds)."
-  :type 'float
-  :safe 'floatp)
-(make-variable-buffer-local 'wisi-process-time-out)
-
-(defconst wisi-process-parse-protocol-version "3"
-  "Defines data exchanged between this package and the background process.
-Must match emacs_wisi_common_parse.ads Protocol_Version.")
-
-(defconst wisi-process-parse-prompt "^;;> "
-  "Regexp matching executable prompt; indicates previous command is complete.")
-
-(defconst wisi-process-parse-quit-cmd "004quit\n"
-  "Command to external process telling it to quit.")
-
-;;;;; sessions
-
-;; The executable builds internal parser structures on startup,
-;; then runs a loop, waiting for parse requests.
-;;
-;; We only need one process per language; there is no persistent state
-;; in the process between parses, and processes are too heavy-weight
-;; to have one per buffer. We use a global alist of parser objects to
-;; find the right one for the current buffer.
-
-(cl-defstruct (wisi-process--parser (:include wisi-parser))
-  (label nil)             ;; string uniquely identifying parser
-  language-protocol-version ;; string identifying language-specific params
-  (exec-file nil)        ;; absolute file name of executable
-  (exec-opts nil)         ;; list of process start options for executable
-  (token-table nil)       ;; vector of token symbols, indexed by integer
-  (face-table nil)       ;; vector of face symbols, indexed by integer
-  (busy nil)              ;; t while parser is active
-  (process nil)          ;; running *_wisi_parse executable
-  (buffer nil)                   ;; receives output of executable
-  line-begin              ;; vector of beginning-of-line positions in buffer
-  (total-wait-time 0.0)   ;; total time during last parse spent waiting for 
subprocess output.
-  (response-count 0)      ;; responses received from subprocess during last 
parse; for profiling.
-  end-pos                 ;; last character position parsed
-  language-action-table   ;; array of function pointers, each taking an sexp 
sent by the process
-  )
-
-(defvar wisi-process--alist nil
-  "Alist mapping string label to ‘wisi-process--session’ struct")
-
-;;;###autoload
-(defun wisi-process-parse-get (parser)
-  "Return a ‘wisi-process--parser’ object matching PARSER label.
-If label found in ‘wisi-process--alist’, return that.
-Otherwise add PARSER to ‘wisi-process--alist’, return it."
-  (or (cdr (assoc (wisi-process--parser-label parser) wisi-process--alist))
-      (let ((exec-file (locate-file (wisi-process--parser-exec-file parser) 
exec-path '("" ".exe"))))
-
-       (unless exec-file
-         (error "%s not found on `exec-path'" (wisi-process--parser-exec-file 
parser)))
-
-       (push (cons (wisi-process--parser-label parser) parser) 
wisi-process--alist)
-
-       parser
-     )))
-
-(defun wisi-process-parse-set-exec (label exec-file)
-  "Change the EXEC-FILE for parsers with LABEL."
-  (let ((parser (cdr (assoc label wisi-process--alist))))
-    (when parser
-      (wisi-parse-kill parser)
-      (setf (wisi-process--parser-exec-file parser) exec-file))))
-
-(defun wisi-process-parse--check-version (parser)
-  "Verify protocol version reported by process."
-  ;; The process has just started; the first non-comment line in the
-  ;; process buffer contains the process and language protocol versions.
-  (with-current-buffer (wisi-process--parser-buffer parser)
-    (goto-char (point-min))
-    (search-forward-regexp "protocol: process version \\([0-9]+\\) language 
version \\([0-9]+\\)")
-    (unless (and (match-string 1)
-                (string-equal (match-string 1) 
wisi-process-parse-protocol-version)
-                (match-string 2)
-                (string-equal (match-string 2) 
(wisi-process--parser-language-protocol-version parser)))
-      (wisi-parse-kill parser)
-      (error "%s parser process protocol version mismatch: elisp %s %s, 
process %s %s"
-            (wisi-process--parser-label parser)
-            wisi-process-parse-protocol-version 
(wisi-process--parser-language-protocol-version parser)
-            (match-string 1) (match-string 2)))
-    ))
-
-(defun wisi-process-parse--require-process (parser)
-  "Start the process for PARSER if not already started."
-  (unless (process-live-p (wisi-process--parser-process parser))
-    (let ((process-connection-type nil) ;; use a pipe, not a pty; avoid 
line-by-line reads
-         (process-name (format " *%s_wisi_parse*" (wisi-process--parser-label 
parser))))
-
-      (unless (buffer-live-p (wisi-process--parser-buffer parser))
-       ;; User may have killed buffer to kill parser.
-       (setf (wisi-process--parser-buffer parser)
-             (get-buffer-create process-name)))
-
-      (with-current-buffer (wisi-process--parser-buffer parser)
-       (erase-buffer)); delete any previous messages, prompt
-
-      (setf (wisi-process--parser-process parser)
-           (make-process
-            :name process-name
-            :buffer (wisi-process--parser-buffer parser)
-            :command (append (list (wisi-process--parser-exec-file parser))
-                             (wisi-process--parser-exec-opts parser))))
-
-      (set-process-query-on-exit-flag (wisi-process--parser-process parser) 
nil)
-      (setf (wisi-process--parser-busy parser) nil)
-
-      (wisi-process-parse--wait parser)
-      (wisi-process-parse--check-version parser)
-      )))
-
-(defun wisi-process-parse--wait (parser)
-  "Wait for the current command to complete."
-  (let ((process (wisi-process--parser-process parser))
-       (search-start (point-min))
-       (wait-count 0)
-       (found nil))
-
-    (with-current-buffer (wisi-process--parser-buffer parser)
-      (while (and (process-live-p process)
-                 (progn
-                   ;; process output is inserted before point, so move back 
over it to search it
-                   (goto-char search-start)
-                   (not (setq found (re-search-forward 
wisi-process-parse-prompt (point-max) t)))))
-       (setq search-start (point));; don't search same text again
-       (setq wait-count (1+ wait-count))
-       (accept-process-output process 0.1))
-
-      (unless found
-       (wisi-process-parse-show-buffer parser)
-       (error "%s process died" (wisi-process--parser-exec-file parser)))
-      )))
-
-(defun wisi-process-parse-show-buffer (parser)
-  "Show PARSER buffer."
-  (if (buffer-live-p (wisi-process--parser-buffer parser))
-      (pop-to-buffer (wisi-process--parser-buffer parser))
-    (error "wisi-process-parse process not active")))
-
-(defun wisi-process-parse--send-parse (parser begin send-end parse-end)
-  "Send a parse command to PARSER external process, followed by
-the content of the current buffer from BEGIN thru SEND-END.  Does
-not wait for command to complete. PARSE-END is end of desired
-parse region."
-  ;; Must match "parse" command arguments read by
-  ;; emacs_wisi_common_parse,adb Get_Parse_Params.
-  (let* ((cmd (format "parse %d \"%s\" %d %d %d %d %d %d %d %d %d %d %d %d %d 
%d %d %d %d %d %s"
-                     (cl-ecase wisi--parse-action
-                       (navigate 0)
-                       (face 1)
-                       (indent 2))
-                     (if (buffer-file-name) (file-name-nondirectory 
(buffer-file-name)) "")
-                     (position-bytes begin)
-                     (position-bytes send-end)
-                     (position-bytes parse-end)
-                     begin ;; char_pos
-                     (line-number-at-pos begin)
-                     (line-number-at-pos send-end)
-                     (save-excursion (goto-char begin) (back-to-indentation) 
(current-column));; indent-begin
-                     (if (or (and (= begin (point-min)) (= parse-end 
(point-max)))
-                             (< (point-max) wisi-partial-parse-threshold))
-                         0 1) ;; partial parse active
-                     (if (> wisi-debug 0) 1 0) ;; debug-mode
-                     (1- wisi-debug) ;; trace_parse
-                     wisi-trace-mckenzie
-                     wisi-trace-action
-                     (if wisi-mckenzie-disable 1 0)
-                     (or wisi-mckenzie-task-count -1)
-                     (or wisi-mckenzie-check-limit -1)
-                     (or wisi-mckenzie-enqueue-limit -1)
-                     (or wisi-parse-max-parallel -1)
-                     (- (position-bytes send-end) (position-bytes begin)) ;; 
send-end is after last byte
-                     (wisi-parse-format-language-options parser)
-                     ))
-        (msg (format "%03d%s" (length cmd) cmd))
-        (process (wisi-process--parser-process parser)))
-    (with-current-buffer (wisi-process--parser-buffer parser)
-      (erase-buffer))
-
-    (process-send-string process msg)
-    (process-send-string process (buffer-substring-no-properties begin 
send-end))
-
-    ;; We don’t wait for the send to complete; the external process
-    ;; may start parsing and send an error message.
-    ))
-
-(defun wisi-process-parse--send-noop (parser)
-  "Send a noop command to PARSER external process, followed by
-the content of the current buffer.  Does not wait for command to
-complete."
-  (let* ((cmd (format "noop %d" (1- (position-bytes (point-max)))))
-        (msg (format "%03d%s" (length cmd) cmd))
-        (process (wisi-process--parser-process parser)))
-    (with-current-buffer (wisi-process--parser-buffer parser)
-      (erase-buffer))
-
-    (process-send-string process msg)
-    (process-send-string process (buffer-substring-no-properties (point-min) 
(point-max)))
-    ))
-
-(defun wisi-process-parse--marker-or-nil (item)
-  (if (= -1 item) nil (copy-marker item t)))
-
-(defun wisi-process-parse--Navigate_Cache (parser sexp)
-  ;; sexp is [Navigate_Cache pos statement_id id length class containing_pos 
prev_pos next_pos end_pos]
-  ;; see ‘wisi-process-parse--execute’
-  (let ((pos (aref sexp 1)))
-    (with-silent-modifications
-      (put-text-property
-       pos
-       (1+ pos)
-       'wisi-cache
-       (wisi-cache-create
-       :nonterm    (aref (wisi-process--parser-token-table parser) (aref sexp 
2))
-       :token      (aref (wisi-process--parser-token-table parser) (aref sexp 
3))
-       :last       (aref sexp 4)
-       :class      (aref wisi-class-list (aref sexp 5))
-       :containing (wisi-process-parse--marker-or-nil (aref sexp 6))
-       :prev       (wisi-process-parse--marker-or-nil (aref sexp 7))
-       :next       (wisi-process-parse--marker-or-nil (aref sexp 8))
-       :end        (wisi-process-parse--marker-or-nil (aref sexp 9))
-       )))
-    ))
-
-(defun wisi-process-parse--Name_Property (parser sexp)
-  ;; sexp is [Name_Property first-pos last-pos]
-  ;; see ‘wisi-process-parse--execute’
-  ;; implements wisi-name-action
-  (with-silent-modifications
-    (put-text-property (aref sexp 1) (1+ (aref sexp 2)) 'wisi-name t)))
-
-(defun wisi-process-parse--Face_Property (parser sexp)
-  ;; sexp is [Face_Property first-pos last-pos face-index]
-  ;; see ‘wisi-process-parse--execute’
-  ;; implements wisi--face-action-1
-  (with-silent-modifications
-    (add-text-properties
-     (aref sexp 1)
-     (1+ (aref sexp 2))
-     (list 'font-lock-face (aref (wisi-process--parser-face-table parser) 
(aref sexp 3))
-          'fontified t)
-     )))
-
-(defun wisi-process-parse--Indent (parser sexp)
-  ;; sexp is [Indent line-number indent]
-  ;; see ‘wisi-process-parse--execute’
-  (let ((pos (aref (wisi-process--parser-line-begin parser) (1- (aref sexp 
1)))))
-    (with-silent-modifications
-      (when (< (point-min) pos)
-       (put-text-property
-        (1- pos)
-        pos
-        'wisi-indent
-        (aref sexp 2)))
-      )))
-
-(defun wisi-process-parse--Lexer_Error (parser sexp)
-  ;; sexp is [Lexer_Error char-position <message> <repair-char>]
-  ;; see ‘wisi-process-parse--execute’
-  (let ((pos (aref sexp 1))
-       err)
-
-    (goto-char pos);; for current-column
-
-    (setq err
-         (make-wisi--lexer-error
-          :pos (copy-marker pos)
-          :message
-          (format "%s:%d:%d: %s"
-                  (if (buffer-file-name) (file-name-nondirectory 
(buffer-file-name)) "")
-                  ;; file-name can be nil during vc-resolve-conflict
-                  (line-number-at-pos pos)
-                  (current-column)
-                  (aref sexp 2))
-          :inserted (when (= 4 (length sexp)) (aref sexp 3))))
-
-    (push err (wisi-parser-lexer-errors parser))
-    ))
-
-(defun wisi-process-parse--Parser_Error (parser sexp)
-  ;; sexp is [Parser_Error char-position <string>]
-  ;; see ‘wisi-process-parse--execute’
-  (let ((pos (aref sexp 1))
-       err)
-
-    (goto-char pos);; for current-column
-
-    (setq err
-         (make-wisi--parse-error
-          :pos (copy-marker pos)
-          :message
-          (format "%s:%d:%d: %s"
-                  (if (buffer-file-name) (file-name-nondirectory 
(buffer-file-name)) "")
-                  ;; file-name can be nil during vc-resolve-conflict
-                  (line-number-at-pos pos)
-                  (1+ (current-column))
-                  (aref sexp 2))))
-
-    (push err (wisi-parser-parse-errors parser))
-    ))
-
-(defun wisi-process-parse--Check_Error (parser sexp)
-  ;; sexp is [Check_Error code name-1-pos name-2-pos <string>]
-  ;; see ‘wisi-process-parse--execute’
-  (let* ((name-1-pos (aref sexp 2))
-       (name-1-col (1+ (progn (goto-char name-1-pos)(current-column)))) ;; 
gnat columns are 1 + emacs columns
-       (name-2-pos (aref sexp 3))
-       (name-2-col (1+ (progn (goto-char name-2-pos)(current-column))))
-       (file-name (if (buffer-file-name) (file-name-nondirectory 
(buffer-file-name)) ""))
-       ;; file-name can be nil during vc-resolve-conflict
-       (err (make-wisi--parse-error
-             :pos (copy-marker name-1-pos)
-             :message
-             (format "%s:%d:%d: %s %s:%d:%d"
-                     file-name (line-number-at-pos name-1-pos) name-1-col
-                     (aref sexp 4)
-                     file-name (line-number-at-pos name-2-pos) name-2-col)))
-       )
-
-    (push err (wisi-parser-parse-errors parser))
-    ))
-
-(defun wisi-process-parse--Recover (parser sexp)
-  ;; sexp is [Recover [pos [inserted] [deleted]]...]
-  ;; see ‘wisi-process-parse--execute’
-  ;; convert to list of wisi--parse-error-repair, add to last error
-  (let* ((token-table (wisi-process--parser-token-table parser))
-        (last-error (car (wisi-parser-parse-errors parser))))
-    (unless (= 1 (length sexp))
-      (cl-do ((i 1 (1+ i))) ((= i (length sexp)))
-       (push
-        (make-wisi--parse-error-repair
-         :pos (aref (aref sexp i) 0)
-         :inserted (mapcar (lambda (id) (aref token-table id)) (aref (aref 
sexp i) 1))
-         :deleted  (mapcar (lambda (id) (aref token-table id)) (aref (aref 
sexp i) 2)))
-        (wisi--parse-error-repair last-error)))
-      )))
-
-(defun wisi-process-parse--End (parser sexp)
-  ;; sexp is [End pos]
-  ;; see ‘wisi-process-parse--execute’
-  (setf (wisi-process--parser-end-pos parser) (aref sexp 1)))
-
-(defun wisi-process-parse--Language (parser sexp)
-  ;; sexp is [Language language-action ...]
-  (funcall (aref (wisi-process--parser-language-action-table parser) (aref 
sexp 1)) sexp))
-
-(defun wisi-process-parse--execute (parser sexp)
-  "Execute encoded SEXP sent from external process."
-  ;; sexp is [action arg ...]; an encoded instruction that we need to execute
-  ;;
-  ;; Actions:
-  ;;
-  ;; [Navigate_Cache pos statement_id id length class containing_pos prev_pos 
next_pos end_pos]
-  ;;    Set a wisi-cache text-property.
-  ;;    *pos          : integer buffer position; -1 if nil (not set)
-  ;;    *id           : integer index into parser-token-table
-  ;;    length        : integer character count
-  ;;    class         : integer index into wisi-class-list
-  ;;
-  ;; [Name_Property first-pos last-pos]
-  ;;
-  ;; [Face_Property first-pos last-pos face-index]
-  ;;    Set a font-lock-face text-property
-  ;;    face-index: integer index into parser-elisp-face-table
-  ;;
-  ;; [Indent line-number indent]
-  ;;    Set an indent text property
-  ;;
-  ;; [Lexer_Error char-position <message> <repair-char>]
-  ;;    The lexer detected an error at char-position.
-  ;;
-  ;;    If <repair-char> is not ASCII NUL, it was inserted immediately
-  ;;    after char-position to fix the error.
-  ;;
-  ;; [Parser_Error char-position <message>]
-  ;;    The parser detected a syntax error; save information for later
-  ;;    reporting.
-  ;;
-  ;;    If error recovery is successful, there can be more than one
-  ;;    error reported during a parse.
-  ;;
-  ;; [Check_Error code name-1-pos name-2-pos <string>]
-  ;;    The parser detected a semantic check error; save information
-  ;;    for later reporting.
-  ;;
-  ;;    If error recovery is successful, there can be more than one
-  ;;    error reported during a parse.
-  ;;
-  ;; [Recover [pos [inserted] [deleted]]...]
-  ;;    The parser finished a successful error recovery.
-  ;;
-  ;;    pos: Buffer position
-  ;;
-  ;;    inserted: Virtual tokens (terminal or non-terminal) inserted before 
pos.
-  ;;
-  ;;    deleted: Tokens deleted after pos.
-  ;;
-  ;;    Args are token ids; index into parser-token-table. Save the information
-  ;;    for later use by ’wisi-repair-error’.
-  ;;
-  ;; [Language ...]
-  ;;    Dispatch to a language-specific action, via
-  ;;    `wisi-process--parser-language-action-table'.
-  ;;
-  ;;
-  ;; Numeric action codes are given in the case expression below
-
-  (cl-ecase (aref sexp 0)
-    (1  (wisi-process-parse--Navigate_Cache parser sexp))
-    (2  (wisi-process-parse--Face_Property parser sexp))
-    (3  (wisi-process-parse--Indent parser sexp))
-    (4  (wisi-process-parse--Lexer_Error parser sexp))
-    (5  (wisi-process-parse--Parser_Error parser sexp))
-    (6  (wisi-process-parse--Check_Error parser sexp))
-    (7  (wisi-process-parse--Recover parser sexp))
-    (8  (wisi-process-parse--End parser sexp))
-    (9  (wisi-process-parse--Name_Property parser sexp))
-    (10 (wisi-process-parse--Language parser sexp))
-    ))
-
-;;;;; main
-
-(cl-defmethod wisi-parse-kill ((parser wisi-process--parser))
-  (when (process-live-p (wisi-process--parser-process parser))
-    ;; We used to send a quit command first, to be nice. But there's
-    ;; no timeout on that, so it would hang when the process
-    ;; executable is not reading command input.
-    (when (process-live-p (wisi-process--parser-process parser))
-      (kill-process (wisi-process--parser-process parser)))
-    )
-  (setf (wisi-process--parser-busy parser) nil))
-
-(defvar wisi--lexer nil) ;; wisi-elisp-lexer.el
-(declare-function wisi-elisp-lexer-reset "wisi-elisp-lexer")
-
-(cl-defmethod wisi-parse-current ((parser wisi-process--parser) begin send-end 
parse-end)
-  "Run the external parser on the current buffer, from BEGIN to at least 
PARSE-END.
-Send BEGIN thru SEND-END to external parser."
-  (wisi-process-parse--require-process parser)
-
-  ;; font-lock can trigger a face parse while navigate or indent parse
-  ;; is active, due to ‘accept-process-output’ below. font-lock must
-  ;; not hang (it is called from an idle timer), so don’t
-  ;; wait. Signaling an error tells font-lock to try again later.
-  ;;
-  ;; If the parser is left busy due to some error, that is a bug. In
-  ;; order to detect such bugs, and avoid weird errors from
-  ;; wisi-indent-region, we signal an error here.
-  (if (wisi-process--parser-busy parser)
-      (progn
-       (setf (wisi-parser-parse-errors parser)
-             (list
-              (make-wisi--parse-error
-               :pos 0
-               :message (format "%s:%d:%d: parser busy (try 
’wisi-kill-parser’)"
-                                (if (buffer-file-name) (file-name-nondirectory 
(buffer-file-name)) "") 1 1))
-              ))
-       (error "%s parse abandoned; parser busy - use partial parse?" 
wisi--parse-action)
-       )
-
-    ;; It is not possible for a background elisp function (ie
-    ;; font-lock) to interrupt this code between checking and setting
-    ;; parser-busy; background elisp can only run when we call
-    ;; accept-process-output below.
-    (setf (wisi-process--parser-busy parser) t)
-
-    (condition-case-unless-debug err
-       (let* ((source-buffer (current-buffer))
-              (response-buffer (wisi-process--parser-buffer parser))
-              (process (wisi-process--parser-process parser))
-              (w32-pipe-read-delay 0) ;; fastest subprocess read
-              response
-              response-end
-              (response-count 0)
-              (sexp-start (point-min))
-              (need-more nil) ;; point-max if need more, to check for new input
-              (done nil)
-              start-wait-time)
-
-         (setf (wisi-process--parser-total-wait-time parser) 0.0)
-
-         (setf (wisi-parser-lexer-errors parser) nil)
-         (setf (wisi-parser-parse-errors parser) nil)
-
-         (let ((total-line-count (1+ (count-lines (point-max) (point-min)))))
-           (setf (wisi-process--parser-line-begin parser) 
(wisi--set-line-begin total-line-count))
-           (wisi-process-parse--send-parse parser begin send-end parse-end)
-
-           ;; We reset the elisp lexer, because post-parse actions may use it.
-           (when wisi--lexer
-             (wisi-elisp-lexer-reset total-line-count wisi--lexer))
-           )
-
-         (set-buffer response-buffer)
-
-         ;; process responses until prompt received
-         (while (not done)
-
-           ;; process all complete responses currently in buffer
-           (while (and (not need-more)
-                       (not done))
-
-             (goto-char sexp-start)
-
-             (cond
-              ((eobp)
-               (setq need-more (point-max)))
-
-              ((looking-at wisi-process-parse-prompt)
-               (setq done t))
-
-              ((or (looking-at "\\[") ;; encoded action
-                   (looking-at "(")) ;; error or other elisp expression to eval
-               (condition-case nil
-                   (setq response-end (scan-sexps (point) 1))
-                 (error
-                  ;; incomplete response
-                  (setq need-more (point-max))
-                  nil))
-
-               (unless need-more
-                 (setq response-count (1+ response-count))
-                 (setq response (car (read-from-string 
(buffer-substring-no-properties (point) response-end))))
-                 (goto-char response-end)
-                 (forward-line 1)
-                 (setq sexp-start (point))
-
-                 (set-buffer source-buffer) ;; for put-text-property in actions
-                 (cond
-                  ((listp response)
-                   ;; error of some sort
-                   (cond
-                    ((equal '(parse_error) response)
-                     ;; Parser detected a syntax error, and recovery failed, 
so signal it.
-
-                     (when (> wisi-debug 0)
-                       ;; Save a copy of parser output; may be overwritten by 
subsequent parse face attempts.
-                       (set-buffer response-buffer)
-                       (let ((content (buffer-substring-no-properties 
(point-min) (point-max)))
-                             (buf-name (concat (buffer-name) "-save-error")))
-                         (set-buffer (get-buffer-create buf-name))
-                         (insert content)))
-
-                     (if (wisi-parser-parse-errors parser)
-                         (signal 'wisi-parse-error
-                                 (wisi--parse-error-message (car 
(wisi-parser-parse-errors parser))))
-
-                       ;; can have no errors when testing a new parser
-                       (push
-                        (make-wisi--parse-error :pos 0 :message "parser failed 
with no message")
-                        (wisi-parser-parse-errors parser))
-                       (signal 'wisi-parse-error "parser failed with no 
message")))
-
-                    ((equal 'parse_error (car response))
-                     ;; Parser detected some other error non-fatal error, so 
signal it.
-                     (push
-                        (make-wisi--parse-error :pos 0 :message (cadr 
response))
-                        (wisi-parser-parse-errors parser))
-                     (signal 'wisi-parse-error (cdr response)))
-
-                    ((and (eq 'error (car response))
-                          (string-prefix-p "bad command:" (cadr response)))
-                     ;; Parser dropped bytes, is treating buffer
-                     ;; content bytes as commands. Kill the process
-                     ;; to kill the pipes; there is no other way to
-                     ;; flush them.
-                     (kill-process (wisi-process--parser-process parser))
-                     (signal 'wisi-parse-error "parser lost sync; killed"))
-
-                    (t
-                     ;; Some other error
-                     (condition-case-unless-debug err
-                         (eval response)
-                       (error
-                        (push (make-wisi--parse-error :pos (point) :message 
(cadr err)) (wisi-parser-parse-errors parser))
-                        (signal (car err) (cdr err)))))
-                    ))
-
-                  ((arrayp response)
-                   ;; encoded action
-                   (condition-case-unless-debug err
-                       (wisi-process-parse--execute parser response)
-                     (wisi-parse-error
-                      (push (make-wisi--parse-error :pos (point) :message 
(cadr err)) (wisi-parser-parse-errors parser))
-                      (signal (car err) (cdr err)))
-
-                     (error ;; ie from [C:\Windows\system32\KERNEL32.DLL], or 
bug in action code above.
-                      (set-buffer response-buffer)
-                      (let ((content (buffer-substring-no-properties 
(point-min) (point-max)))
-                            (buf-name (concat (buffer-name) "-save-error")))
-                        (set-buffer (get-buffer-create buf-name))
-                        (insert content)
-                        (insert (format "%s" err))
-                        (error "parser failed; error messages in %s" 
buf-name)))
-                     ))
-                  )
-
-                 (set-buffer response-buffer)
-                 ))
-
-              (t
-               ;; debug output
-               (forward-line 1)
-               (setq sexp-start (point)))
-              )
-             )
-
-           (unless done
-             ;; end of response buffer
-             (unless (process-live-p process)
-               (set-buffer response-buffer)
-               (let ((content (buffer-substring-no-properties (point-min) 
(point-max)))
-                     (buf-name (concat (buffer-name) "-save-error")))
-                 (set-buffer (get-buffer-create buf-name))
-                 (insert content)
-                 (error "parser failed; error messages in %s" buf-name)))
-
-             (setq start-wait-time (float-time))
-
-             ;; If we specify no time-out here, we get messages about
-             ;; "blocking call with quit inhibited", when this is
-             ;; called by font-lock from the display engine.
-             ;;
-             ;; Specifying just-this-one t prevents C-q from
-             ;; interrupting this?
-             (accept-process-output
-              process
-              wisi-process-time-out
-              nil ;; milliseconds
-              nil)  ;; just-this-one
-
-             (setf (wisi-process--parser-total-wait-time parser)
-                   (+ (wisi-process--parser-total-wait-time parser)
-                      (- (float-time) start-wait-time)))
-
-             (when (and (= (point-max) need-more)
-                        (> (wisi-process--parser-total-wait-time parser) 
wisi-process-time-out))
-               (error "wisi-process-parse not getting more text (or bad syntax 
in process output)"))
-
-             (setq need-more nil))
-           );; while not done
-
-         ;; got command prompt
-         (unless (process-live-p process)
-           (wisi-process-parse-show-buffer parser)
-           (error "wisi-process-parse process died"))
-
-         (setf (wisi-process--parser-response-count parser) response-count)
-
-         (setf (wisi-process--parser-busy parser) nil)
-         (set-buffer source-buffer)
-         ;; If we get here, the parse succeeded (possibly with error
-         ;; recovery); move point to end of parsed region.
-         (goto-char (wisi-process--parser-end-pos parser))
-         (cons begin (point))
-         )
-
-      (wisi-parse-error
-       (setf (wisi-process--parser-busy parser) nil)
-       (signal (car err) (cdr err)))
-
-      (error
-       (setf (wisi-process--parser-busy parser) nil)
-       (signal (car err) (cdr err))
-       ))))
-
-(defvar wisi--parser nil) ;; wisi.el
-
-(defun wisi-process-send-tokens-noop ()
-  "Run lexer, send tokens to subprocess; otherwise no operation.
-For use with ’wisi-time’."
-  (wisi-process-parse--require-process wisi--parser)
-  (if (wisi-process--parser-busy wisi--parser)
-      (error "%s parser busy" wisi--parse-action)
-
-    ;; not busy
-    (let* ((source-buffer (current-buffer))
-          (action-buffer (wisi-process--parser-buffer wisi--parser))
-          (process (wisi-process--parser-process wisi--parser))
-          (sexp-start (point-min))
-          (need-more nil)
-          (done nil))
-
-      (setf (wisi-process--parser-busy wisi--parser) t)
-      (wisi-process-parse--send-noop wisi--parser)
-
-      (set-buffer action-buffer)
-      (while (and (process-live-p process)
-                 (not done))
-       (goto-char sexp-start)
-       (cond
-        ((eobp)
-         (setq need-more t))
-
-        ((looking-at wisi-process-parse-prompt)
-         (setq done t))
-
-        (t
-         (forward-line 1)
-         (setq sexp-start (point)))
-        )
-
-       (unless done
-         ;; end of response buffer
-         (unless (process-live-p process)
-           (wisi-process-parse-show-buffer wisi--parser)
-           (error "wisi-process-parse process died"))
-
-         (accept-process-output process 1.0 nil nil)
-         (setq need-more nil))
-       )
-      (set-buffer source-buffer)
-      (setf (wisi-process--parser-busy wisi--parser) nil)
-      )))
-
-;;;;; debugging
-(defun wisi-process-parse-ids-to-enum (token-table &rest int-ids)
-  "Translate INT-IDS from process integer token ids to elisp enumeral ids.
-Returns reversed sequence."
-  (let ((enum-ids nil))
-    (cl-dolist (i int-ids)
-      (push (aref token-table i) enum-ids))
-    enum-ids))
-
-(defun wisi-process-parse-show-args ()
-  "Show the partial parse command-line args for run_ada_[lalr | lr1]_parse for 
current region.
-Also add it to the kill ring."
-  (interactive)
-  (let* ((begin (region-beginning))
-        (end   (region-end))
-        (parse-action (wisi-read-parse-action))
-        (msg
-         (format "%s %s %d %d %d %d %d %d %d"
-                 (file-name-nondirectory (buffer-file-name))
-                 parse-action
-                 (position-bytes begin)
-                 (position-bytes end)
-                 (position-bytes end)
-                 begin ;; char_pos
-                 (line-number-at-pos begin)
-                 (line-number-at-pos end)
-                 (save-excursion (goto-char begin) (back-to-indentation) 
(current-column));; indent-begin
-                 )))
-    (kill-new msg)
-    (message msg)))
-
-(provide 'wisi-process-parse)
+;;; wisi-process-parse.el --- interface to external parse program
+;;
+;; Copyright (C) 2014, 2017 - 2019 Free Software Foundation, Inc.
+;;
+;; Author: Stephen Leake <address@hidden>
+;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+(require 'cl-lib)
+(require 'wisi-parse-common)
+
+(defgroup wisi nil
+  "Options for Wisi package."
+  :group 'programming)
+
+(defcustom wisi-process-time-out 5.0
+  "Time out waiting for parser response. An error occurs if there
+  is no response from the parser after waiting this amount (in
+  seconds)."
+  :type 'float
+  :safe 'floatp)
+(make-variable-buffer-local 'wisi-process-time-out)
+
+(defconst wisi-process-parse-protocol-version "4"
+  "Defines data exchanged between this package and the background process.
+Must match emacs_wisi_common_parse.ads Protocol_Version.")
+
+(defconst wisi-process-parse-prompt "^;;> "
+  "Regexp matching executable prompt; indicates previous command is complete.")
+
+(defconst wisi-process-parse-quit-cmd "004quit\n"
+  "Command to external process telling it to quit.")
+
+;;;;; sessions
+
+;; The executable builds internal parser structures on startup,
+;; then runs a loop, waiting for parse requests.
+;;
+;; We only need one process per language; there is no persistent state
+;; in the process between parses, and processes are too heavy-weight
+;; to have one per buffer. We use a global alist of parser objects to
+;; find the right one for the current buffer.
+
+(cl-defstruct (wisi-process--parser (:include wisi-parser))
+  (label nil)             ;; string uniquely identifying parser
+  language-protocol-version ;; string identifying language-specific params
+  (exec-file nil)        ;; absolute file name of executable
+  (exec-opts nil)         ;; list of process start options for executable
+  (token-table nil)       ;; vector of token symbols, indexed by integer
+  (face-table nil)       ;; vector of face symbols, indexed by integer
+  (busy nil)              ;; t while parser is active
+  (process nil)          ;; running *_wisi_parse executable
+  (buffer nil)                   ;; receives output of executable
+  line-begin              ;; vector of beginning-of-line positions in buffer
+  (total-wait-time 0.0)   ;; total time during last parse spent waiting for 
subprocess output.
+  (response-count 0)      ;; responses received from subprocess during last 
parse; for profiling.
+  end-pos                 ;; last character position parsed
+  language-action-table   ;; array of function pointers, each taking an sexp 
sent by the process
+  )
+
+(defvar wisi-process--alist nil
+  "Alist mapping string label to ‘wisi-process--session’ struct")
+
+;;;###autoload
+(defun wisi-process-parse-get (parser)
+  "Return a ‘wisi-process--parser’ object matching PARSER label.
+If label found in ‘wisi-process--alist’, return that.
+Otherwise add PARSER to ‘wisi-process--alist’, return it."
+  (or (cdr (assoc (wisi-process--parser-label parser) wisi-process--alist))
+      (let ((exec-file (locate-file (wisi-process--parser-exec-file parser) 
exec-path '("" ".exe"))))
+
+       (unless exec-file
+         (error "%s not found on `exec-path'" (wisi-process--parser-exec-file 
parser)))
+
+       (push (cons (wisi-process--parser-label parser) parser) 
wisi-process--alist)
+
+       parser
+     )))
+
+(defun wisi-process-parse-set-exec (label exec-file)
+  "Change the EXEC-FILE for parsers with LABEL."
+  (let ((parser (cdr (assoc label wisi-process--alist))))
+    (when parser
+      (wisi-parse-kill parser)
+      (setf (wisi-process--parser-exec-file parser) exec-file))))
+
+(defun wisi-process-parse--check-version (parser)
+  "Verify protocol version reported by process."
+  ;; The process has just started; the first non-comment line in the
+  ;; process buffer contains the process and language protocol versions.
+  (with-current-buffer (wisi-process--parser-buffer parser)
+    (goto-char (point-min))
+    (search-forward-regexp "protocol: process version \\([0-9]+\\) language 
version \\([0-9]+\\)")
+    (unless (and (match-string 1)
+                (string-equal (match-string 1) 
wisi-process-parse-protocol-version)
+                (match-string 2)
+                (string-equal (match-string 2) 
(wisi-process--parser-language-protocol-version parser)))
+      (wisi-parse-kill parser)
+      (error "%s parser process protocol version mismatch: elisp %s %s, 
process %s %s"
+            (wisi-process--parser-label parser)
+            wisi-process-parse-protocol-version 
(wisi-process--parser-language-protocol-version parser)
+            (match-string 1) (match-string 2)))
+    ))
+
+(defun wisi-process-parse--require-process (parser)
+  "Start the process for PARSER if not already started."
+  (unless (process-live-p (wisi-process--parser-process parser))
+    (let ((process-connection-type nil) ;; use a pipe, not a pty; avoid 
line-by-line reads
+         (process-name (format " *%s_wisi_parse*" (wisi-process--parser-label 
parser))))
+
+      (unless (buffer-live-p (wisi-process--parser-buffer parser))
+       ;; User may have killed buffer to kill parser.
+       (setf (wisi-process--parser-buffer parser)
+             (get-buffer-create process-name)))
+
+      (with-current-buffer (wisi-process--parser-buffer parser)
+       (erase-buffer)); delete any previous messages, prompt
+
+      (setf (wisi-process--parser-process parser)
+           (make-process
+            :name process-name
+            :buffer (wisi-process--parser-buffer parser)
+            :command (append (list (wisi-process--parser-exec-file parser))
+                             (wisi-process--parser-exec-opts parser))))
+
+      (set-process-query-on-exit-flag (wisi-process--parser-process parser) 
nil)
+      (setf (wisi-process--parser-busy parser) nil)
+
+      (wisi-process-parse--wait parser)
+      (wisi-process-parse--check-version parser)
+      )))
+
+(defun wisi-process-parse--wait (parser)
+  "Wait for the current command to complete."
+  (let ((process (wisi-process--parser-process parser))
+       (search-start (point-min))
+       (wait-count 0)
+       (found nil))
+
+    (with-current-buffer (wisi-process--parser-buffer parser)
+      (while (and (process-live-p process)
+                 (progn
+                   ;; process output is inserted before point, so move back 
over it to search it
+                   (goto-char search-start)
+                   (not (setq found (re-search-forward 
wisi-process-parse-prompt (point-max) t)))))
+       (setq search-start (point));; don't search same text again
+       (setq wait-count (1+ wait-count))
+       (accept-process-output process 0.1))
+
+      (unless found
+       (wisi-process-parse-show-buffer parser)
+       (error "%s process died" (wisi-process--parser-exec-file parser)))
+      )))
+
+(defun wisi-process-parse-show-buffer (parser)
+  "Show PARSER buffer."
+  (if (buffer-live-p (wisi-process--parser-buffer parser))
+      (pop-to-buffer (wisi-process--parser-buffer parser))
+    (error "wisi-process-parse process not active")))
+
+(defun wisi-process-parse--send-parse (parser begin send-end parse-end)
+  "Send a parse command to PARSER external process, followed by
+the content of the current buffer from BEGIN thru SEND-END.  Does
+not wait for command to complete. PARSE-END is end of desired
+parse region."
+  ;; Must match "parse" command arguments read by
+  ;; emacs_wisi_common_parse.adb Get_Parse_Params.
+  (let* ((cmd (format "parse %d \"%s\" %d %d %d %d %d %d %d %d %d %d %d %d %d 
%d %d %d %d %d %s"
+                     (cl-ecase wisi--parse-action
+                       (navigate 0)
+                       (face 1)
+                       (indent 2))
+                     (if (buffer-file-name) (file-name-nondirectory 
(buffer-file-name)) "")
+                     (position-bytes begin)
+                     (position-bytes send-end)
+                     (position-bytes parse-end)
+                     begin ;; char_pos
+                     (line-number-at-pos begin)
+                     (line-number-at-pos send-end)
+                     (save-excursion (goto-char begin) (back-to-indentation) 
(current-column));; indent-begin
+                     (if (or (and (= begin (point-min)) (= parse-end 
(point-max)))
+                             (< (point-max) wisi-partial-parse-threshold))
+                         0 1) ;; partial parse active
+                     (if (> wisi-debug 0) 1 0) ;; debug-mode
+                     (1- wisi-debug) ;; trace_parse
+                     wisi-trace-mckenzie
+                     wisi-trace-action
+                     (if wisi-mckenzie-disable 1 0)
+                     (or wisi-mckenzie-task-count -1)
+                     (or wisi-mckenzie-check-limit -1)
+                     (or wisi-mckenzie-enqueue-limit -1)
+                     (or wisi-parse-max-parallel -1)
+                     (- (position-bytes send-end) (position-bytes begin)) ;; 
send-end is after last byte
+                     (wisi-parse-format-language-options parser)
+                     ))
+        (msg (format "%03d%s" (length cmd) cmd))
+        (process (wisi-process--parser-process parser)))
+    (with-current-buffer (wisi-process--parser-buffer parser)
+      (erase-buffer))
+
+    (process-send-string process msg)
+    (process-send-string process (buffer-substring-no-properties begin 
send-end))
+
+    ;; We don’t wait for the send to complete; the external process
+    ;; may start parsing and send an error message.
+    ))
+
+(defun wisi-process-parse--send-refactor (parser refactor-action parse-begin 
parse-end edit-begin)
+  "Send a refactor command to PARSER external process, followed
+by the content of the current buffer from PARSE-BEGIN thru
+PARSE-END, wait for command to complete. PARSER will respond with
+one or more Edit messages."
+  ;; Must match "refactor" command arguments read by
+  ;; emacs_wisi_common_parse.adb Get_Refactor_Params.
+  (let* ((cmd (format "refactor %d \"%s\" %d %d %d %d %d %d %d %d %d %d %d"
+                     refactor-action
+                     (if (buffer-file-name) (file-name-nondirectory 
(buffer-file-name)) "")
+                     (position-bytes parse-begin)
+                     (position-bytes parse-end)
+                     (position-bytes edit-begin)
+                     parse-begin ;; char_pos
+                     (line-number-at-pos parse-begin)
+                     (line-number-at-pos parse-end)
+                     (if (> wisi-debug 0) 1 0) ;; debug-mode
+                     (1- wisi-debug) ;; trace_parse
+                     wisi-trace-action
+                     (or wisi-parse-max-parallel -1)
+                     (- (position-bytes parse-end) (position-bytes 
parse-begin)) ;; parse-end is after last byte
+                     ))
+        (msg (format "%03d%s" (length cmd) cmd))
+        (process (wisi-process--parser-process parser)))
+    (with-current-buffer (wisi-process--parser-buffer parser)
+      (erase-buffer))
+
+    (process-send-string process msg)
+    (process-send-string process (buffer-substring-no-properties parse-begin 
parse-end))
+    (wisi-process-parse--wait parser)
+    ))
+
+(defun wisi-process-parse--send-noop (parser)
+  "Send a noop command to PARSER external process, followed by
+the content of the current buffer.  Does not wait for command to
+complete."
+  (let* ((cmd (format "noop %d" (1- (position-bytes (point-max)))))
+        (msg (format "%03d%s" (length cmd) cmd))
+        (process (wisi-process--parser-process parser)))
+    (with-current-buffer (wisi-process--parser-buffer parser)
+      (erase-buffer))
+
+    (process-send-string process msg)
+    (process-send-string process (buffer-substring-no-properties (point-min) 
(point-max)))
+    ))
+
+(defun wisi-process-parse--marker-or-nil (item)
+  (if (= -1 item) nil (copy-marker item t)))
+
+(defun wisi-process-parse--Navigate_Cache (parser sexp)
+  ;; sexp is [Navigate_Cache pos statement_id id length class containing_pos 
prev_pos next_pos end_pos]
+  ;; see ‘wisi-process-parse--execute’
+  (let ((pos (aref sexp 1)))
+    (with-silent-modifications
+      (put-text-property
+       pos
+       (1+ pos)
+       'wisi-cache
+       (wisi-cache-create
+       :nonterm    (aref (wisi-process--parser-token-table parser) (aref sexp 
2))
+       :token      (aref (wisi-process--parser-token-table parser) (aref sexp 
3))
+       :last       (aref sexp 4)
+       :class      (aref wisi-class-list (aref sexp 5))
+       :containing (wisi-process-parse--marker-or-nil (aref sexp 6))
+       :prev       (wisi-process-parse--marker-or-nil (aref sexp 7))
+       :next       (wisi-process-parse--marker-or-nil (aref sexp 8))
+       :end        (wisi-process-parse--marker-or-nil (aref sexp 9))
+       )))
+    ))
+
+(defun wisi-process-parse--Name_Property (parser sexp)
+  ;; sexp is [Name_Property first-pos last-pos]
+  ;; see ‘wisi-process-parse--execute’
+  ;; implements wisi-name-action
+  (with-silent-modifications
+    (put-text-property (aref sexp 1) (1+ (aref sexp 2)) 'wisi-name t)))
+
+(defun wisi-process-parse--Face_Property (parser sexp)
+  ;; sexp is [Face_Property first-pos last-pos face-index]
+  ;; see ‘wisi-process-parse--execute’
+  ;; implements wisi--face-action-1
+  (with-silent-modifications
+    (add-text-properties
+     (aref sexp 1)
+     (1+ (aref sexp 2))
+     (list 'font-lock-face (aref (wisi-process--parser-face-table parser) 
(aref sexp 3))
+          'fontified t)
+     )))
+
+(defun wisi-process-parse--Indent (parser sexp)
+  ;; sexp is [Indent line-number indent]
+  ;; see ‘wisi-process-parse--execute’
+  (let ((pos (aref (wisi-process--parser-line-begin parser) (1- (aref sexp 
1)))))
+    (with-silent-modifications
+      (when (< (point-min) pos)
+       (put-text-property
+        (1- pos)
+        pos
+        'wisi-indent
+        (aref sexp 2)))
+      )))
+
+(defun wisi-process-parse--Lexer_Error (parser sexp)
+  ;; sexp is [Lexer_Error char-position <message> <repair-char>]
+  ;; see ‘wisi-process-parse--execute’
+  (let ((pos (aref sexp 1))
+       err)
+
+    (goto-char pos);; for current-column
+
+    (setq err
+         (make-wisi--lexer-error
+          :pos (copy-marker pos)
+          :message
+          (format "%s:%d:%d: %s"
+                  (if (buffer-file-name) (file-name-nondirectory 
(buffer-file-name)) "")
+                  ;; file-name can be nil during vc-resolve-conflict
+                  (line-number-at-pos pos)
+                  (current-column)
+                  (aref sexp 2))
+          :inserted (when (= 4 (length sexp)) (aref sexp 3))))
+
+    (push err (wisi-parser-lexer-errors parser))
+    ))
+
+(defun wisi-process-parse--Parser_Error (parser sexp)
+  ;; sexp is [Parser_Error char-position <string>]
+  ;; see ‘wisi-process-parse--execute’
+  (let ((pos (aref sexp 1))
+       err)
+
+    (goto-char pos);; for current-column
+
+    (setq err
+         (make-wisi--parse-error
+          :pos (copy-marker pos)
+          :message
+          (format "%s:%d:%d: %s"
+                  (if (buffer-file-name) (file-name-nondirectory 
(buffer-file-name)) "")
+                  ;; file-name can be nil during vc-resolve-conflict
+                  (line-number-at-pos pos)
+                  (1+ (current-column))
+                  (aref sexp 2))))
+
+    (push err (wisi-parser-parse-errors parser))
+    ))
+
+(defun wisi-process-parse--Check_Error (parser sexp)
+  ;; sexp is [Check_Error code name-1-pos name-2-pos <string>]
+  ;; see ‘wisi-process-parse--execute’
+  (let* ((name-1-pos (aref sexp 2))
+       (name-1-col (1+ (progn (goto-char name-1-pos)(current-column)))) ;; 
gnat columns are 1 + emacs columns
+       (name-2-pos (aref sexp 3))
+       (name-2-col (1+ (progn (goto-char name-2-pos)(current-column))))
+       (file-name (if (buffer-file-name) (file-name-nondirectory 
(buffer-file-name)) ""))
+       ;; file-name can be nil during vc-resolve-conflict
+       (err (make-wisi--parse-error
+             :pos (copy-marker name-1-pos)
+             :message
+             (format "%s:%d:%d: %s %s:%d:%d"
+                     file-name (line-number-at-pos name-1-pos) name-1-col
+                     (aref sexp 4)
+                     file-name (line-number-at-pos name-2-pos) name-2-col)))
+       )
+
+    (push err (wisi-parser-parse-errors parser))
+    ))
+
+(defun wisi-process-parse--Recover (parser sexp)
+  ;; sexp is [Recover [pos [inserted] [deleted] deleted-region]...]
+  ;; see ‘wisi-process-parse--execute’
+  ;; convert to list of wisi--parse-error-repair, add to last error
+  (let* ((token-table (wisi-process--parser-token-table parser))
+        (last-error (car (wisi-parser-parse-errors parser))))
+    (unless (= 1 (length sexp))
+      (cl-do ((i 1 (1+ i))) ((= i (length sexp)))
+       (push
+        (make-wisi--parse-error-repair
+         :pos (aref (aref sexp i) 0)
+         :inserted (mapcar (lambda (id) (aref token-table id)) (aref (aref 
sexp i) 1))
+         :deleted  (mapcar (lambda (id) (aref token-table id)) (aref (aref 
sexp i) 2))
+         :deleted-region (aref (aref sexp i) 3))
+        (wisi--parse-error-repair last-error)))
+      )))
+
+(defun wisi-process-parse--End (parser sexp)
+  ;; sexp is [End pos]
+  ;; see ‘wisi-process-parse--execute’
+  (setf (wisi-process--parser-end-pos parser) (aref sexp 1)))
+
+(defun wisi-process-parse--Edit (parser sexp)
+  ;; sexp is [Edit begin end text]
+  (delete-region (aref sexp 1) (1+ (aref sexp 2)))
+  (goto-char (aref sexp 1))
+  (insert (aref sexp 3)))
+
+(defun wisi-process-parse--Language (parser sexp)
+  ;; sexp is [Language language-action ...]
+  (funcall (aref (wisi-process--parser-language-action-table parser) (aref 
sexp 1)) sexp))
+
+(defun wisi-process-parse--execute (parser sexp)
+  "Execute encoded SEXP sent from external process."
+  ;; sexp is [action arg ...]; an encoded instruction that we need to execute
+  ;;
+  ;; Actions:
+  ;;
+  ;; [Navigate_Cache pos statement_id id length class containing_pos prev_pos 
next_pos end_pos]
+  ;;    Set a wisi-cache text-property.
+  ;;    *pos          : integer buffer position; -1 if nil (not set)
+  ;;    *id           : integer index into parser-token-table
+  ;;    length        : integer character count
+  ;;    class         : integer index into wisi-class-list
+  ;;
+  ;; [Name_Property first-pos last-pos]
+  ;;
+  ;; [Face_Property first-pos last-pos face-index]
+  ;;    Set a font-lock-face text-property
+  ;;    face-index: integer index into parser-elisp-face-table
+  ;;
+  ;; [Indent line-number indent]
+  ;;    Set an indent text property
+  ;;
+  ;; [Lexer_Error char-position <message> <repair-char>]
+  ;;    The lexer detected an error at char-position.
+  ;;
+  ;;    If <repair-char> is not ASCII NUL, it was inserted immediately
+  ;;    after char-position to fix the error.
+  ;;
+  ;; [Parser_Error char-position <message>]
+  ;;    The parser detected a syntax error; save information for later
+  ;;    reporting.
+  ;;
+  ;;    If error recovery is successful, there can be more than one
+  ;;    error reported during a parse.
+  ;;
+  ;; [Check_Error code name-1-pos name-2-pos <string>]
+  ;;    The parser detected a semantic check error; save information
+  ;;    for later reporting.
+  ;;
+  ;;    If error recovery is successful, there can be more than one
+  ;;    error reported during a parse.
+  ;;
+  ;; [Recover [pos [inserted] [deleted] deleted-region]...]
+  ;;    The parser finished a successful error recovery.
+  ;;
+  ;;    pos: Buffer position
+  ;;
+  ;;    inserted: Virtual tokens (terminal or non-terminal) inserted
+  ;;    before pos.
+  ;;
+  ;;    deleted: Tokens deleted after pos.
+  ;;
+  ;;    deleted-region: source buffer region containing deleted tokens
+  ;;
+  ;;    Args are token ids; index into parser-token-table. Save the
+  ;;    information for later use by ’wisi-repair-error’.
+  ;;
+  ;; [Edit begin end text]
+  ;;    Replace region BEGIN . END with TEXT; normally the result of a
+  ;;    refactor command.
+  ;;
+  ;; [Language ...]
+  ;;    Dispatch to a language-specific action, via
+  ;;    `wisi-process--parser-language-action-table'.
+  ;;
+  ;;
+  ;; Numeric action codes are given in the case expression below
+
+  (cl-ecase (aref sexp 0)
+    (1  (wisi-process-parse--Navigate_Cache parser sexp))
+    (2  (wisi-process-parse--Face_Property parser sexp))
+    (3  (wisi-process-parse--Indent parser sexp))
+    (4  (wisi-process-parse--Lexer_Error parser sexp))
+    (5  (wisi-process-parse--Parser_Error parser sexp))
+    (6  (wisi-process-parse--Check_Error parser sexp))
+    (7  (wisi-process-parse--Recover parser sexp))
+    (8  (wisi-process-parse--End parser sexp))
+    (9  (wisi-process-parse--Name_Property parser sexp))
+    (10 (wisi-process-parse--Edit parser sexp))
+    (11 (wisi-process-parse--Language parser sexp))
+    ))
+
+;;;;; main
+
+(cl-defmethod wisi-parse-kill ((parser wisi-process--parser))
+  (when (process-live-p (wisi-process--parser-process parser))
+    ;; We used to send a quit command first, to be nice. But there's
+    ;; no timeout on that, so it would hang when the process
+    ;; executable is not reading command input.
+    (when (process-live-p (wisi-process--parser-process parser))
+      (kill-process (wisi-process--parser-process parser)))
+    )
+  (setf (wisi-process--parser-busy parser) nil))
+
+(defvar wisi--lexer nil) ;; wisi-elisp-lexer.el
+(declare-function wisi-elisp-lexer-reset "wisi-elisp-lexer")
+
+(defun wisi-process-parse--prepare (parser)
+  (wisi-process-parse--require-process parser)
+
+  ;; font-lock can trigger a face parse while navigate or indent parse
+  ;; is active, due to ‘accept-process-output’ below. Signaling an
+  ;; error tells font-lock to try again later.
+  (if (wisi-process--parser-busy parser)
+      (progn
+       (setf (wisi-parser-parse-errors parser)
+             (list
+              (make-wisi--parse-error
+               :pos 0
+               :message (format "%s:%d:%d: parser busy (try 
’wisi-kill-parser’)"
+                                (if (buffer-file-name) (file-name-nondirectory 
(buffer-file-name)) "") 1 1))
+              ))
+       (error "%s parse abandoned; parser busy - use partial parse?" 
wisi--parse-action)
+       )
+
+    ;; It is not possible for a background elisp function (ie
+    ;; font-lock) to interrupt this code between checking and setting
+    ;; parser-busy; background elisp can only run when we call
+    ;; accept-process-output below.
+    (setf (wisi-process--parser-busy parser) t)
+
+    (setf (wisi-process--parser-total-wait-time parser) 0.0)
+    (setf (wisi-parser-lexer-errors parser) nil)
+    (setf (wisi-parser-parse-errors parser) nil)
+    ))
+
+(defun wisi-process-parse--handle-messages (parser)
+  (condition-case-unless-debug err
+      (let* ((source-buffer (current-buffer))
+            (response-buffer (wisi-process--parser-buffer parser))
+            (process (wisi-process--parser-process parser))
+            (w32-pipe-read-delay 0) ;; fastest subprocess read
+            response
+            response-end
+            (response-count 0)
+            sexp-start
+            (need-more nil) ;; point-max if need more, to check for new input
+            (done nil)
+            start-wait-time)
+
+       (set-buffer response-buffer)
+       (setq sexp-start (point-min))
+
+       ;; process responses until prompt received
+       (while (not done)
+
+         ;; process all complete responses currently in buffer
+         (while (and (not need-more)
+                     (not done))
+
+           (goto-char sexp-start)
+
+           (cond
+            ((eobp)
+             (setq need-more (point-max)))
+
+            ((looking-at wisi-process-parse-prompt)
+             (setq done t))
+
+            ((or (looking-at "\\[") ;; encoded action
+                 (looking-at "(")) ;; error or other elisp expression to eval
+             (condition-case nil
+                 (setq response-end (scan-sexps (point) 1))
+               (error
+                ;; incomplete response
+                (setq need-more (point-max))
+                nil))
+
+             (unless need-more
+               (setq response-count (1+ response-count))
+               (setq response (car (read-from-string 
(buffer-substring-no-properties (point) response-end))))
+               (goto-char response-end)
+               (forward-line 1)
+               (setq sexp-start (point))
+
+               (set-buffer source-buffer) ;; for put-text-property in actions
+               (cond
+                ((listp response)
+                 ;; error of some sort
+                 (cond
+                  ((equal '(parse_error) response)
+                   ;; Parser detected a syntax error, and recovery failed, so 
signal it.
+
+                   (when (> wisi-debug 0)
+                     ;; Save a copy of parser output; may be overwritten by 
subsequent parse face attempts.
+                     (set-buffer response-buffer)
+                     (let ((content (buffer-substring-no-properties 
(point-min) (point-max)))
+                           (buf-name (concat (buffer-name) "-save-error")))
+                       (set-buffer (get-buffer-create buf-name))
+                       (insert content)))
+
+                   (if (wisi-parser-parse-errors parser)
+                       (signal 'wisi-parse-error
+                               (wisi--parse-error-message (car 
(wisi-parser-parse-errors parser))))
+
+                     ;; can have no errors when testing a new parser
+                     (push
+                      (make-wisi--parse-error :pos 0 :message "parser failed 
with no message")
+                      (wisi-parser-parse-errors parser))
+                     (signal 'wisi-parse-error "parser failed with no 
message")))
+
+                  ((equal 'parse_error (car response))
+                   ;; Parser detected some other error non-fatal error, so 
signal it.
+                   (push
+                    (make-wisi--parse-error :pos 0 :message (cadr response))
+                    (wisi-parser-parse-errors parser))
+                   (signal 'wisi-parse-error (cdr response)))
+
+                  ((and (eq 'error (car response))
+                        (string-prefix-p "bad command:" (cadr response)))
+                   ;; Parser dropped bytes, is treating buffer
+                   ;; content bytes as commands. Kill the process
+                   ;; to kill the pipes; there is no other way to
+                   ;; flush them.
+                   (kill-process (wisi-process--parser-process parser))
+                   (signal 'wisi-parse-error "parser lost sync; killed"))
+
+                  (t
+                   ;; Some other error
+                   (condition-case-unless-debug err
+                       (eval response)
+                     (error
+                      (push (make-wisi--parse-error :pos (point) :message 
(cadr err)) (wisi-parser-parse-errors parser))
+                      (signal (car err) (cdr err)))))
+                  ))
+
+                ((arrayp response)
+                 ;; encoded action
+                 (condition-case-unless-debug err
+                     (wisi-process-parse--execute parser response)
+                   (wisi-parse-error
+                    (push (make-wisi--parse-error :pos (point) :message (cadr 
err)) (wisi-parser-parse-errors parser))
+                    (signal (car err) (cdr err)))
+
+                   (error ;; ie from [C:\Windows\system32\KERNEL32.DLL], or 
bug in action code above.
+                    (set-buffer response-buffer)
+                    (let ((content (buffer-substring-no-properties (point-min) 
(point-max)))
+                          (buf-name (concat (buffer-name) "-save-error")))
+                      (set-buffer (get-buffer-create buf-name))
+                      (insert content)
+                      (insert (format "%s" err))
+                      (error "parser failed; error messages in %s" buf-name)))
+                   ))
+                )
+
+               (set-buffer response-buffer)
+               ))
+
+            (t
+             ;; debug output
+             (forward-line 1)
+             (setq sexp-start (point)))
+            )
+             )
+
+           (unless done
+             ;; end of response buffer
+             (unless (process-live-p process)
+               (set-buffer response-buffer)
+               (let ((content (buffer-substring-no-properties (point-min) 
(point-max)))
+                     (buf-name (concat (buffer-name) "-save-error")))
+                 (set-buffer (get-buffer-create buf-name))
+                 (insert content)
+                 (error "parser failed; error messages in %s" buf-name)))
+
+             (setq start-wait-time (float-time))
+
+             ;; If we specify no time-out here, we get messages about
+             ;; "blocking call with quit inhibited", when this is
+             ;; called by font-lock from the display engine.
+             ;;
+             ;; Specifying just-this-one t prevents C-q from
+             ;; interrupting this?
+             (accept-process-output
+              process
+              wisi-process-time-out
+              nil ;; milliseconds
+              nil)  ;; just-this-one
+
+             (setf (wisi-process--parser-total-wait-time parser)
+                   (+ (wisi-process--parser-total-wait-time parser)
+                      (- (float-time) start-wait-time)))
+
+             (when (and (= (point-max) need-more)
+                        (> (wisi-process--parser-total-wait-time parser) 
wisi-process-time-out))
+               (error "wisi-process-parse not getting more text (or bad syntax 
in process output)"))
+
+             (setq need-more nil))
+           );; while not done
+
+         ;; got command prompt
+         (unless (process-live-p process)
+           (wisi-process-parse-show-buffer parser)
+           (error "wisi-process-parse process died"))
+
+         (setf (wisi-process--parser-response-count parser) response-count)
+
+         (setf (wisi-process--parser-busy parser) nil)
+         (set-buffer source-buffer)
+         ;; If we get here, the parse succeeded (possibly with error
+         ;; recovery); move point to end of parsed region.
+         (goto-char (wisi-process--parser-end-pos parser))
+         )
+
+      (wisi-parse-error
+       (setf (wisi-process--parser-busy parser) nil)
+       (signal (car err) (cdr err)))
+
+      (error
+       (setf (wisi-process--parser-busy parser) nil)
+       (signal (car err) (cdr err))
+       )))
+
+(cl-defmethod wisi-parse-current ((parser wisi-process--parser) begin send-end 
parse-end)
+  (wisi-process-parse--prepare parser)
+  (let ((total-line-count (1+ (count-lines (point-max) (point-min)))))
+    (setf (wisi-process--parser-line-begin parser) (wisi--set-line-begin 
total-line-count))
+    (wisi-process-parse--send-parse parser begin send-end parse-end)
+
+    ;; We reset the elisp lexer, because post-parse actions may use it.
+    (when wisi--lexer
+      (wisi-elisp-lexer-reset total-line-count wisi--lexer))
+    )
+  (wisi-process-parse--handle-messages parser)
+  (cons begin (point))
+  )
+
+(cl-defmethod wisi-refactor ((parser wisi-process--parser) refactor-action 
parse-begin parse-end edit-begin)
+  (save-excursion
+    (wisi-process-parse--prepare parser)
+    (wisi-process-parse--send-refactor parser refactor-action parse-begin 
parse-end edit-begin)
+    (wisi-process-parse--handle-messages parser))
+  )
+
+(defvar wisi--parser nil) ;; wisi.el
+
+(defun wisi-process-send-tokens-noop ()
+  "Run lexer, send tokens to subprocess; otherwise no operation.
+For use with ’wisi-time’."
+  (wisi-process-parse--require-process wisi--parser)
+  (if (wisi-process--parser-busy wisi--parser)
+      (error "%s parser busy" wisi--parse-action)
+
+    ;; not busy
+    (let* ((source-buffer (current-buffer))
+          (action-buffer (wisi-process--parser-buffer wisi--parser))
+          (process (wisi-process--parser-process wisi--parser))
+          (sexp-start (point-min))
+          (need-more nil)
+          (done nil))
+
+      (setf (wisi-process--parser-busy wisi--parser) t)
+      (wisi-process-parse--send-noop wisi--parser)
+
+      (set-buffer action-buffer)
+      (while (and (process-live-p process)
+                 (not done))
+       (goto-char sexp-start)
+       (cond
+        ((eobp)
+         (setq need-more t))
+
+        ((looking-at wisi-process-parse-prompt)
+         (setq done t))
+
+        (t
+         (forward-line 1)
+         (setq sexp-start (point)))
+        )
+
+       (unless done
+         ;; end of response buffer
+         (unless (process-live-p process)
+           (wisi-process-parse-show-buffer wisi--parser)
+           (error "wisi-process-parse process died"))
+
+         (accept-process-output process 1.0 nil nil)
+         (setq need-more nil))
+       )
+      (set-buffer source-buffer)
+      (setf (wisi-process--parser-busy wisi--parser) nil)
+      )))
+
+;;;;; debugging
+(defun wisi-process-parse-ids-to-enum (token-table &rest int-ids)
+  "Translate INT-IDS from process integer token ids to elisp enumeral ids.
+Returns reversed sequence."
+  (let ((enum-ids nil))
+    (cl-dolist (i int-ids)
+      (push (aref token-table i) enum-ids))
+    enum-ids))
+
+(defun wisi-process-parse-show-args ()
+  "Show the partial parse command-line args for run_ada_[lalr | lr1]_parse for 
current region.
+Also add it to the kill ring."
+  (interactive)
+  (let* ((begin (region-beginning))
+        (end   (region-end))
+        (parse-action (wisi-read-parse-action))
+        (msg
+         (format "%s %s %d %d %d %d %d %d %d"
+                 (file-name-nondirectory (buffer-file-name))
+                 parse-action
+                 (position-bytes begin)
+                 (position-bytes end)
+                 (position-bytes end)
+                 begin ;; char_pos
+                 (line-number-at-pos begin)
+                 (line-number-at-pos end)
+                 (save-excursion (goto-char begin) (back-to-indentation) 
(current-column));; indent-begin
+                 )))
+    (kill-new msg)
+    (message msg)))
+
+(provide 'wisi-process-parse)
diff --git a/packages/wisi/wisi-run-indent-test.el 
b/packages/wisi/wisi-run-indent-test.el
index ce5b355..fcf0b33 100644
--- a/packages/wisi/wisi-run-indent-test.el
+++ b/packages/wisi/wisi-run-indent-test.el
@@ -1,300 +1,331 @@
-;;; wisi-run-indent-test.el --- utils for automating indentation and casing 
tests
-;;
-;; Copyright (C) 2018 - 2019  Free Software Foundation, Inc.
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-(require 'wisi-tests)
-
-;; user can set these to t in an EMACSCMD
-(defvar skip-cmds nil)
-(defvar skip-reindent-test nil)
-(defvar skip-recase-test nil)
-(defvar skip-write nil)
-
-(defun test-in-comment-p ()
-  (nth 4 (syntax-ppss)))
-
-(defun test-face (token face)
-  "Test if all of TOKEN in next code line has FACE.
-FACE may be a list."
-  (save-excursion
-    (when (test-in-comment-p)
-      (beginning-of-line); forward-comment doesn't move if inside a comment!
-      (forward-comment (point-max)))
-    (condition-case err
-       (search-forward token (line-end-position 5))
-      (error
-       (error "can't find '%s'" token)))
-
-    (save-match-data
-      (wisi-validate-cache (line-beginning-position 0) (line-end-position 5) 
nil 'face))
-
-    ;; We don't use face-at-point, because it doesn't respect
-    ;; font-lock-face set by the parser! And we want to check for
-    ;; conflicts between font-lock-keywords and the parser.
-
-    ;; font-lock-keywords sets 'face property, parser sets 'font-lock-face.
-
-    ;; In emacs < 27, if we use (get-text-property (point) 'face), we
-    ;; also get 'font-lock-face, but not vice-versa. So we have to use
-    ;; text-properties-at to check for both.
-    (let* ((token (match-string 0))
-          (props (text-properties-at (match-beginning 0)))
-          key
-          token-face)
-
-      (cond
-       ((plist-get props 'font-lock-face)
-       (setq key 'font-lock-face)
-       (setq token-face (plist-get props 'font-lock-face)))
-
-       ((plist-get props 'face)
-       (setq key 'face)
-       (setq token-face (plist-get props 'face)))
-       )
-
-      (when (and (memq 'font-lock-face props)
-                (memq 'face props))
-       (describe-text-properties (match-beginning 0))
-       (error "mixed font-lock-keyword and parser faces for '%s'" token))
-
-      (unless (not (text-property-not-all 0 (length token) key token-face 
token))
-       (error "mixed faces, expecting %s for '%s'" face token))
-
-      (unless (or (and (listp face)
-                      (memq token-face face))
-                 (eq token-face face))
-       (error "found face %s, expecting %s for '%s'" token-face face token))
-    )))
-
-(defun test-face-1 (search token face)
-  "Move to end of comment, search for SEARCH, call `test-face'."
-  (save-excursion
-    (when (test-in-comment-p)
-      (beginning-of-line); forward-comment doesn't move if inside a comment!
-      (forward-comment (point-max)))
-    (search-forward search)
-    (test-face token face)
-    ))
-
-(defun test-cache-class (token class)
-  "Test if TOKEN in next code line has wisi-cache with class CLASS."
-  (save-excursion
-    (wisi-validate-cache (line-beginning-position 0) (line-end-position 3) nil 
'navigate)
-    (beginning-of-line); forward-comment doesn't move if inside a comment!
-    (forward-comment (point-max))
-    (condition-case err
-       (search-forward token (line-end-position 5))
-      (error
-       (error "can't find '%s'" token)))
-
-    (let ((cache (get-text-property (match-beginning 0) 'wisi-cache)))
-
-      (unless cache (error "no cache"))
-      (unless (eq (wisi-cache-class cache) class)
-       (error "expecting class %s, found '%s'" class (wisi-cache-class cache)))
-    )))
-
-(defun test-cache-containing (containing contained)
-  "Test if CONTAINING in next code line has wisi-cache with that contains 
CONTAINED."
-  (save-excursion
-    (wisi-validate-cache (line-beginning-position 0) (line-end-position 3) nil 
'navigate)
-    (beginning-of-line)
-    (forward-comment (point-max))
-    (let (containing-pos contained-cache)
-      (condition-case err
-         (search-forward containing (line-end-position 5))
-       (error
-        (error "can't find '%s'" containing)))
-      (setq containing-pos (match-beginning 0))
-
-      (condition-case err
-         (search-forward contained (line-end-position 5))
-       (error
-        (error "can't find '%s'" contained)))
-      (setq contained-cache (get-text-property (match-beginning 0) 
'wisi-cache))
-
-      (unless contained-cache (error "no cache on %s" contained))
-      (unless (= containing-pos (wisi-cache-containing contained-cache))
-       (error "expecting %d, got %d" containing-pos (wisi-cache-containing 
contained-cache)))
-    )))
-
-(defun run-test-here ()
-  "Run an indentation and casing test on the current buffer."
-  (interactive)
-  (setq indent-tabs-mode nil)
-  (setq jit-lock-context-time 0.0);; for test-face
-
-  (let ((error-count 0)
-       (test-buffer (current-buffer))
-       cmd-line
-       last-result last-cmd expected-result)
-    ;; Look for EMACS* comments in the file:
-    ;;
-    ;; EMACSCMD: <form>
-    ;;    Executes the lisp form inside a save-excursion, saves the result as 
a lisp object.
-    ;;
-    ;; EMACSRESULT: <form>
-    ;;    point is moved to end of line, <form> is evaluated inside
-    ;;    save-excursion and compared (using `equal') with the result
-    ;;    of the previous EMACSCMD, and the test fails if they don't
-    ;;    match.
-    ;;
-    ;; EMACS_SKIP_UNLESS: <form>
-    ;;   skip entire test if form evals nil
-    ;;
-    ;; EMACSDEBUG: <form>
-    ;;    Eval form, display result. Also used for setting breakpoint.
-
-    (goto-char (point-min))
-    (while (and (not skip-cmds)
-               (re-search-forward (concat comment-start "EMACS\\([^:]+\\):") 
nil t))
-      (cond
-       ((string= (match-string 1) "CMD")
-       (looking-at ".*$")
-       (save-excursion
-         (setq cmd-line (line-number-at-pos)
-               last-cmd (match-string 0)
-               last-result
-               (condition-case-unless-debug err
-                   (eval (car (read-from-string last-cmd)))
-                 (error
-                    (setq error-count (1+ error-count))
-                    (message "%s:%d: command: %s"
-                             (buffer-file-name) cmd-line last-cmd)
-                    (message "%s:%d: %s: %s"
-                             (buffer-file-name)
-                             (line-number-at-pos)
-                             (car err)
-                             (cdr err))))
-               )
-         ;; save-excursion does not preserve mapping of buffer to
-         ;; window, but some tests depend on that. For example,
-         ;; execute-kbd-macro doesn’t work properly if current buffer
-         ;; is not visible..
-         (pop-to-buffer test-buffer)))
-
-       ((string= (match-string 1) "RESULT")
-       (looking-at ".*$")
-       (setq expected-result (save-excursion (end-of-line 1) (eval (car 
(read-from-string (match-string 0))))))
-       (unless (equal expected-result last-result)
-         (when debug-on-error (debug))
-         (setq error-count (1+ error-count))
-         (message
-          (concat
-           (format "error: %s:%d:\n" (buffer-file-name) (line-number-at-pos))
-           (format "Result of '%s' does not match.\nGot    '%s',\nexpect '%s'"
-                   last-cmd
-                   last-result
-                   expected-result)
-           ))))
-
-       ((string= (match-string 1) "_SKIP_UNLESS")
-       (looking-at ".*$")
-       (unless (eval (car (read-from-string (match-string 0))))
-         (setq skip-cmds t)
-         (setq skip-reindent-test t)
-         (setq skip-recase-test t)
-         ;; We don’t set ‘skip-write’ t here, so the *.diff Make target 
succeeds.
-         ))
-
-       ((string= (match-string 1) "DEBUG")
-       (looking-at ".*$")
-       (message "DEBUG: %s:%d %s"
-                (current-buffer)
-                (line-number-at-pos)
-                (save-excursion
-                 (eval (car (read-from-string (match-string 0)))))))
-
-       (t
-       (setq error-count (1+ error-count))
-       (error (concat "Unexpected EMACS test command " (match-string 1))))))
-
-    (when (> error-count 0)
-      (error
-       "%s:%d: aborting due to previous errors (%d)"
-       (buffer-file-name) (line-number-at-pos (point)) error-count))
-    )
-
-  (when (not skip-reindent-test)
-    ;; Reindent the buffer
-    (message "indenting")
-
-    ;; first unindent; if the indentation rules do nothing, the test
-    ;; would pass, otherwise!  Only unindent by 1 column, so comments
-    ;; not currently in column 0 are still not in column 0, in case
-    ;; the mode supports a special case for comments in column 0.
-    (indent-rigidly (point-min) (point-max) -1)
-
-    ;; indent-region uses save-excursion, so we can't goto an error location
-    (indent-region (point-min) (point-max))
-
-    ;; Cleanup the buffer; indenting often leaves trailing whitespace;
-    ;; files must be saved without any.
-    (delete-trailing-whitespace)
-    )
-  )
-
-(defun run-test (file-name)
-  "Run an indentation and casing test on FILE-NAME."
-  (interactive "f")
-  ;; we'd like to run emacs from a makefile as:
-  ;;
-  ;; emacs -Q --batch -l runtest.el -f run-test-here <filename>
-  ;;
-  ;; However, the function specified with -f is run _before_
-  ;; <filename> is visited. So we try this instead:
-  ;;
-  ;; emacs -Q --batch -l runtest.el --eval '(run-test "<filename>")'
-  ;;
-  ;; And then we discover that processes spawned with start-process
-  ;; don't run when emacs is in --batch mode. So we try this:
-  ;;
-  ;; emacs -Q -l runtest.el --eval '(progn (run-test 
"<filename>")(kill-emacs))'
-  ;;
-  ;; Then we have problems with font lock defaulting to jit-lock; that
-  ;; screws up font-lock tests because the test runs before jit-lock
-  ;; does. This forces default font-lock, which fontifies the whole
-  ;; buffer when (font-lock-fontify-buffer) is called, which tests
-  ;; that rely on font-lock do explicitly.
-  (setq font-lock-support-mode nil)
-
-  (let ((dir default-directory))
-    (find-file file-name) ;; sets default-directory
-
-    (when (eq major-mode 'fundamental-mode)
-      ;; Running a grammar in test/wisi
-      (add-to-list 'load-path (expand-file-name "."))
-      (wisi-tests-setup (file-name-sans-extension (file-name-nondirectory 
file-name))))
-
-    (run-test-here)
-
-    (unless skip-write
-      ;; Write the result file; makefile will diff.
-      (when skip-reindent-test
-       ;; user sets skip-reindent-test when testing interactive editing
-       ;; commands, so the diff would fail. Revert to the original file,
-       ;; save a copy of that.
-       (revert-buffer t t))
-
-      (delete-trailing-whitespace)
-      (write-file (concat dir (file-name-nondirectory file-name) ".tmp")) )
-    )
-  )
-
-(provide 'wisi-run-indent-test)
-;; end of file
+;;; wisi-run-indent-test.el --- utils for automating indentation and casing 
tests
+;;
+;; Copyright (C) 2018 - 2019  Free Software Foundation, Inc.
+;;
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
+
+(require 'wisi-tests)
+
+;; user can set these to t in an EMACSCMD
+(defvar skip-cmds nil)
+(defvar skip-reindent-test nil)
+(defvar skip-recase-test nil)
+(defvar skip-write nil)
+
+(defun test-in-comment-p ()
+  (nth 4 (syntax-ppss)))
+
+(defun test-face (token face)
+  "Test if all of TOKEN in next code line has FACE.
+FACE may be a list."
+  (save-excursion
+    (when (test-in-comment-p)
+      (beginning-of-line); forward-comment doesn't move if inside a comment!
+      (forward-comment (point-max)))
+    (condition-case err
+       (search-forward token (line-end-position 5))
+      (error
+       (error "can't find '%s'" token)))
+
+    (save-match-data
+      (wisi-validate-cache (line-beginning-position 0) (line-end-position 5) 
nil 'face))
+
+    ;; We don't use face-at-point, because it doesn't respect
+    ;; font-lock-face set by the parser! And we want to check for
+    ;; conflicts between font-lock-keywords and the parser.
+
+    ;; font-lock-keywords sets 'face property, parser sets 'font-lock-face.
+
+    ;; In emacs < 27, if we use (get-text-property (point) 'face), we
+    ;; also get 'font-lock-face, but not vice-versa. So we have to use
+    ;; text-properties-at to check for both.
+    (let* ((token (match-string 0))
+          (props (text-properties-at (match-beginning 0)))
+          key
+          token-face)
+
+      (cond
+       ((plist-get props 'font-lock-face)
+       (setq key 'font-lock-face)
+       (setq token-face (plist-get props 'font-lock-face)))
+
+       ((plist-get props 'face)
+       (setq key 'face)
+       (setq token-face (plist-get props 'face)))
+       )
+
+      (when (and (memq 'font-lock-face props)
+                (memq 'face props))
+       (describe-text-properties (match-beginning 0))
+       (error "mixed font-lock-keyword and parser faces for '%s'" token))
+
+      (unless (not (text-property-not-all 0 (length token) key token-face 
token))
+       (error "mixed faces, expecting %s for '%s'" face token))
+
+      (unless (or (and (listp face)
+                      (memq token-face face))
+                 (eq token-face face))
+       (error "found face %s, expecting %s for '%s'" token-face face token))
+    )))
+
+(defun test-face-1 (search token face)
+  "Move to end of comment, search for SEARCH, call `test-face'."
+  (save-excursion
+    (when (test-in-comment-p)
+      (beginning-of-line); forward-comment doesn't move if inside a comment!
+      (forward-comment (point-max)))
+    (search-forward search)
+    (test-face token face)
+    ))
+
+(defun test-cache-class (token class)
+  "Test if TOKEN in next code line has wisi-cache with class CLASS."
+  (save-excursion
+    (wisi-validate-cache (line-beginning-position 0) (line-end-position 3) nil 
'navigate)
+    (beginning-of-line); forward-comment doesn't move if inside a comment!
+    (forward-comment (point-max))
+    (condition-case err
+       (search-forward token (line-end-position 5))
+      (error
+       (error "can't find '%s'" token)))
+
+    (let ((cache (get-text-property (match-beginning 0) 'wisi-cache)))
+
+      (unless cache (error "no cache"))
+      (unless (eq (wisi-cache-class cache) class)
+       (error "expecting class %s, found '%s'" class (wisi-cache-class cache)))
+    )))
+
+(defun test-cache-containing (containing contained)
+  "Test if CONTAINING in next code line has wisi-cache with that contains 
CONTAINED."
+  (save-excursion
+    (wisi-validate-cache (line-beginning-position 0) (line-end-position 3) nil 
'navigate)
+    (beginning-of-line)
+    (forward-comment (point-max))
+    (let (containing-pos contained-cache)
+      (search-forward containing (line-end-position 5))
+      (setq containing-pos (match-beginning 0))
+
+      (search-forward contained (line-end-position 5))
+      (setq contained-cache (get-text-property (match-beginning 0) 
'wisi-cache))
+
+      (unless contained-cache (error "no cache on %s" contained))
+      (unless (= containing-pos (wisi-cache-containing contained-cache))
+       (error "expecting %d, got %d" containing-pos (wisi-cache-containing 
contained-cache)))
+    )))
+
+(defvar test-refactor-markers nil
+  "Stores positions altered by `test-refactor-1' for `test-refactor-2'.
+Each item is a list (ACTION PARSE-BEGIN PARSE-END EDIT-BEGIN)")
+
+(defun test-refactor-1 (action inverse-action search-string refactor-string)
+  (beginning-of-line)
+  (forward-comment (point-max)) ;; forward-comment does not work from inside 
comment
+  (search-forward search-string (line-end-position 7))
+  (wisi-validate-cache (line-end-position -7) (line-end-position 7) t 
'navigate)
+  (search-forward refactor-string (line-end-position 7))
+  (let* ((edit-begin (match-beginning 0))
+        (cache (wisi-goto-statement-start))
+        (parse-begin (point))
+        (parse-end (wisi-cache-end cache)))
+    (setq parse-end (+ parse-end (wisi-cache-last (wisi-get-cache 
(wisi-cache-end cache)))))
+    (push (list
+          inverse-action
+          (copy-marker parse-begin nil)
+          (copy-marker parse-end nil)
+          (copy-marker edit-begin nil))
+         test-refactor-markers)
+    (wisi-refactor wisi--parser action parse-begin parse-end edit-begin)
+    ))
+
+(defun test-refactor-inverse ()
+  "Reverse refactors done by recent set of `test-refactor-1'."
+  (save-excursion
+    (condition-case-unless-debug nil
+       (dolist (item test-refactor-markers)
+         (wisi-refactor wisi--parser
+                        (nth 0 item)
+                        (marker-position (nth 1 item))
+                        (marker-position (nth 2 item))
+                        (marker-position (nth 3 item))))
+      (error nil))
+    (setq test-refactor-markers nil)))
+
+(defun run-test-here ()
+  "Run an indentation and casing test on the current buffer."
+  (interactive)
+  (setq indent-tabs-mode nil)
+  (setq jit-lock-context-time 0.0);; for test-face
+
+  (let ((error-count 0)
+       (test-buffer (current-buffer))
+       cmd-line
+       last-result last-cmd expected-result)
+    ;; Look for EMACS* comments in the file:
+    ;;
+    ;; EMACSCMD: <form>
+    ;;    Executes the lisp form inside a save-excursion, saves the result as 
a lisp object.
+    ;;
+    ;; EMACSRESULT: <form>
+    ;;    point is moved to end of line, <form> is evaluated inside
+    ;;    save-excursion and compared (using `equal') with the result
+    ;;    of the previous EMACSCMD, and the test fails if they don't
+    ;;    match.
+    ;;
+    ;; EMACS_SKIP_UNLESS: <form>
+    ;;   skip entire test if form evals nil
+    ;;
+    ;; EMACSDEBUG: <form>
+    ;;    Eval form, display result. Also used for setting breakpoint.
+
+    (goto-char (point-min))
+    (while (and (not skip-cmds)
+               (re-search-forward (concat comment-start "EMACS\\([^:]+\\):") 
nil t))
+      (cond
+       ((string= (match-string 1) "CMD")
+       (looking-at ".*$")
+       (save-excursion
+         (setq cmd-line (line-number-at-pos)
+               last-cmd (match-string 0)
+               last-result
+               (condition-case-unless-debug err
+                   (eval (car (read-from-string last-cmd)))
+                 (error
+                    (setq error-count (1+ error-count))
+                    (message "%s:%d: command: %s"
+                             (buffer-file-name) cmd-line last-cmd)
+                    (message "%s:%d: %s: %s"
+                             (buffer-file-name)
+                             (line-number-at-pos)
+                             (car err)
+                             (cdr err))))
+               )
+         ;; save-excursion does not preserve mapping of buffer to
+         ;; window, but some tests depend on that. For example,
+         ;; execute-kbd-macro doesn’t work properly if current buffer
+         ;; is not visible..
+         (pop-to-buffer test-buffer)))
+
+       ((string= (match-string 1) "RESULT")
+       (looking-at ".*$")
+       (setq expected-result (save-excursion (end-of-line 1) (eval (car 
(read-from-string (match-string 0))))))
+       (unless (equal expected-result last-result)
+         (when debug-on-error (debug))
+         (setq error-count (1+ error-count))
+         (message
+          (concat
+           (format "error: %s:%d:\n" (buffer-file-name) (line-number-at-pos))
+           (format "Result of '%s' does not match.\nGot    '%s',\nexpect '%s'"
+                   last-cmd
+                   last-result
+                   expected-result)
+           ))))
+
+       ((string= (match-string 1) "_SKIP_UNLESS")
+       (looking-at ".*$")
+       (unless (eval (car (read-from-string (match-string 0))))
+         (setq skip-cmds t)
+         (setq skip-reindent-test t)
+         (setq skip-recase-test t)
+         ;; We don’t set ‘skip-write’ t here, so the *.diff Make target 
succeeds.
+         ))
+
+       ((string= (match-string 1) "DEBUG")
+       (looking-at ".*$")
+       (message "DEBUG: %s:%d %s"
+                (current-buffer)
+                (line-number-at-pos)
+                (save-excursion
+                 (eval (car (read-from-string (match-string 0)))))))
+
+       (t
+       (setq error-count (1+ error-count))
+       (error (concat "Unexpected EMACS test command " (match-string 1))))))
+
+    (when (> error-count 0)
+      (error
+       "%s:%d: aborting due to previous errors (%d)"
+       (buffer-file-name) (line-number-at-pos (point)) error-count))
+    )
+
+  (when (not skip-reindent-test)
+    ;; Reindent the buffer
+    (message "indenting")
+
+    ;; first unindent; if the indentation rules do nothing, the test
+    ;; would pass, otherwise!  Only unindent by 1 column, so comments
+    ;; not currently in column 0 are still not in column 0, in case
+    ;; the mode supports a special case for comments in column 0.
+    (indent-rigidly (point-min) (point-max) -1)
+
+    ;; indent-region uses save-excursion, so we can't goto an error location
+    (indent-region (point-min) (point-max))
+
+    ;; Cleanup the buffer; indenting often leaves trailing whitespace;
+    ;; files must be saved without any.
+    (delete-trailing-whitespace)
+    )
+  )
+
+(defun run-test (file-name)
+  "Run an indentation and casing test on FILE-NAME."
+  (interactive "f")
+  ;; we'd like to run emacs from a makefile as:
+  ;;
+  ;; emacs -Q --batch -l runtest.el -f run-test-here <filename>
+  ;;
+  ;; However, the function specified with -f is run _before_
+  ;; <filename> is visited. So we try this instead:
+  ;;
+  ;; emacs -Q --batch -l runtest.el --eval '(run-test "<filename>")'
+  ;;
+  ;; And then we discover that processes spawned with start-process
+  ;; don't run when emacs is in --batch mode. So we try this:
+  ;;
+  ;; emacs -Q -l runtest.el --eval '(progn (run-test 
"<filename>")(kill-emacs))'
+  ;;
+  ;; Then we have problems with font lock defaulting to jit-lock; that
+  ;; screws up font-lock tests because the test runs before jit-lock
+  ;; does. This forces default font-lock, which fontifies the whole
+  ;; buffer when (font-lock-fontify-buffer) is called, which tests
+  ;; that rely on font-lock do explicitly.
+  (setq font-lock-support-mode nil)
+
+  (let ((dir default-directory))
+    (find-file file-name) ;; sets default-directory
+
+    (when (eq major-mode 'fundamental-mode)
+      ;; Running a grammar in test/wisi
+      (add-to-list 'load-path (expand-file-name "."))
+      (wisi-tests-setup (file-name-sans-extension (file-name-nondirectory 
file-name))))
+
+    (run-test-here)
+
+    (unless skip-write
+      ;; Write the result file; makefile will diff.
+      (when skip-reindent-test
+       ;; user sets skip-reindent-test when testing interactive editing
+       ;; commands, so the diff would fail. Revert to the original file,
+       ;; save a copy of that.
+       (revert-buffer t t))
+
+      (delete-trailing-whitespace)
+      (write-file (concat dir (file-name-nondirectory file-name) ".tmp")) )
+    )
+  )
+
+(provide 'wisi-run-indent-test)
+;; end of file
diff --git a/packages/wisi/wisi-tests.el b/packages/wisi/wisi-tests.el
index d1468ef..b730cf1 100644
--- a/packages/wisi/wisi-tests.el
+++ b/packages/wisi/wisi-tests.el
@@ -24,7 +24,7 @@
 (require 'cl-lib)
 (require 'wisi)
 
-(defvar wisi-test-parser 'elisp
+(defvar wisi-test-parser 'process
   "Set to ’process to test external process parser.")
 
 (defvar test-syntax-table
@@ -81,27 +81,6 @@
   (syntax-ppss-flush-cache (point-min));; force re-evaluate with hook.
 
   (cl-ecase wisi-test-parser
-    (elisp
-     (require 'wisi-elisp-parse)
-     (let* ((grammar-file-root (concat grammar-name "-lalr-elisp"))
-           (grammar-file-name (concat grammar-file-root ".el"))
-           (grammar-file-abs (locate-file grammar-file-name load-path)))
-       (unless grammar-file-abs
-        (error "can’t find ’%s’ on ’%s’" grammar-file-name load-path))
-       (require (intern grammar-file-root)))
-
-     (wisi-setup
-      :indent-calculate nil
-      :post-indent-fail nil
-      :parser (wisi-make-elisp-parser
-              (symbol-value (intern-soft (concat grammar-name 
"-lalr-elisp-parse-table")))
-              `wisi-forward-token)
-      :lexer (wisi-make-elisp-lexer
-             :token-table-raw (symbol-value (intern-soft (concat grammar-name 
"-lalr-elisp-token-table-raw")))
-             :keyword-table-raw (symbol-value (intern-soft (concat 
grammar-name "-lalr-elisp-keyword-table-raw")))
-             :string-quote-escape-doubled nil
-             :string-quote-escape nil)))
-
     (process
      (require 'wisi-process-parse)
      (require (intern (concat grammar-name "-process"))) ;; generated by 
wisi-generate
@@ -118,12 +97,7 @@
        :exec-file (concat grammar-name "_wisi_parse.exe")
        :face-table (symbol-value (intern-soft (concat grammar-name 
"-process-face-table")))
        :token-table (symbol-value (intern-soft (concat grammar-name 
"-process-token-table")))
-       ))
-      :lexer (wisi-make-elisp-lexer
-             :token-table-raw (symbol-value (intern-soft (concat grammar-name 
"-lalr-elisp-token-table-raw")))
-             :keyword-table-raw (symbol-value (intern-soft (concat 
grammar-name "-lalr-elisp-keyword-table-raw")))
-             :string-quote-escape-doubled nil
-             :string-quote-escape nil))
+       )))
      (setq wisi-mckenzie-disable nil)
      )
     )
diff --git a/packages/wisi/wisi.adb b/packages/wisi/wisi.adb
index b65bbee..1ba7a4f 100644
--- a/packages/wisi/wisi.adb
+++ b/packages/wisi/wisi.adb
@@ -19,23 +19,13 @@ pragma License (Modified_GPL);
 
 with Ada.Exceptions;
 with Ada.Strings.Bounded;
+with Ada.Strings.Unbounded;
 with Ada.Text_IO;
 with SAL;
 with WisiToken.Semantic_Checks;
 package body Wisi is
    use WisiToken;
 
-   Navigate_Cache_Code  : constant String := "1";
-   Face_Property_Code   : constant String := "2";
-   Indent_Code          : constant String := "3";
-   Lexer_Error_Code     : constant String := "4";
-   Parser_Error_Code    : constant String := "5";
-   Check_Error_Code     : constant String := "6";
-   Recover_Code         : constant String := "7 ";
-   End_Code             : constant String := "8";
-   Name_Property_Code   : constant String := "9";
-   Language_Action_Code : constant String := "10 ";
-
    Chars_Per_Int : constant Integer := Integer'Width;
 
    ----------
@@ -380,114 +370,133 @@ package body Wisi is
       Descriptor                    : in WisiToken.Descriptor;
       Embedded_Quote_Escape_Doubled : in Boolean)
    is
-      use Ada.Containers;
       use Ada.Strings.Unbounded;
       use Parse.LR;
+      use Parse.LR.Config_Op_Arrays, Parse.LR.Config_Op_Array_Refs;
+
+      --  Output is a sequence of edit regions; each is:
+      --  [edit-pos [inserted token-ids] [deleted token-ids] deleted-region]
+
+      type State_Label is
+        (None,     -- not started yet
+         Inserted, -- edit-pos, some insert ids appended
+         Deleted); -- some delete ids appended
+
+      State : State_Label := None;
+      --  State of the current edit region.
+
+      Line           : Unbounded_String := To_Unbounded_String ("[");
+      Deleted_Region : Buffer_Region    := Null_Buffer_Region;
+      Last_Deleted : Config_Op (Delete) := (Delete, Invalid_Token_ID, 
Invalid_Token_Index);
+
+      procedure Start_Edit_Region (Op : in Insert_Delete_Op)
+      is begin
+         Append (Line, "[");
+         Append (Line, Buffer_Pos'Image (Terminals 
(WisiToken.Parse.LR.Token_Index (Op)).Char_Region.First));
+         Append (Line, "[");
+      end Start_Edit_Region;
 
-      Line    : Unbounded_String := To_Unbounded_String ("[");
-      Last_Op : Config_Op        := (Fast_Forward, WisiToken.Token_Index'Last);
+      function Deleted_Region_Image return String
+      is begin
+         return "(" & Deleted_Region.First'Image & " . " & Buffer_Pos'Image 
(Deleted_Region.Last + 1) & ")";
+      end Deleted_Region_Image;
 
+      procedure Terminate_Edit_Region
+      is begin
+         case State is
+         when None =>
+            null;
+         when Inserted =>
+            Append (Line, "][]" & Deleted_Region_Image & "]");
+         when Deleted =>
+            Append (Line, "]" & Deleted_Region_Image & "]");
+         end case;
+         Deleted_Region := Null_Buffer_Region;
+      end Terminate_Edit_Region;
    begin
       if Trace_Action > Detail then
          Ada.Text_IO.Put_Line (";; " & Parse.LR.Image (Item.Ops, Descriptor));
       end if;
 
       Append (Line, Recover_Code);
-      if Item.Ops.Length = 0 then
-         Append (Line, "]");
+      for I in First_Index (Item.Ops) .. Last_Index (Item.Ops) loop
+         declare
+            Op : Config_Op renames Constant_Ref (Item.Ops, I);
+         begin
+            case Op.Op is
+            when Fast_Forward =>
+               Terminate_Edit_Region;
+               State := None;
 
-      else
-         for I in Item.Ops.First_Index .. Item.Ops.Last_Index loop
-            declare
-               Op : Config_Op renames Item.Ops (I);
-            begin
-               case Op.Op is
-               when Fast_Forward =>
-                  if Last_Op.Op in Insert then
-                     Append (Line, "][]]");
-                  elsif Last_Op.Op in Delete then
-                     Append (Line, "]]");
-                  end if;
+            when Undo_Reduce | Push_Back =>
+               null;
 
-                  Last_Op := Op;
+            when Insert =>
+               case State is
+               when None =>
+                  Start_Edit_Region (Op);
 
-               when Undo_Reduce | Push_Back =>
+               when Inserted =>
                   null;
 
-               when Insert =>
-                  if Last_Op.Op = Fast_Forward then
-                     Append (Line, "[");
-                     Append (Line, Buffer_Pos'Image (Terminals 
(Op.Ins_Token_Index).Char_Region.First));
-                     Append (Line, "[");
-
-                  elsif Last_Op.Op = Delete then
-                     Append (Line, "]][");
-                     Append (Line, Buffer_Pos'Image (Terminals 
(Op.Ins_Token_Index).Char_Region.First));
-                     Append (Line, "[");
+               when Deleted =>
+                  Terminate_Edit_Region;
+                  Start_Edit_Region (Op);
 
-                  else
-                     --  Last_Op.Op = Insert
-                     null;
-                  end if;
-                  Append (Line, Token_ID'Image (Op.Ins_ID));
-
-                  Last_Op := Op;
+               end case;
+               Append (Line, Token_ID'Image (Op.Ins_ID));
+               State := Inserted;
 
-               when Delete =>
-                  declare
-                     Skip : Boolean := False;
-                  begin
-                     if Last_Op.Op = Fast_Forward then
-                        Append (Line, "[");
-                        Append (Line, Buffer_Pos'Image (Terminals 
(Op.Del_Token_Index).Char_Region.First));
-                        Append (Line, "[][");
-
-                     elsif Last_Op.Op = Insert then
-                        Append (Line, "][");
-
-                     elsif Last_Op.Op = Delete then
-                        if Embedded_Quote_Escape_Doubled and then
-                          ((Last_Op.Del_ID = Descriptor.String_1_ID and 
Op.Del_ID = Descriptor.String_1_ID) or
-                             (Last_Op.Del_ID = Descriptor.String_2_ID and 
Op.Del_ID = Descriptor.String_2_ID))
-                        then
-                           declare
-                              Tok_1 : Augmented_Token renames Terminals 
(Last_Op.Del_Token_Index);
-                              Tok_2 : Augmented_Token renames Terminals 
(Op.Del_Token_Index);
-                           begin
-                              if Tok_1.Char_Region.Last + 1 = 
Tok_2.Char_Region.First then
-                                 --  Buffer text was '"""', lexer repair 
changed it to '""""'. The
-                                 --  repaired text looks like a single string 
with an embedded quote.
-                                 --  But here, it is two STRING_LITERAL 
tokens. Don't send the second
-                                 --  delete to elisp. See 
test/ada_mode-recover_string_quote_1.adb
-                                 Skip := True;
-                              end if;
-                           end;
-                        end if;
+            when Delete =>
+               Deleted_Region := Deleted_Region and Terminals 
(Op.Del_Token_Index).Char_Region;
+               declare
+                  Skip : Boolean := False;
+               begin
+                  case State is
+                  when None =>
+                     Start_Edit_Region (Op);
+                     Append (Line, "][");
 
-                     end if;
+                  when Inserted =>
+                     Append (Line, "][");
 
-                     if not Skip then
-                        Append (Line, Token_ID'Image (Op.Del_ID));
+                  when Deleted =>
+                     if Embedded_Quote_Escape_Doubled and then
+                       ((Last_Deleted.Del_ID = Descriptor.String_1_ID and 
Op.Del_ID = Descriptor.String_1_ID) or
+                          (Last_Deleted.Del_ID = Descriptor.String_2_ID and 
Op.Del_ID = Descriptor.String_2_ID))
+                     then
+                        declare
+                           Tok_1 : Augmented_Token renames Terminals 
(Last_Deleted.Del_Token_Index);
+                           Tok_2 : Augmented_Token renames Terminals 
(Op.Del_Token_Index);
+                        begin
+                           if Tok_1.Char_Region.Last + 1 = 
Tok_2.Char_Region.First then
+                              --  Buffer text was '"""', lexer repair changed 
it to '""""'. The
+                              --  repaired text looks like a single string 
with an embedded quote.
+                              --  But here, it is two STRING_LITERAL tokens. 
Don't send the second
+                              --  delete to elisp. See 
test/ada_mode-recover_string_quote_1.adb
+                              Skip := True;
+                           end if;
+                        end;
                      end if;
-                  end;
-                  Last_Op := Op;
-               end case;
-            end;
-         end loop;
-
-         case Last_Op.Op is
-         when Fast_Forward =>
-            Append (Line, "]");
+                  end case;
+                  State := Deleted;
 
-         when Undo_Reduce | Push_Back =>
-            null;
+                  if not Skip then
+                     Append (Line, Token_ID'Image (Op.Del_ID));
+                  end if;
+               end;
+               Last_Deleted := Op;
+            end case;
+         end;
+      end loop;
 
-         when Insert =>
-            Append (Line, "][]]]");
-         when Delete =>
-            Append (Line, "]]]");
-         end case;
-      end if;
+      case State is
+      when None =>
+         null;
+      when Inserted | Deleted =>
+         Terminate_Edit_Region;
+      end case;
+      Append (Line, "]");
       Ada.Text_IO.Put_Line (To_String (Line));
    end Put;
 
@@ -587,8 +596,9 @@ package body Wisi is
 
    procedure Initialize
      (Data              : in out Parse_Data_Type;
+      Lexer             : in     WisiToken.Lexer.Handle;
       Descriptor        : access constant WisiToken.Descriptor;
-      Source_File_Name  : in     String;
+      Base_Terminals    : in     Base_Token_Array_Access;
       Post_Parse_Action : in     Post_Parse_Action_Type;
       Begin_Line        : in     Line_Number_Type;
       End_Line          : in     Line_Number_Type;
@@ -606,8 +616,9 @@ package body Wisi is
         (First   => Begin_Line,
          Last    => End_Line + 1);
 
+      Data.Lexer             := Lexer;
       Data.Descriptor        := Descriptor;
-      Data.Source_File_Name  := +Source_File_Name;
+      Data.Base_Terminals    := Base_Terminals;
       Data.Post_Parse_Action := Post_Parse_Action;
 
       case Post_Parse_Action is
@@ -658,7 +669,7 @@ package body Wisi is
 
    function Source_File_Name (Data : in Parse_Data_Type) return String
    is begin
-      return -Data.Source_File_Name;
+      return Data.Lexer.File_Name;
    end Source_File_Name;
 
    function Post_Parse_Action (Data : in Parse_Data_Type) return 
Post_Parse_Action_Type
@@ -942,33 +953,30 @@ package body Wisi is
       Tokens  : in     Syntax_Trees.Valid_Node_Index_Array;
       Params  : in     Statement_Param_Array)
    is
-      First_Item         : Boolean        := True;
-      Start_Set          : Boolean        := False;
-      Override_Start_Set : Boolean        := False;
-      Containing_Pos     : Nil_Buffer_Pos := Nil; --  wisi first-keyword-pos
+      Nonterm_Tok        : constant Aug_Token_Ref := Get_Aug_Token (Data, 
Tree, Nonterm);
+      First_Item         : Boolean                := True;
+      Start_Set          : Boolean                := False;
+      Override_Start_Set : Boolean                := False;
+      Containing_Pos     : Nil_Buffer_Pos         := Nil;
    begin
       for Pair of Params loop
          if not (Pair.Index in Tokens'Range) then
-            declare
-               Nonterm_Tok : constant Aug_Token_Ref := Get_Aug_Token (Data, 
Tree, Nonterm);
-            begin
-               raise Fatal_Error with Error_Message
-                 (File_Name => -Data.Source_File_Name,
-                  Line      => Nonterm_Tok.Line,
-                  Column    => Nonterm_Tok.Column,
-                  Message   => "wisi-statement-action: " & Trimmed_Image 
(Tree.Production_ID (Nonterm)) &
-                    " token index" & SAL.Peek_Type'Image (Pair.Index) &
-                    " not in tokens range (" & SAL.Peek_Type'Image 
(Tokens'First) & " .." &
-                    SAL.Peek_Type'Image (Tokens'Last) & "); bad grammar 
action.");
-            end;
+            raise Fatal_Error with Error_Message
+              (File_Name => Data.Lexer.File_Name,
+               Line      => Nonterm_Tok.Line,
+               Column    => Nonterm_Tok.Column,
+               Message   => "wisi-statement-action: " & Trimmed_Image 
(Tree.Production_ID (Nonterm)) &
+                 " token index" & SAL.Peek_Type'Image (Pair.Index) &
+                 " not in tokens range (" & SAL.Peek_Type'Image (Tokens'First) 
& " .." &
+                 SAL.Peek_Type'Image (Tokens'Last) & "); bad grammar action.");
 
          elsif Tree.Byte_Region (Tokens (Pair.Index)) /= Null_Buffer_Region 
then
             declare
                use all type WisiToken.Syntax_Trees.Node_Label;
                Token  : constant Aug_Token_Ref :=
-                  (if Pair.Class = Statement_End and then
+                 (if Pair.Class = Statement_End and then
                     Tree.Label (Tokens (Pair.Index)) = 
WisiToken.Syntax_Trees.Nonterm
-                  then Data.Terminals.Variable_Ref (Tree.Max_Terminal_Index 
(Tokens (Pair.Index)))
+                  then To_Aug_Token_Ref (Data.Terminals 
(Tree.Max_Terminal_Index (Tokens (Pair.Index))))
                   else Get_Aug_Token (Data, Tree, Tokens (Pair.Index)));
 
                Cache_Pos : constant Buffer_Pos         := 
Token.Char_Region.First;
@@ -1014,6 +1022,28 @@ package body Wisi is
                   if Override_Start_Set or Pair.Class = Statement_Start then
                      Override_Start_Set := False;
                      Containing_Pos     := (True, Token.Char_Region.First);
+
+                     --  Set containing on all contained caches
+                     declare
+                        use Navigate_Cache_Trees;
+                        Iterator : constant Navigate_Cache_Trees.Iterator := 
Data.Navigate_Caches.Iterate;
+                        Cursor   : Navigate_Cache_Trees.Cursor            := 
Find_In_Range
+                          (Iterator, Ascending, Nonterm_Tok.Char_Region.First 
+ 1, -- don't set containing on start
+                           Nonterm_Tok.Char_Region.Last);
+                     begin
+                        loop
+                           exit when not Has_Element (Cursor);
+                           declare
+                              Cache : Navigate_Cache_Type renames 
Data.Navigate_Caches (Cursor);
+                           begin
+                              if not Cache.Containing_Pos.Set then
+                                 Cache.Containing_Pos := Containing_Pos;
+                              end if;
+                              exit when Nonterm_Tok.Char_Region.Last < 
Cache.Pos + 1;
+                           end;
+                           Cursor := Iterator.Next (Cursor);
+                        end loop;
+                     end;
                   end if;
                end if;
 
@@ -1045,7 +1075,7 @@ package body Wisi is
             Token : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tokens (Tokens'First));
          begin
             raise Fatal_Error with Error_Message
-              (File_Name => -Data.Source_File_Name,
+              (File_Name => Data.Lexer.File_Name,
                Line      => Token.Line,
                Column    => Token.Column,
                Message   => "wisi-name-action: " & Trimmed_Image 
(Tree.Production_ID (Nonterm)) & " name (" &
@@ -1069,7 +1099,7 @@ package body Wisi is
             return;
          elsif Has_Element (Cursor) then
             raise Fatal_Error with Error_Message
-              (File_Name => -Data.Source_File_Name,
+              (File_Name => Data.Lexer.File_Name,
                Line      => Name_Token.Line,
                Column    => Name_Token.Column,
                Message   => "wisi-name-action: name set twice.");
@@ -1079,112 +1109,6 @@ package body Wisi is
       end;
    end Name_Action;
 
-   procedure Containing_Action
-     (Data       : in out Parse_Data_Type;
-      Tree       : in     Syntax_Trees.Tree;
-      Nonterm    : in     Syntax_Trees.Valid_Node_Index;
-      Tokens     : in     Syntax_Trees.Valid_Node_Index_Array;
-      Containing : in     Positive_Index_Type;
-      Contained  : in     Positive_Index_Type)
-   is
-      use all type Syntax_Trees.Node_Label;
-      pragma Unreferenced (Nonterm);
-
-      --  [2] wisi-containing-action.
-      --
-      --  Compute as much as possible with virtual tokens; see
-      --  test/format_paramlist.adb
-   begin
-      if Tree.Label (Tokens (Containing)) = Syntax_Trees.Virtual_Terminal or
-        Tree.Label (Tokens (Contained)) = Syntax_Trees.Virtual_Terminal
-      then
-         return;
-      end if;
-
-      declare
-         use Navigate_Cache_Trees;
-         Containing_Tok    : constant Aug_Token_Ref := Get_Aug_Token (Data, 
Tree, Tokens (Containing));
-         Containing_Region : Buffer_Region renames Containing_Tok.Char_Region;
-         Contained_Tok     : constant Aug_Token_Ref := Get_Aug_Token (Data, 
Tree, Tokens (Contained));
-         Contained_Region  : Buffer_Region renames Contained_Tok.Char_Region;
-         Iterator          : constant Navigate_Cache_Trees.Iterator := 
Data.Navigate_Caches.Iterate;
-         Cursor            : Navigate_Cache_Trees.Cursor;
-         Mark              : constant Buffer_Pos                    := 
Containing_Region.First;
-      begin
-         if Containing_Region = Null_Buffer_Region then
-            if Tree.Is_Virtual (Tokens (Containing)) then
-               return;
-            else
-               raise Fatal_Error with Error_Message
-                 (File_Name => -Data.Source_File_Name,
-                  Line      => Containing_Tok.Line,
-                  Column    => Containing_Tok.Column,
-                  Message   => "wisi-containing-action: containing-region " &
-                    Image (Containing_Tok.ID, Data.Descriptor.all) &
-                    " is empty. grammar error; bad action.");
-            end if;
-         end if;
-
-         if not Data.Navigate_Caches.Present (Containing_Region.First) then
-            raise Fatal_Error with Error_Message
-              (File_Name => -Data.Source_File_Name,
-               Line      => Containing_Tok.Line,
-               Column    => Containing_Tok.Column,
-               Message   => "wisi-containing-action: containing token " &
-                 Image (Containing_Tok.ID, Data.Descriptor.all) &
-                 " has no cache. grammar error; missing action.");
-         end if;
-
-         if Contained_Tok.Char_Region /= Null_Buffer_Region then
-            --  Contained region is nil in an empty production.
-            Cursor := Previous (Iterator, Contained_Tok.Char_Region.Last);
-
-            while Has_Element (Cursor) loop
-               declare
-                  Cache : Navigate_Cache_Type renames Variable_Ref 
(Data.Navigate_Caches, Cursor).Element.all;
-               begin
-
-                  exit when Cache.Pos < Contained_Region.First or
-                    (Containing_Region.First = Contained_Region.First and
-                       Cache.Pos <= Contained_Region.First);
-
-                  --  Skip blocks that are already marked.
-
-                  if Cache.Containing_Pos.Set then
-                     Cursor := Find (Iterator, Cache.Containing_Pos.Item, 
Direction => Descending);
-                  else
-                     Cache.Containing_Pos := (True, Mark);
-                     Cursor := Previous (Iterator, Cursor);
-                  end if;
-
-               end;
-            end loop;
-         end if;
-      end;
-   end Containing_Action;
-
-   function "+" (Item : in Token_ID) return Token_ID_Lists.List
-   is begin
-      return Result : Token_ID_Lists.List do
-         Result.Append (Item);
-      end return;
-   end "+";
-
-   function "&" (List : in Token_ID_Lists.List; Item : in Token_ID) return 
Token_ID_Lists.List
-   is begin
-      return Result : Token_ID_Lists.List := List do
-         Result.Append (Item);
-      end return;
-   end "&";
-
-   function "&" (Left, Right : in Token_ID) return Token_ID_Lists.List
-   is begin
-      return Result : Token_ID_Lists.List do
-         Result.Append (Left);
-         Result.Append (Right);
-      end return;
-   end "&";
-
    procedure Motion_Action
      (Data    : in out Parse_Data_Type;
       Tree    : in     Syntax_Trees.Tree;
@@ -1194,50 +1118,64 @@ package body Wisi is
    is
       --  [2] wisi-motion-action
       use Navigate_Cache_Trees;
-      use all type Ada.Containers.Count_Type;
-
-      Start             : Nil_Buffer_Pos := (Set => False);
-      Prev_Keyword_Mark : Nil_Buffer_Pos := (Set => False);
-      Iter              : constant Iterator := Data.Navigate_Caches.Iterate;
-      Prev_Cache_Cur    : Cursor;
-      Cache_Cur         : Cursor;
-      Point             : Buffer_Pos;
-
-      function Match (IDs : in Token_ID_Lists.List) return Boolean
-      is
-         Cache : Navigate_Cache_Type renames Constant_Ref 
(Data.Navigate_Caches, Cache_Cur).Element.all;
-      begin
-         --  [2] wisi-elisp-parse--match-token
-         if (Start.Set and then Point = Start.Item) or else
-           Cache.Containing_Pos = Start
-         then
-            for ID of IDs loop
-               if ID = Cache.ID then
-                  return True;
-               end if;
-            end loop;
-         end if;
-         return False;
-      end Match;
 
+      Start          : Nil_Buffer_Pos    := (Set => False);
+      Iter           : constant Iterator := Data.Navigate_Caches.Iterate;
+      Prev_Cache_Cur : Cursor;
+      Cache_Cur      : Cursor;
    begin
+      if WisiToken.Trace_Action > Outline then
+         Ada.Text_IO.Put_Line
+           ("Motion_Action " & Image (Tree.ID (Nonterm), Data.Descriptor.all) 
& " " &
+              Image (Tree.Byte_Region (Nonterm)));
+      end if;
       for Param of Params loop
          if Tree.Byte_Region (Tokens (Param.Index)) /= Null_Buffer_Region then
             declare
+               use all type WisiToken.Syntax_Trees.Node_Label;
                Token  : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tokens (Param.Index));
                Region : constant Buffer_Region := Token.Char_Region;
+               Skip   : Boolean                := False;
             begin
                if not Start.Set then
                   Start := (True, Region.First);
                end if;
 
-               Cache_Cur := Find (Iter, Region.First, Direction => Ascending);
-               if not Has_Element (Cache_Cur) then
-                  if Tree.Is_Virtual (Tokens (Param.Index)) then
-                     return;
+               case Tree.Label (Tokens (Param.Index)) is
+               when Shared_Terminal =>
+                  Cache_Cur := Find (Iter, Region.First);
+               when Virtual_Terminal | Virtual_Identifier =>
+                  return;
+
+               when Syntax_Trees.Nonterm =>
+                  if Param.ID = Invalid_Token_ID then
+                     Cache_Cur := Find (Iter, Region.First);
+
                   else
+                     Skip      := True;
+                     Cache_Cur := Find_In_Range (Iter, Ascending, 
Region.First, Region.Last);
+                     loop
+                        exit when not Has_Element (Cache_Cur);
+                        if Data.Navigate_Caches (Cache_Cur).Pos > Region.Last 
then
+                           Cache_Cur := No_Element;
+                           exit;
+
+                        elsif Data.Navigate_Caches (Cache_Cur).ID = Param.ID 
and
+                          not Data.Navigate_Caches (Cache_Cur).Prev_Pos.Set
+                        then
+                           Skip := False;
+                           exit;
+                        end if;
+
+                        Cache_Cur := Next (Iter, Cache_Cur);
+                     end loop;
+                  end if;
+               end case;
+
+               if not Skip then
+                  if not Has_Element (Cache_Cur) then
                      raise Fatal_Error with Error_Message
-                       (File_Name => -Data.Source_File_Name,
+                       (File_Name => Data.Lexer.File_Name,
                         Line      => Token.Line,
                         Column    => Token.Column,
                         Message   => "wisi-motion-action: token " &
@@ -1245,42 +1183,38 @@ package body Wisi is
                           " has no cache; add to statement-action for " &
                           Trimmed_Image (Tree.Production_ID (Nonterm)) & ".");
                   end if;
-               end if;
-
-               if Param.IDs.Length = 0 then
-                  if Prev_Keyword_Mark.Set then
-                     Variable_Ref (Data.Navigate_Caches, 
Cache_Cur).Element.Prev_Pos      := Prev_Keyword_Mark;
-                     Variable_Ref (Data.Navigate_Caches, 
Prev_Cache_Cur).Element.Next_Pos := (True, Region.First);
-                  end if;
 
-                  Prev_Keyword_Mark := (True, Region.First);
-                  Prev_Cache_Cur    := Cache_Cur;
+                  if Has_Element (Prev_Cache_Cur) then
+                     declare
+                        Cache      : Navigate_Cache_Type renames 
Data.Navigate_Caches (Cache_Cur);
+                        Prev_Cache : Navigate_Cache_Type renames 
Data.Navigate_Caches (Prev_Cache_Cur);
+                     begin
+                        if not Cache.Prev_Pos.Set then
+                           Cache.Prev_Pos := (True, Prev_Cache.Pos);
+                           if WisiToken.Trace_Action > Detail then
+                              Ada.Text_IO.Put_Line ("   " & Cache.Pos'Image & 
" prev to " & Cache.Prev_Pos.Item'Image);
+                           end if;
+                        end if;
 
-               else
-                  Point := Region.First;
-                  loop
-                     exit when Point >= Region.Last;
-                     if Match (Param.IDs) then
-                        if Prev_Keyword_Mark.Set then
-                           if not Constant_Ref (Data.Navigate_Caches, 
Cache_Cur).Element.Prev_Pos.Set and
-                             not Constant_Ref (Data.Navigate_Caches, 
Prev_Cache_Cur).Element.Next_Pos.Set
-                           then
-                              Variable_Ref (Data.Navigate_Caches, 
Cache_Cur).Element.Prev_Pos      := Prev_Keyword_Mark;
-                              Variable_Ref (Data.Navigate_Caches, 
Prev_Cache_Cur).Element.Next_Pos := (True, Point);
-                              Prev_Keyword_Mark := (True, Point);
-                              Prev_Cache_Cur    := Cache_Cur;
+                        if not Prev_Cache.Next_Pos.Set then
+                           Prev_Cache.Next_Pos := (True, Cache.Pos);
+                           if WisiToken.Trace_Action > Detail then
+                              Ada.Text_IO.Put_Line
+                                ("   " & Prev_Cache.Pos'Image & " next to " & 
Prev_Cache.Next_Pos.Item'Image);
                            end if;
-                        else
-                           Prev_Keyword_Mark := (True, Point);
-                           Prev_Cache_Cur    := Cache_Cur;
                         end if;
-                     end if;
+                     end;
+                  end if;
+
+                  loop
+                     --  Set Prev_Cache_Cur to last motion cache in nonterm 
chain
+                     exit when not Data.Navigate_Caches 
(Cache_Cur).Next_Pos.Set;
 
-                     Cache_Cur := Next (Iter, Cache_Cur);
-                     exit when Cache_Cur = No_Element;
+                     Cache_Cur := Find (Iter, Data.Navigate_Caches 
(Cache_Cur).Next_Pos.Item);
+                     pragma Assert (Has_Element (Cache_Cur)); --  otherwise 
there's a bug in this subprogram.
 
-                     Point := Constant_Ref (Data.Navigate_Caches, 
Cache_Cur).Element.Pos;
                   end loop;
+                  Prev_Cache_Cur := Cache_Cur;
                end if;
             end;
          end if;
@@ -1296,7 +1230,6 @@ package body Wisi is
    is
       pragma Unreferenced (Nonterm);
 
-      --  [2] wisi-face-apply-action
       use Face_Cache_Trees;
 
       Iter       : constant Iterator := Data.Face_Caches.Iterate;
@@ -1311,7 +1244,7 @@ package body Wisi is
                Cache_Cur := Find (Iter, Token.Char_Region.First, Direction => 
Ascending);
                if Has_Element (Cache_Cur) then
                   declare
-                     Cache : Face_Cache_Type renames Variable_Ref 
(Data.Face_Caches, Cache_Cur).Element.all;
+                     Cache : Face_Cache_Type renames Data.Face_Caches 
(Cache_Cur);
                   begin
                      case Cache.Class is
                      when Prefix =>
@@ -1321,8 +1254,7 @@ package body Wisi is
                         Suffix_Cur := Next (Iter, Cache_Cur);
                         if Has_Element (Suffix_Cur) then
                            declare
-                              Suf_Cache : Face_Cache_Type renames Variable_Ref
-                                (Data.Face_Caches, Suffix_Cur).Element.all;
+                              Suf_Cache : Face_Cache_Type renames 
Data.Face_Caches (Suffix_Cur);
                            begin
                               if Suffix = Suf_Cache.Class and
                                 Inside (Suf_Cache.Region.First, 
Token.Char_Region)
@@ -1367,9 +1299,9 @@ package body Wisi is
                Cache_Cur := Find_In_Range (Iter, Ascending, 
Token.Char_Region.First, Token.Char_Region.Last);
                loop
                   exit when not Has_Element (Cache_Cur) or else
-                    Constant_Ref (Data.Face_Caches, 
Cache_Cur).Element.Region.First > Token.Char_Region.Last;
+                    Data.Face_Caches (Cache_Cur).Region.First > 
Token.Char_Region.Last;
                   declare
-                     Cache : Face_Cache_Type renames Variable_Ref 
(Data.Face_Caches, Cache_Cur).Element.all;
+                     Cache : Face_Cache_Type renames Data.Face_Caches 
(Cache_Cur);
                   begin
                      case Cache.Class is
                      when Prefix =>
@@ -1395,7 +1327,6 @@ package body Wisi is
    is
       pragma Unreferenced (Nonterm);
 
-      --  [2] wisi-face-apply-action
       use Face_Cache_Trees;
 
       Iter      : constant Iterator := Data.Face_Caches.Iterate;
@@ -1409,14 +1340,14 @@ package body Wisi is
                Cache_Cur := Find (Iter, Token.Char_Region.First, Direction => 
Ascending);
                if Has_Element (Cache_Cur) then
                   declare
-                     Cache : Face_Cache_Type renames Variable_Ref 
(Data.Face_Caches, Cache_Cur).Element.all;
+                     Cache : Face_Cache_Type renames Data.Face_Caches 
(Cache_Cur);
                      Other_Cur : Cursor := Find_In_Range
                        (Iter, Ascending, Cache.Region.Last + 1, 
Token.Char_Region.Last);
                      Temp : Cursor;
                   begin
                      loop
                         exit when not Has_Element (Other_Cur) or else
-                          Constant_Ref (Data.Face_Caches, 
Other_Cur).Element.Region.First > Token.Char_Region.Last;
+                          Data.Face_Caches (Other_Cur).Region.First > 
Token.Char_Region.Last;
                         Temp := Other_Cur;
                         Other_Cur := Next (Iter, Other_Cur);
                         Delete (Data.Face_Caches, Temp);
@@ -1457,7 +1388,7 @@ package body Wisi is
                Cache_Cur := Find_In_Range (Iter, Ascending, 
Token.Char_Region.First, Token.Char_Region.Last);
                loop
                   exit when not Has_Element (Cache_Cur) or else
-                    Constant_Ref (Data.Face_Caches, 
Cache_Cur).Element.Region.First > Token.Char_Region.Last;
+                    Data.Face_Caches (Cache_Cur).Region.First > 
Token.Char_Region.Last;
                   Temp := Cache_Cur;
                   Cache_Cur := Next (Iter, Cache_Cur);
                   Delete (Data.Face_Caches, Temp);
@@ -1614,7 +1545,6 @@ package body Wisi is
    is
       Indenting_Token : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tree_Indenting);
    begin
-      --  [2] wisi-elisp-parse--hanging-1
       if Indenting_Comment then
          return Indent_Compute_Delta
            (Data, Tree, Tokens, (Simple, Delta_1), Tree_Indenting, 
Indenting_Comment);
@@ -1822,7 +1752,6 @@ package body Wisi is
       Put (Lexer_Errors);
 
       for Item of Parse_Errors loop
-         --  We don't include parser id here; not very useful.
          case Item.Label is
          when Parse.LR.Action =>
             Put_Line
@@ -1857,7 +1786,7 @@ package body Wisi is
    is
       use Ada.Text_IO;
    begin
-      Put_Line ("(error """ & Error_Message (-Data.Source_File_Name, 
Line_Number, 0, Message) & """)");
+      Put_Line ("(error """ & Error_Message (Data.Lexer.File_Name, 
Line_Number, 0, Message) & """)");
    end Put_Error;
 
    ----------
@@ -1934,12 +1863,46 @@ package body Wisi is
    begin
       return
         (case Tree.Label (Tree_Index) is
-         when Shared_Terminal => Data.Terminals.Variable_Ref (Tree.Terminal 
(Tree_Index)),
+         when Shared_Terminal => To_Aug_Token_Ref (Data.Terminals 
(Tree.Terminal (Tree_Index))),
          when Virtual_Terminal => raise SAL.Programmer_Error with 
"wisi_runtime.get_aug_token virtual terminal",
          when Virtual_Identifier => raise SAL.Programmer_Error with 
"wisi_runtime.get_aug_token virtual identifier",
-         when Nonterm => (Element => Augmented_Token_Access (Tree.Augmented 
(Tree_Index))));
+         when Nonterm => To_Aug_Token_Ref (Tree.Augmented (Tree_Index)));
    end Get_Aug_Token;
 
+   function Get_Text
+     (Data       : in Parse_Data_Type;
+      Tree       : in WisiToken.Syntax_Trees.Tree;
+      Tree_Index : in WisiToken.Syntax_Trees.Valid_Node_Index)
+     return String
+   is
+      use all type Syntax_Trees.Node_Label;
+   begin
+      case Tree.Label (Tree_Index) is
+      when Shared_Terminal | Nonterm =>
+         return Data.Lexer.Buffer_Text (Tree.Byte_Region (Tree_Index));
+
+      when Virtual_Terminal | Virtual_Identifier =>
+         raise SAL.Programmer_Error;
+
+      end case;
+   end Get_Text;
+
+   function Elisp_Escape_Quotes (Item : in String) return String
+   is
+      Result : String (Item'First .. Item'First + Item'Length * 2);
+      Last   : Integer := Item'First - 1;
+   begin
+      for I in Item'Range loop
+         if Item (I) = '"' then
+            Last := Last + 1;
+            Result (Last) := '\';
+         end if;
+         Last := Last + 1;
+         Result (Last) := Item (I);
+      end loop;
+      return Result (Result'First .. Last);
+   end Elisp_Escape_Quotes;
+
    overriding
    function Image
      (Item       : in Augmented_Token;
@@ -1960,25 +1923,6 @@ package body Wisi is
       end if;
    end Image;
 
-   function Image
-     (Item       : in Augmented_Token_Access_Array;
-      Descriptor : in WisiToken.Descriptor)
-     return String
-   is
-      use all type SAL.Base_Peek_Type;
-      use Ada.Strings.Unbounded;
-      Result : Unbounded_String := +"(";
-   begin
-      for I in Item'Range loop
-         Result := Result & Image (Item (I).all, Descriptor);
-         if I /= Item'Last then
-            Result := Result & ", ";
-         end if;
-      end loop;
-      Result := Result & ")";
-      return -Result;
-   end Image;
-
    function Indent_Anchored_2
      (Data        : in out Parse_Data_Type;
       Anchor_Line : in     Line_Number_Type;
diff --git a/packages/wisi/wisi.ads b/packages/wisi/wisi.ads
index 818a7cc..d240f0a 100644
--- a/packages/wisi/wisi.ads
+++ b/packages/wisi/wisi.ads
@@ -4,9 +4,9 @@
 --
 --  References
 --
---  [1] wisi.el - defines parse action functions.
+--  [1] wisi-parse-common.el - defines common stuff.
 --
---  [2] wisi-elisp-parse.el - defines parse action functions.
+--  [2] wisi.texi - defines parse action functions.
 --
 --  [3] wisi-process-parse.el - defines elisp/process API
 --
@@ -27,8 +27,6 @@ pragma License (Modified_GPL);
 
 with Ada.Containers.Doubly_Linked_Lists;
 with Ada.Containers.Vectors;
-with Ada.Strings.Unbounded;
-with Ada.Unchecked_Deallocation;
 with SAL.Gen_Unbounded_Definite_Red_Black_Trees;
 with SAL.Gen_Unbounded_Definite_Vectors;
 with WisiToken.Parse.LR;
@@ -45,8 +43,9 @@ package Wisi is
 
    procedure Initialize
      (Data              : in out Parse_Data_Type;
+      Lexer             : in     WisiToken.Lexer.Handle;
       Descriptor        : access constant WisiToken.Descriptor;
-      Source_File_Name  : in     String;
+      Base_Terminals    : in     WisiToken.Base_Token_Array_Access;
       Post_Parse_Action : in     Post_Parse_Action_Type;
       Begin_Line        : in     WisiToken.Line_Number_Type;
       End_Line          : in     WisiToken.Line_Number_Type;
@@ -95,6 +94,7 @@ package Wisi is
       Nonterm : in     WisiToken.Syntax_Trees.Valid_Node_Index;
       Tokens  : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
       Params  : in     Statement_Param_Array);
+   --  Implements [2] wisi-statement-action.
 
    procedure Name_Action
      (Data    : in out Parse_Data_Type;
@@ -102,31 +102,27 @@ package Wisi is
       Nonterm : in     WisiToken.Syntax_Trees.Valid_Node_Index;
       Tokens  : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
       Name    : in     WisiToken.Positive_Index_Type);
+   --  Implements [2] wisi-name-action.
 
-   procedure Containing_Action
-     (Data       : in out Parse_Data_Type;
-      Tree       : in     WisiToken.Syntax_Trees.Tree;
-      Nonterm    : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-      Tokens     : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
-      Containing : in     WisiToken.Positive_Index_Type;
-      Contained  : in     WisiToken.Positive_Index_Type);
-
-   package Token_ID_Lists is new Ada.Containers.Doubly_Linked_Lists 
(WisiToken.Token_ID, WisiToken."=");
-
-   Empty_IDs : constant Token_ID_Lists.List := Token_ID_Lists.Empty_List;
-
-   function "+" (Item : in WisiToken.Token_ID) return Token_ID_Lists.List;
-   function "&" (List : in Token_ID_Lists.List; Item : in WisiToken.Token_ID) 
return Token_ID_Lists.List;
-   function "&" (Left, Right : in WisiToken.Token_ID) return 
Token_ID_Lists.List;
-
-   type Index_IDs is record
+   type Index_ID is record
       Index : WisiToken.Positive_Index_Type; -- into Tokens
-      IDs   : Token_ID_Lists.List;
+      ID    : WisiToken.Token_ID;
+      --  If ID is not Invalid_Token_ID, it is the first token in the
+      --  nonterm that Index points to that should have a navigate cache for
+      --  Motion_Action to link to; an error is reported by Motion_Action if
+      --  it does not.
+      --
+      --  If ID is Invalid_Token_ID, and the token at Index is a
+      --  nonterminal, the first token in that nonterminal must have a
+      --  navigate cache; an error is reported by Motion_Action if not.
    end record;
 
-   package Index_IDs_Vectors is new Ada.Containers.Vectors 
(Ada.Containers.Count_Type, Index_IDs);
+   package Index_ID_Vectors is new Ada.Containers.Vectors 
(Ada.Containers.Count_Type, Index_ID);
+
+   subtype Motion_Param_Array is Index_ID_Vectors.Vector;
 
-   subtype Motion_Param_Array is Index_IDs_Vectors.Vector;
+   Invalid_Token_ID : WisiToken.Token_ID := WisiToken.Invalid_Token_ID;
+   --  So Create_Parser can just use "Invalid_Token_ID".
 
    procedure Motion_Action
      (Data    : in out Parse_Data_Type;
@@ -161,7 +157,6 @@ package Wisi is
    --  Implements [2] wisi-face-apply-list-action.
 
    type Face_Class_Type is (Prefix, Suffix);
-   --  Matches wisi-cache-class values set in [1] wisi-face-apply-action.
 
    type Index_Face_Class is record
       Index : WisiToken.Positive_Index_Type; -- into Tokens
@@ -320,10 +315,19 @@ package Wisi is
       Option            : in     Boolean;
       Accumulate        : in     Boolean)
      return Delta_Type;
-   --  [2] wisi-elisp-parse--hanging-1
+   --  Implements [2] wisi-hanging, wisi-hanging%, wisi-hanging%-.
    --
-   --  Language specific child packages override this to implement
-   --  wisi-elisp-parse-indent-hanging-function.
+   --  Language specific child packages may override this to implement
+   --  language-specific cases.
+
+   ----------
+   --  Other
+
+   procedure Refactor
+     (Data       : in out Parse_Data_Type;
+      Tree       : in     WisiToken.Syntax_Trees.Tree;
+      Action     : in     Positive;
+      Edit_Begin : in     WisiToken.Buffer_Pos) is null;
 
    type Arg_Index_Array is array (Positive range <>) of 
WisiToken.Positive_Index_Type;
 
@@ -411,6 +415,13 @@ private
       --  nonterminals, empty.
 
    end record;
+   type Augmented_Token_Access is access all Augmented_Token;
+   type Augmented_Token_Access_Constant is access constant Augmented_Token;
+   type Aug_Token_Ref (Element : access constant Augmented_Token) is null 
record with
+     Implicit_Dereference => Element;
+
+   function To_Aug_Token_Ref (Item : in WisiToken.Base_Token_Class_Access) 
return Aug_Token_Ref
+     is (Element => Augmented_Token_Access_Constant (Item));
 
    overriding
    function Image
@@ -429,21 +440,13 @@ private
      return WisiToken.Line_Number_Type;
    --  Return first and last line in Token's region.
 
-   type Augmented_Token_Access is access all Augmented_Token;
-   procedure Free is new Ada.Unchecked_Deallocation (Augmented_Token, 
Augmented_Token_Access);
-
-   type Augmented_Token_Access_Array is array (WisiToken.Positive_Index_Type 
range <>) of Augmented_Token_Access;
-   --  1 indexed to match token numbers in grammar actions.
-
-   function Image
-     (Item       : in Augmented_Token_Access_Array;
-      Descriptor : in WisiToken.Descriptor)
-     return String;
-
    package Augmented_Token_Arrays is new SAL.Gen_Unbounded_Definite_Vectors
      (WisiToken.Token_Index, Augmented_Token, Default_Element => (others => 
<>));
    --  Index matches Base_Token_Arrays.
 
+   function To_Aug_Token_Ref (Item : in 
Augmented_Token_Arrays.Constant_Reference_Type) return Aug_Token_Ref
+     is (Element => 
Augmented_Token_Access_Constant'(Item.Element.all'Unchecked_Access));
+
    package Line_Paren_Vectors is new SAL.Gen_Unbounded_Definite_Vectors
      (WisiToken.Line_Number_Type, Integer, Default_Element => Integer'Last);
    package Line_Begin_Pos_Vectors is new SAL.Gen_Unbounded_Definite_Vectors
@@ -498,7 +501,7 @@ private
 
    type Face_Cache_Type is record
       Region : WisiToken.Buffer_Region;
-      Class  : Face_Class_Type; -- wisi-cache-class; one of {'prefix | 'suffix}
+      Class  : Face_Class_Type;
       Face   : Nil_Integer;     -- not set, or index into *-process-faces-names
    end record;
 
@@ -579,8 +582,9 @@ private
 
       --  Data for post-parse actions
 
+      Lexer             : WisiToken.Lexer.Handle;
       Descriptor        : access constant WisiToken.Descriptor;
-      Source_File_Name  : Ada.Strings.Unbounded.Unbounded_String;
+      Base_Terminals    : WisiToken.Base_Token_Array_Access;
       Post_Parse_Action : Post_Parse_Action_Type;
       Navigate_Caches   : Navigate_Cache_Trees.Tree;  -- Set by Navigate.
       Name_Caches       : Name_Cache_Trees.Tree;      -- Set by Navigate.
@@ -659,8 +663,6 @@ private
    ----------
    --  Utilities for language-specific child packages
 
-   subtype Aug_Token_Ref is Augmented_Token_Arrays.Variable_Reference_Type;
-
    function Current_Indent_Offset
      (Data         : in Parse_Data_Type;
       Anchor_Token : in Augmented_Token'Class;
@@ -684,6 +686,17 @@ private
       Tree_Index : in WisiToken.Syntax_Trees.Valid_Node_Index)
      return Aug_Token_Ref;
 
+   function Get_Text
+     (Data       : in Parse_Data_Type;
+      Tree       : in WisiToken.Syntax_Trees.Tree;
+      Tree_Index : in WisiToken.Syntax_Trees.Valid_Node_Index)
+     return String;
+   --  Return text contained by Tree_Index token in source file
+   --  (lexer.buffer).
+
+   function Elisp_Escape_Quotes (Item : in String) return String;
+   --  Prefix any '"' in Item with '\' for elisp.
+
    function Indent_Anchored_2
      (Data        : in out Parse_Data_Type;
       Anchor_Line : in     WisiToken.Line_Number_Type;
@@ -710,4 +723,18 @@ private
    --  [2] wisi-elisp-parse--indent-token-1. Sets Data.Indents, so caller
    --  may not be in a renames for a Data.Indents element.
 
+   --  Visible for language-specific children. Must match list in
+   --  wisi-process-parse.el wisi-process-parse--execute.
+   Navigate_Cache_Code  : constant String := "1";
+   Face_Property_Code   : constant String := "2";
+   Indent_Code          : constant String := "3";
+   Lexer_Error_Code     : constant String := "4";
+   Parser_Error_Code    : constant String := "5";
+   Check_Error_Code     : constant String := "6";
+   Recover_Code         : constant String := "7 ";
+   End_Code             : constant String := "8";
+   Name_Property_Code   : constant String := "9";
+   Edit_Action_Code     : constant String := "10";
+   Language_Action_Code : constant String := "11 ";
+
 end Wisi;
diff --git a/packages/wisi/wisi.el b/packages/wisi/wisi.el
index 5ea8d5a..3500f91 100644
--- a/packages/wisi/wisi.el
+++ b/packages/wisi/wisi.el
@@ -7,8 +7,8 @@
 ;; Keywords: parser
 ;;  indentation
 ;;  navigation
-;; Version: 2.1.1
-;; package-requires: ((cl-lib "1.0") (emacs "25.0") (seq "2.20"))
+;; Version: 2.2.0
+;; package-requires: ((emacs "25.0") (seq "2.20"))
 ;; URL: http://stephe-leake.org/ada/wisitoken.html
 ;;
 ;; This file is part of GNU Emacs.
@@ -98,22 +98,10 @@
 ;;   than we need. Finally, the semantic parser does not support error
 ;;   correction, and thus fails in most editing situations.
 ;;
-;; We use wisitoken wisi-generate to compile BNF to Elisp source, and
-;; wisi-compile-grammar to compile that to the parser table. See
-;; ada-mode info for more information on the developer tools used for
-;; ada-mode and wisi.
+;; We use the WisiToken tool wisi-bnf-generate to compile BNF or EBNF
+;; to Ada source, See ada-mode.info and wisi.info for more information
+;; on the developer tools used for ada-mode and wisi.
 ;;
-;; Alternately, to gain speed and error handling, we use wisi-generate
-;; to generate Ada source, and run that in an external process. That
-;; supports error correction while parsing.
-;;
-;;;; syntax-propertize
-;;
-;; `wisi-forward-token' relies on syntax properties, so
-;; `syntax-propertize' must be called on the text to be lexed before
-;; wisi-forward-token is called. Emacs >= 25 calls syntax-propertize
-;; transparently in the low-level lexer functions.
-
 ;;; Code:
 
 (require 'cl-lib)
@@ -121,7 +109,6 @@
 (require 'seq)
 (require 'semantic/lex)
 (require 'wisi-parse-common)
-(require 'wisi-elisp-lexer)
 (require 'wisi-fringe)
 (require 'xref)
 
@@ -132,19 +119,13 @@
   :safe 'integerp)
 (make-variable-buffer-local 'wisi-size-threshold)
 
-(defcustom wisi-partial-parse-threshold 100001
-  "Minimum size that will be parsed by each call to the parser.
-A parse is always requested at a point (or on a region); the
-point is first expanded to a start point before the region and an
-end point after the region, that the parser can gracefully
-handle. If the final region covers the entire buffer, a complete
-parse is done. Indent assumes the start point of the parse region
-is properly indented. Most navigate parses ignore this setting
-and parse the whole buffer."
+(defcustom wisi-indent-context-lines 0
+  "Minimum number of lines before point to include in a parse for indent.
+Increasing this will give better results when in the middle of a
+deeply nested statement, but worse in some situations."
   :type 'integer
   :group 'wisi
   :safe 'integerp)
-(make-variable-buffer-local 'wisi-partial-parse-threshold)
 
 (defvar wisi-inhibit-parse nil
   "When non-nil, don't run the parser.
@@ -175,14 +156,14 @@ Useful when debugging parser or parser actions."
 ;;;; token info cache
 
 (defvar-local wisi-parse-failed nil
-  "Non-nil when a recent parse has failed - cleared when parse succeeds.")
+  "Non-nil when last parse failed - cleared when parse succeeds.")
 
 (defvar-local wisi--parse-try
   (list
    (cons 'face t)
    (cons 'navigate t)
    (cons 'indent t))
-  "Non-nil when parse is needed - cleared when parse succeeds.")
+  "Non-nil when parse is needed because text has changed - cleared when parse 
succeeds.")
 
 (defun wisi-parse-try (&optional parse-action)
   (cdr (assoc (or parse-action wisi--parse-action) wisi--parse-try)))
@@ -190,6 +171,19 @@ Useful when debugging parser or parser actions."
 (defun wisi-set-parse-try (value &optional parse-action)
   (setcdr (assoc (or parse-action wisi--parse-action) wisi--parse-try) value))
 
+(defvar-local wisi--last-parse-region
+  (list
+   (cons 'face nil)
+   (cons 'navigate nil)
+   (cons 'indent nil))
+  "Last region on which parse was requested.")
+
+(defun wisi-last-parse-region (&optional parse-action)
+  (cdr (assoc (or parse-action wisi--parse-action) wisi--last-parse-region)))
+
+(defun wisi-set-last-parse-region (begin end parse-action)
+  (setcdr (assoc parse-action wisi--last-parse-region) (cons begin end)))
+
 (defvar-local wisi--cached-regions
   (list
    (cons 'face nil)
@@ -366,6 +360,9 @@ Truncate any region that overlaps POS."
   (wisi-set-parse-try t 'indent)
   (wisi-set-parse-try t 'face)
   (wisi-set-parse-try t 'navigate)
+  (wisi-set-last-parse-region (point-min) (point-min) 'indent)
+  (wisi-set-last-parse-region (point-min) (point-min) 'face)
+  (wisi-set-last-parse-region (point-min) (point-min) 'navigate)
   (wisi-fringe-clean))
 
 ;; wisi--change-* keep track of buffer modifications.
@@ -390,11 +387,8 @@ Set by `wisi-before-change', used and reset by 
`wisi--post-change'.")
   "Non-nil when `wisi-indent-region' is actively indenting.
 Used to ignore whitespace changes in before/after change hooks.")
 
-(defvar-local wisi--parser nil
-  "Choice of wisi parser implementation; a ‘wisi-parser’ object.")
-
 (defvar-local wisi--last-parse-action nil
-  "Last value of `wisi--parse-action' when `wisi-validate-cache' was run.")
+  "Value of `wisi--parse-action' when `wisi-validate-cache' was last run.")
 
 (defun wisi-before-change (begin end)
   "For `before-change-functions'."
@@ -707,6 +701,7 @@ Usefull if the parser appears to be hung."
        (message msg))
 
       (setq wisi--last-parse-action wisi--parse-action)
+      (wisi-set-last-parse-region begin parse-end wisi--parse-action)
 
       (unless (eq wisi--parse-action 'face)
        (when (buffer-live-p wisi-error-buffer)
@@ -792,24 +787,31 @@ Usefull if the parser appears to be hung."
       (let ((wisi--parse-action parse-action))
        (wisi--check-change)
 
-       ;; Now we can rely on wisi-cache-covers-region
-
-       (if (and (or (not wisi-parse-failed)
-                    (wisi-parse-try))
-               (not (wisi-cache-covers-region begin end)))
-           (progn
-             ;; Don't keep retrying failed parse until text changes again.
-             (wisi-set-parse-try nil)
-             (wisi--run-parse begin end))
-
+       ;; Now we can rely on wisi-cache-covers-region.
+       ;;
+       ;; If the last parse failed but was partial, and we are trying
+       ;; a different region, it may succeed. Otherwise, don't keep
+       ;; retrying a failed parse until the text changes again.
+       (cond
+        ((and (not wisi-parse-failed)
+              (wisi-cache-covers-region begin end))
          (when (> wisi-debug 0)
-           (message "parse %s skipped: parse-failed %s parse-try %s 
cache-covers-region %s %s.%s"
+           (message "parse %s skipped: cache-covers-region %s %s.%s"
                     parse-action
-                    wisi-parse-failed
-                    (wisi-parse-try)
                     (wisi-cache-covers-region begin end)
                     begin end)))
 
+        ((and wisi-parse-failed
+              (equal (cons begin end) (wisi-last-parse-region parse-action))
+              (not (wisi-parse-try parse-action)))
+         (when (> wisi-debug 0)
+           (message "parse %s skipped: parse-failed" parse-action)))
+
+        (t
+         (progn
+           (wisi-set-parse-try nil)
+           (wisi--run-parse begin end))))
+
        ;; We want this error even if we did not try to parse; it means
        ;; the parse results are not valid.
        (when (and error-on-fail wisi-parse-failed)
@@ -851,29 +853,6 @@ If LIMIT (a buffer position) is reached, throw an error."
        (error "cache with class %s not found" class)))
     cache))
 
-(defun wisi-forward-find-token (token limit &optional noerror)
-  "Search forward for TOKEN.
-If point is at a matching token, return that token.  TOKEN may be
-a list; stop on any member of the list.  Return `wisi-tok'
-struct, or if LIMIT (a buffer position) is reached, then if
-NOERROR is nil, throw an error, if non-nil, return nil."
-  (let ((token-list (cond
-                    ((listp token) token)
-                    (t (list token))))
-       (tok (wisi-forward-token))
-       (done nil))
-    (while (not (or done
-                   (memq (wisi-tok-token tok) token-list)))
-      (setq tok (wisi-forward-token))
-      (when (or (>= (point) limit)
-               (eobp))
-       (goto-char limit)
-       (setq tok nil)
-       (if noerror
-           (setq done t)
-         (error "token %s not found" token))))
-    tok))
-
 (defun wisi-forward-find-cache-token (ids limit)
   "Search forward for a cache with token in IDS (a list of token ids).
 Return cache, or nil if at LIMIT or end of buffer."
@@ -1201,7 +1180,6 @@ If INDENT-BLANK-LINES is non-nil, also indent blank lines 
(for use as
                   (wisi-parse-try 'indent)))
 
       (wisi-set-parse-try nil)
-
       (wisi--run-parse begin end)
 
       ;; If there were errors corrected, the indentation is
@@ -1270,7 +1248,7 @@ If INDENT-BLANK-LINES is non-nil, also indent blank lines 
(for use as
     (when (>= (point) savep)
       (setq to-indent t))
 
-    (wisi-indent-region (line-beginning-position) (line-end-position) t)
+    (wisi-indent-region (line-beginning-position (- 
wisi-indent-context-lines)) (1+ (line-end-position)) t)
 
     (goto-char savep)
     (when to-indent (back-to-indentation))
@@ -1278,24 +1256,18 @@ If INDENT-BLANK-LINES is non-nil, also indent blank 
lines (for use as
 
 (defun wisi-repair-error-1 (data)
   "Repair error reported in DATA (a ’wisi--parse-error’ or 
’wisi--lexer-error’)"
-  (let ((wisi--parse-action 'navigate) ;; tell wisi-forward-token not to 
compute indent stuff.
-       tok-2)
+  (let ((wisi--parse-action 'navigate))
     (cond
      ((wisi--lexer-error-p data)
       (goto-char (1+ (wisi--lexer-error-pos data)))
       (insert (wisi--lexer-error-inserted data)))
      ((wisi--parse-error-p data)
       (dolist (repair (wisi--parse-error-repair data))
-       (goto-char (wisi--parse-error-repair-pos repair))
-       (dolist (tok-1 (wisi--parse-error-repair-deleted repair))
-         (setq tok-2 (wisi-forward-token))
-         (if (eq tok-1 (wisi-tok-token tok-2))
-             (delete-region (car (wisi-tok-region tok-2)) (cdr 
(wisi-tok-region tok-2)))
-           (error "mismatched tokens: %d: parser %s, buffer %s %s"
-                  (point) tok-1 (wisi-tok-token tok-2) (wisi-tok-region 
tok-2))))
-
+       (when (< 0 (length (wisi--parse-error-repair-deleted repair)))
+         (delete-region (car (wisi--parse-error-repair-deleted-region repair))
+                        (cdr (wisi--parse-error-repair-deleted-region 
repair))))
        (dolist (id (wisi--parse-error-repair-inserted repair))
-         (insert (cdr (assoc id (wisi-elisp-lexer-id-alist wisi--lexer))))
+         (insert (cdr (assoc id (wisi-parser-repair-image wisi--parser))))
          (insert " "))
        ))
      )))
@@ -1467,10 +1439,6 @@ If non-nil, only repair errors in BEG END region."
   (define-key global-map "\M-j" 'wisi-show-cache)
   )
 
-(defun wisi-read-parse-action ()
-  "Read a parse action symbol from the minibuffer."
-  (intern-soft (completing-read "parse action (indent): " '(face navigate 
indent) nil t nil nil 'indent)))
-
 (defun wisi-parse-buffer (&optional parse-action begin end)
   (interactive)
   (unless parse-action
@@ -1587,13 +1555,12 @@ If non-nil, only repair errors in BEG END region."
 
 ;;;;; setup
 
-(cl-defun wisi-setup (&key indent-calculate post-indent-fail parser lexer)
+(cl-defun wisi-setup (&key indent-calculate post-indent-fail parser)
   "Set up a buffer for parsing files with wisi."
   (when wisi--parser
     (wisi-kill-parser))
 
   (setq wisi--parser parser)
-  (setq wisi--lexer lexer)
   (setq wisi--cached-regions
        (list
         (cons 'face nil)
@@ -1606,6 +1573,12 @@ If non-nil, only repair errors in BEG END region."
         (cons 'navigate t)
         (cons 'indent t)))
 
+  (setq wisi--last-parse-region
+       (list
+        (cons 'face nil)
+        (cons 'navigate nil)
+        (cons 'indent nil)))
+
   ;; file local variables may have added opentoken, gnatprep
   (setq wisi-indent-calculate-functions (append 
wisi-indent-calculate-functions indent-calculate))
   (set (make-local-variable 'indent-line-function) #'wisi-indent-line)
diff --git a/packages/wisi/wisitoken.gpr b/packages/wisi/wisi.gpr
similarity index 57%
rename from packages/wisi/wisitoken.gpr
rename to packages/wisi/wisi.gpr
index 2b0064d..8ca2dd2 100644
--- a/packages/wisi/wisitoken.gpr
+++ b/packages/wisi/wisi.gpr
@@ -1,8 +1,8 @@
 --  Abstract :
 --
---  Provide SAL and WisiToken to other ELPA packages
+--  Make installed ELPA package wisi Ada code available for other projects.
 --
---  Copyright (C) 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2017, 2019 Free Software Foundation, Inc.
 --
 --  This program is free software; you can redistribute it and/or
 --  modify it under terms of the GNU General Public License as
@@ -18,12 +18,10 @@
 
 with "gnatcoll";
 with "standard_common";
-project WisiToken is
+project Wisi is
 
    for Source_Dirs use (".");
 
-   for Languages use ("Ada", "C");
-
    case Standard_Common.Profile is
    when "On" =>
       for Object_Dir use "obj_pro";
@@ -34,39 +32,28 @@ project WisiToken is
       for Exec_Dir use ".";
    end case;
 
+   for Languages use ("Ada");
+
    package Compiler is
+
       case Standard_Common.Build is
       when "Debug" =>
          for Default_Switches ("Ada") use
-           Standard_Common.Compiler.Debug_Switches &
-           Standard_Common.Compiler.Style_Checks;
+           Standard_Common.Compiler.Common_Switches &
+           Standard_Common.Compiler.Style_Checks &
+           Standard_Common.Compiler.Debug_Switches;
+
+         for Default_Switches ("C") use 
Standard_Common.Compiler.Debug_Switches_C;
 
       when "Normal" =>
          for Default_Switches ("Ada") use
-           Standard_Common.Compiler.Release_Switches &
-           Standard_Common.Compiler.Style_Checks;
-      end case;
-
-   end Compiler;
-
-   package Builder is
-      for Switches ("Ada") use Standard_Common.Builder'Default_Switches 
("Ada");
-
-      --  We use ".exe" extension even on non-Windows, to simplify the 
makefiles.
-      for Executable_Suffix use ".exe";
+           Standard_Common.Compiler.Common_Switches &
+           Standard_Common.Compiler.Style_Checks &
+           Standard_Common.Compiler.Release_Switches;
 
-      case Standard_Common.Profile is
-      when "On" =>
-         for Global_Compilation_Switches ("Ada") use ("-pg");
-
-      when "Off" =>
-         null;
+         for Default_Switches ("C") use 
Standard_Common.Compiler.Release_Switches_C;
       end case;
 
-   end Builder;
-
-   package Binder is
-      for Default_Switches ("Ada") use Standard_Common.Binder'Default_Switches 
("Ada");
-   end Binder;
+   end Compiler;
 
-end WisiToken;
+end Wisi;
diff --git a/packages/wisi/wisitoken-bnf-generate.adb 
b/packages/wisi/wisitoken-bnf-generate.adb
index ca98c75..72a0221 100644
--- a/packages/wisi/wisitoken-bnf-generate.adb
+++ b/packages/wisi/wisitoken-bnf-generate.adb
@@ -1,6 +1,6 @@
 --  Abstract :
 --
---  Parser for Wisi grammar files, producing Ada or Elisp source
+--  Parser for Wisi grammar files, producing Ada source
 --  files for a parser.
 --
 --  Copyright (C) 2012 - 2015, 2017 - 2019 Free Software Foundation, Inc.
@@ -32,7 +32,6 @@ with WisiToken.BNF.Generate_Utils;
 with WisiToken.BNF.Output_Ada;
 with WisiToken.BNF.Output_Ada_Common;
 with WisiToken.BNF.Output_Ada_Emacs;
-with WisiToken.BNF.Output_Elisp;
 with WisiToken.BNF.Output_Elisp_Common;
 with WisiToken.Generate.LR.LALR_Generate;
 with WisiToken.Generate.LR.LR1_Generate;
@@ -53,8 +52,8 @@ is
    begin
       --  verbosity meaning is actually determined by output choice;
       --  they should be consistent with this description.
-      Put_Line (Standard_Error, "version 1.2.0");
-      Put_Line (Standard_Error, "wisi-generate [options] {wisi grammar file}");
+      Put_Line (Standard_Error, "version 1.3.0");
+      Put_Line (Standard_Error, "wisitoken-bnf-generate [options] {wisi 
grammar file}");
       Put_Line (Standard_Error, "Generate source code implementing a parser 
for the grammar.");
       New_Line (Standard_Error);
       Put_Line (Standard_Error, "The following grammar file directives control 
parser generation:");
@@ -131,7 +130,6 @@ is
 
    Trace          : aliased WisiToken.Text_IO_Trace.Trace 
(Wisitoken_Grammar_Actions.Descriptor'Access);
    Input_Data     : aliased WisiToken_Grammar_Runtime.User_Data_Type;
-   Elisp_Tokens   : WisiToken.BNF.Tokens;
    Grammar_Parser : WisiToken.Parse.LR.Parser_No_Recover.Parser;
 
    Do_Time : Boolean := False;
@@ -421,12 +419,6 @@ begin
                when re2c_Lexer =>
                   WisiToken.BNF.Output_Ada_Common.Create_re2c
                     (Input_Data, Tuple, Generate_Data, -Output_File_Name_Root);
-                  if Tuple.Out_Lang = Ada_Emacs_Lang and 
Elisp_Tokens.Keywords.Is_Empty then
-                     --  elisp code needs keywords for font-lock.
-                     Elisp_Tokens.Keywords := Input_Data.Tokens.Keywords;
-                  end if;
-               when Elisp_Lexer =>
-                  Elisp_Tokens := Input_Data.Tokens;
                when others =>
                   null;
                end case;
@@ -474,7 +466,6 @@ begin
 
                Generate_Data.Parser_State_Count :=
                  Generate_Data.LR_Parse_Table.State_Last - 
Generate_Data.LR_Parse_Table.State_First + 1;
-               WisiToken.BNF.Generate_Utils.Count_Actions (Generate_Data);
                WisiToken.BNF.Generate_Utils.Put_Stats (Input_Data, 
Generate_Data);
 
             when LR1 =>
@@ -502,7 +493,6 @@ begin
 
                Generate_Data.Parser_State_Count :=
                  Generate_Data.LR_Parse_Table.State_Last - 
Generate_Data.LR_Parse_Table.State_First + 1;
-               WisiToken.BNF.Generate_Utils.Count_Actions (Generate_Data);
                WisiToken.BNF.Generate_Utils.Put_Stats (Input_Data, 
Generate_Data);
 
             when Packrat_Generate_Algorithm =>
@@ -558,12 +548,9 @@ begin
 
                when Ada_Emacs_Lang =>
                   WisiToken.BNF.Output_Ada_Emacs
-                    (Input_Data, Elisp_Tokens, -Output_File_Name_Root, 
Generate_Data, Packrat_Data, Tuple,
+                    (Input_Data, -Output_File_Name_Root, Generate_Data, 
Packrat_Data, Tuple,
                      Test_Main, Multiple_Tuples, -Language_Name);
 
-               when Elisp_Lang =>
-                  WisiToken.BNF.Output_Elisp (Input_Data, 
-Output_File_Name_Root, Generate_Data, Packrat_Data, Tuple);
-
                end case;
                if WisiToken.Generate.Error then
                   raise WisiToken.Grammar_Error with "errors: aborting";
diff --git a/packages/wisi/wisitoken-bnf-generate_grammar.adb 
b/packages/wisi/wisitoken-bnf-generate_grammar.adb
index 165f00f..cd165c4 100644
--- a/packages/wisi/wisitoken-bnf-generate_grammar.adb
+++ b/packages/wisi/wisitoken-bnf-generate_grammar.adb
@@ -2,7 +2,7 @@
 --
 --  Output Ada source code to recreate Grammar.
 --
---  Copyright (C) 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
 --
 --  This library is free software;  you can redistribute it and/or modify it
 --  under terms of the  GNU General Public License  as published by the Free
@@ -31,8 +31,9 @@ is
    Text : Unbounded_String;
    Need_Comma : Boolean := False;
 begin
-   Indent_Line ("Grammar.Set_First (" & Trimmed_Image (Grammar.First_Index) & 
");");
-   Indent_Line ("Grammar.Set_Last (" & Trimmed_Image (Grammar.Last_Index) & 
");");
+   Indent_Line
+     ("Grammar.Set_First_Last (" & Trimmed_Image (Grammar.First_Index) & ", " &
+        Trimmed_Image (Grammar.Last_Index) & ");");
 
    for Prod of Grammar loop
       Indent_Line ("declare");
@@ -40,8 +41,7 @@ begin
       Indent_Line ("begin");
       Indent := Indent + 3;
       Indent_Line ("Prod.LHS := " & Trimmed_Image (Prod.LHS) & ";");
-      Indent_Line ("Prod.RHSs.Set_First (0);");
-      Indent_Line ("Prod.RHSs.Set_Last (" & Trimmed_Image 
(Prod.RHSs.Last_Index) & ");");
+      Indent_Line ("Prod.RHSs.Set_First_Last (0, " & Trimmed_Image 
(Prod.RHSs.Last_Index) & ");");
       for RHS_Index in Prod.RHSs.First_Index .. Prod.RHSs.Last_Index loop
          declare
             RHS : Right_Hand_Side renames Prod.RHSs (RHS_Index);
@@ -51,8 +51,8 @@ begin
             Indent_Line ("begin");
             Indent := Indent + 3;
             if RHS.Tokens.Length > 0 then
-               Indent_Line ("RHS.Tokens.Set_First (1);");
-               Indent_Line ("RHS.Tokens.Set_Last (" & Trimmed_Image (Prod.RHSs 
(RHS_Index).Tokens.Last_Index) & ");");
+               Indent_Line
+                 ("RHS.Tokens.Set_First_Last (1, " & Trimmed_Image (Prod.RHSs 
(RHS_Index).Tokens.Last_Index) & ");");
 
                if RHS.Tokens.Length = 1 then
                   Indent_Line ("To_Vector ((1 => " & Trimmed_Image (RHS.Tokens 
(1)) & "), RHS.Tokens);");
diff --git a/packages/wisi/wisitoken-bnf-generate_utils.adb 
b/packages/wisi/wisitoken-bnf-generate_utils.adb
index 0f84547..65f64e6 100644
--- a/packages/wisi/wisitoken-bnf-generate_utils.adb
+++ b/packages/wisi/wisitoken-bnf-generate_utils.adb
@@ -50,34 +50,13 @@ package body WisiToken.BNF.Generate_Utils is
       --   This function is used to compute Descriptor.Image
       case Cursor.Kind is
       when Non_Grammar_Kind =>
-         declare
-            Kind_Ref : constant 
WisiToken.BNF.Token_Lists.Constant_Reference_Type :=
-              WisiToken.BNF.Token_Lists.Constant_Reference 
(Cursor.Data.Tokens.Non_Grammar, Cursor.Token_Kind);
-
-            Item_Ref : constant String_Pair_Lists.Constant_Reference_Type :=
-              String_Pair_Lists.Constant_Reference (Kind_Ref.Element.Tokens, 
Cursor.Token_Item);
-         begin
-            return -Item_Ref.Element.Name;
-         end;
+         return -Cursor.Data.Tokens.Non_Grammar (Cursor.Token_Kind).Tokens 
(Cursor.Token_Item).Name;
 
       when Terminals_Keywords =>
-         declare
-            Keyword_Ref : constant String_Pair_Lists.Constant_Reference_Type :=
-              String_Pair_Lists.Constant_Reference 
(Cursor.Data.Tokens.Keywords, Cursor.Keyword);
-         begin
-            return -Keyword_Ref.Element.Name;
-         end;
+         return -Cursor.Data.Tokens.Keywords (Cursor.Keyword).Name;
 
       when Terminals_Others =>
-         declare
-            Kind_Ref : constant 
WisiToken.BNF.Token_Lists.Constant_Reference_Type :=
-              WisiToken.BNF.Token_Lists.Constant_Reference 
(Cursor.Data.Tokens.Tokens, Cursor.Token_Kind);
-
-            Item_Ref : constant String_Pair_Lists.Constant_Reference_Type :=
-              String_Pair_Lists.Constant_Reference (Kind_Ref.Element.Tokens, 
Cursor.Token_Item);
-         begin
-            return -Item_Ref.Element.Name;
-         end;
+         return -Cursor.Data.Tokens.Tokens (Cursor.Token_Kind).Tokens 
(Cursor.Token_Item).Name;
 
       when EOI =>
          return EOI_Name;
@@ -86,12 +65,7 @@ package body WisiToken.BNF.Generate_Utils is
          return WisiToken_Accept_Name;
 
       when Nonterminal =>
-         declare
-            Rule_Ref : constant Rule_Lists.Constant_Reference_Type := 
Rule_Lists.Constant_Reference
-              (Cursor.Data.Tokens.Rules, Cursor.Nonterminal);
-         begin
-            return -Rule_Ref.Element.Left_Hand_Side;
-         end;
+         return -Cursor.Data.Tokens.Rules (Cursor.Nonterminal).Left_Hand_Side;
 
       when Done =>
          raise SAL.Programmer_Error with "token cursor is done";
@@ -106,10 +80,8 @@ package body WisiToken.BNF.Generate_Utils is
       use WisiToken.Wisi_Ada;
       Descriptor : WisiToken.Descriptor renames Data.Descriptor.all;
    begin
-      Data.Grammar.Set_First (Descriptor.First_Nonterminal);
-      Data.Grammar.Set_Last (Descriptor.Last_Nonterminal);
-      Data.Source_Line_Map.Set_First (Descriptor.First_Nonterminal);
-      Data.Source_Line_Map.Set_Last (Descriptor.Last_Nonterminal);
+      Data.Grammar.Set_First_Last (Descriptor.First_Nonterminal, 
Descriptor.Last_Nonterminal);
+      Data.Source_Line_Map.Set_First_Last (Descriptor.First_Nonterminal, 
Descriptor.Last_Nonterminal);
 
       Data.Action_Names := new Names_Array_Array (Descriptor.First_Nonterminal 
.. Descriptor.Last_Nonterminal);
       Data.Check_Names  := new Names_Array_Array (Descriptor.First_Nonterminal 
.. Descriptor.Last_Nonterminal);
@@ -121,8 +93,7 @@ package body WisiToken.BNF.Generate_Utils is
              (Find_Token_ID (Data, Start_Token) & Descriptor.EOI_ID + 
WisiToken.Syntax_Trees.Null_Action);
 
          Data.Source_Line_Map (Descriptor.Accept_ID).Line := 
Line_Number_Type'First;
-         Data.Source_Line_Map (Descriptor.Accept_ID).RHS_Map.Set_First (0);
-         Data.Source_Line_Map (Descriptor.Accept_ID).RHS_Map.Set_Last (0);
+         Data.Source_Line_Map (Descriptor.Accept_ID).RHS_Map.Set_First_Last 
(0, 0);
          Data.Source_Line_Map (Descriptor.Accept_ID).RHS_Map (0) := 
Line_Number_Type'First;
       exception
       when Not_Found =>
@@ -144,12 +115,10 @@ package body WisiToken.BNF.Generate_Utils is
          begin
             LHS := Find_Token_ID (Data, -Rule.Left_Hand_Side);
 
-            RHSs.Set_First (RHS_Index);
-            RHSs.Set_Last (Natural (Rule.Right_Hand_Sides.Length) - 1);
+            RHSs.Set_First_Last (RHS_Index, Natural 
(Rule.Right_Hand_Sides.Length) - 1);
 
             Data.Source_Line_Map (LHS).Line := Rule.Source_Line;
-            Data.Source_Line_Map (LHS).RHS_Map.Set_First (RHSs.First_Index);
-            Data.Source_Line_Map (LHS).RHS_Map.Set_Last (RHSs.Last_Index);
+            Data.Source_Line_Map (LHS).RHS_Map.Set_First_Last 
(RHSs.First_Index, RHSs.Last_Index);
 
             for Right_Hand_Side of Rule.Right_Hand_Sides loop
                declare
@@ -159,8 +128,7 @@ package body WisiToken.BNF.Generate_Utils is
                   I      : Integer := 1;
                begin
                   if Right_Hand_Side.Tokens.Length > 0 then
-                     Tokens.Set_First (I);
-                     Tokens.Set_Last (Integer (Right_Hand_Side.Tokens.Length));
+                     Tokens.Set_First_Last (I, Integer 
(Right_Hand_Side.Tokens.Length));
                      for Token of Right_Hand_Side.Tokens loop
                         Tokens (I) := Find_Token_ID (Data, -Token.Identifier);
                         I := I + 1;
@@ -296,34 +264,14 @@ package body WisiToken.BNF.Generate_Utils is
    is begin
       case Cursor.Kind is
       when Non_Grammar_Kind =>
-         declare
-            Token_Ref : constant 
WisiToken.BNF.Token_Lists.Constant_Reference_Type :=
-              WisiToken.BNF.Token_Lists.Constant_Reference 
(Container.Data.Tokens.Non_Grammar, Cursor.Token_Kind);
-
-            Item_Ref : constant String_Pair_Lists.Constant_Reference_Type :=
-              String_Pair_Lists.Constant_Reference (Token_Ref.Element.Tokens, 
Cursor.Token_Item);
-         begin
-            return (Element => Item_Ref.Element.all.Name'Access);
-         end;
+         return
+           (Element => Container.Data.Tokens.Non_Grammar 
(Cursor.Token_Kind).Tokens (Cursor.Token_Item).Name'Access);
 
       when Terminals_Keywords =>
-         declare
-            Keyword_Ref : constant String_Pair_Lists.Constant_Reference_Type :=
-              String_Pair_Lists.Constant_Reference 
(Container.Data.Tokens.Keywords, Cursor.Keyword);
-         begin
-            return (Element => Keyword_Ref.Element.all.Name'Access);
-         end;
+         return (Element => Container.Data.Tokens.Keywords 
(Cursor.Keyword).Name'Access);
 
       when Terminals_Others =>
-         declare
-            Token_Ref : constant 
WisiToken.BNF.Token_Lists.Constant_Reference_Type :=
-              WisiToken.BNF.Token_Lists.Constant_Reference 
(Container.Data.Tokens.Tokens, Cursor.Token_Kind);
-
-            Item_Ref : constant String_Pair_Lists.Constant_Reference_Type :=
-              String_Pair_Lists.Constant_Reference (Token_Ref.Element.Tokens, 
Cursor.Token_Item);
-         begin
-            return (Element => Item_Ref.Element.all.Name'Access);
-         end;
+         return (Element => Container.Data.Tokens.Tokens 
(Cursor.Token_Kind).Tokens (Cursor.Token_Item).Name'Access);
 
       when EOI =>
          return (Element => Aliased_EOI_Name'Access);
@@ -332,12 +280,7 @@ package body WisiToken.BNF.Generate_Utils is
          return (Element => Aliased_WisiToken_Accept_Name'Access);
 
       when Nonterminal =>
-         declare
-            Rule_Ref : constant Rule_Lists.Constant_Reference_Type := 
Rule_Lists.Constant_Reference
-              (Container.Data.Tokens.Rules, Cursor.Nonterminal);
-         begin
-            return (Element => Rule_Ref.Element.all.Left_Hand_Side'Access);
-         end;
+         return (Element => Container.Data.Tokens.Rules 
(Cursor.Nonterminal).Left_Hand_Side'Access);
 
       when Done =>
          raise SAL.Programmer_Error with "token cursor is done";
@@ -391,7 +334,7 @@ package body WisiToken.BNF.Generate_Utils is
             Kind        => Terminals_Keywords,
             ID          => Cursor.Data.Descriptor.First_Terminal,
             Token_Kind  => WisiToken.BNF.Token_Lists.No_Element,
-            Token_Item  => String_Pair_Lists.No_Element,
+            Token_Item  => String_Triple_Lists.No_Element,
             Keyword     => Cursor.Data.Tokens.Keywords.First,
             Nonterminal => Rule_Lists.No_Element);
 
@@ -404,13 +347,13 @@ package body WisiToken.BNF.Generate_Utils is
             Kind        => Terminals_Others,
             ID          => Cursor.ID,
             Token_Kind  => Cursor.Data.Tokens.Tokens.First,
-            Token_Item  => String_Pair_Lists.No_Element,
+            Token_Item  => String_Triple_Lists.No_Element,
             Keyword     => String_Pair_Lists.No_Element,
             Nonterminal => Rule_Lists.No_Element);
 
          if WisiToken.BNF.Token_Lists.Has_Element (Cursor.Token_Kind) then
             Cursor.Token_Item := Cursor.Data.Tokens.Tokens 
(Cursor.Token_Kind).Tokens.First;
-            return WisiToken.BNF.String_Pair_Lists.Has_Element 
(Cursor.Token_Item);
+            return WisiToken.BNF.String_Triple_Lists.Has_Element 
(Cursor.Token_Item);
          else
             return False;
          end if;
@@ -422,7 +365,7 @@ package body WisiToken.BNF.Generate_Utils is
             Kind        => EOI,
             ID          => Cursor.ID,
             Token_Kind  => WisiToken.BNF.Token_Lists.No_Element,
-            Token_Item  => String_Pair_Lists.No_Element,
+            Token_Item  => String_Triple_Lists.No_Element,
             Keyword     => String_Pair_Lists.No_Element,
             Nonterminal => Rule_Lists.No_Element);
 
@@ -436,7 +379,7 @@ package body WisiToken.BNF.Generate_Utils is
                   Kind        => WisiToken_Accept,
                   ID          => Cursor.ID,
                   Token_Kind  => WisiToken.BNF.Token_Lists.No_Element,
-                  Token_Item  => String_Pair_Lists.No_Element,
+                  Token_Item  => String_Triple_Lists.No_Element,
                   Keyword     => String_Pair_Lists.No_Element,
                   Nonterminal => Rule_Lists.No_Element);
             else
@@ -455,7 +398,7 @@ package body WisiToken.BNF.Generate_Utils is
             Kind        => Nonterminal,
             ID          => Cursor.ID,
             Token_Kind  => WisiToken.BNF.Token_Lists.No_Element,
-            Token_Item  => String_Pair_Lists.No_Element,
+            Token_Item  => String_Triple_Lists.No_Element,
             Keyword     => String_Pair_Lists.No_Element,
             Nonterminal => Cursor.Data.Tokens.Rules.First);
 
@@ -482,14 +425,14 @@ package body WisiToken.BNF.Generate_Utils is
          Kind        => Non_Grammar_Kind,
          ID          => Token_ID'First,
          Token_Kind  => Data.Tokens.Non_Grammar.First,
-         Token_Item  => String_Pair_Lists.No_Element,
+         Token_Item  => String_Triple_Lists.No_Element,
          Keyword     => String_Pair_Lists.No_Element,
          Nonterminal => Rule_Lists.No_Element);
    begin
       if Non_Grammar then
          if WisiToken.BNF.Token_Lists.Has_Element (Cursor.Token_Kind) then
             Cursor.Token_Item := Cursor.Data.Tokens.Non_Grammar 
(Cursor.Token_Kind).Tokens.First;
-            if WisiToken.BNF.String_Pair_Lists.Has_Element (Cursor.Token_Item) 
then
+            if WisiToken.BNF.String_Triple_Lists.Has_Element 
(Cursor.Token_Item) then
                return Cursor;
             end if;
          end if;
@@ -508,15 +451,15 @@ package body WisiToken.BNF.Generate_Utils is
 
       case Cursor.Kind is
       when Non_Grammar_Kind =>
-         String_Pair_Lists.Next (Cursor.Token_Item);
-         if String_Pair_Lists.Has_Element (Cursor.Token_Item) then
+         String_Triple_Lists.Next (Cursor.Token_Item);
+         if String_Triple_Lists.Has_Element (Cursor.Token_Item) then
             return;
          else
             WisiToken.BNF.Token_Lists.Next (Cursor.Token_Kind);
 
             if WisiToken.BNF.Token_Lists.Has_Element (Cursor.Token_Kind) then
                Cursor.Token_Item := Cursor.Data.Tokens.Non_Grammar 
(Cursor.Token_Kind).Tokens.First;
-               if String_Pair_Lists.Has_Element (Cursor.Token_Item) then
+               if String_Triple_Lists.Has_Element (Cursor.Token_Item) then
                   return;
                end if;
             end if;
@@ -541,14 +484,14 @@ package body WisiToken.BNF.Generate_Utils is
          return;
 
       when Terminals_Others =>
-         WisiToken.BNF.String_Pair_Lists.Next (Cursor.Token_Item);
-         if WisiToken.BNF.String_Pair_Lists.Has_Element (Cursor.Token_Item) 
then
+         WisiToken.BNF.String_Triple_Lists.Next (Cursor.Token_Item);
+         if WisiToken.BNF.String_Triple_Lists.Has_Element (Cursor.Token_Item) 
then
             return;
          else
             WisiToken.BNF.Token_Lists.Next (Cursor.Token_Kind);
             if WisiToken.BNF.Token_Lists.Has_Element (Cursor.Token_Kind) then
                Cursor.Token_Item := Cursor.Data.Tokens.Tokens 
(Cursor.Token_Kind).Tokens.First;
-               if WisiToken.BNF.String_Pair_Lists.Has_Element 
(Cursor.Token_Item) then
+               if WisiToken.BNF.String_Triple_Lists.Has_Element 
(Cursor.Token_Item) then
                   return;
                end if;
             end if;
@@ -608,13 +551,13 @@ package body WisiToken.BNF.Generate_Utils is
    is begin
       case Cursor.Kind is
       when Non_Grammar_Kind =>
-         return -Token_Lists.Constant_Reference 
(Cursor.Data.Tokens.Non_Grammar, Cursor.Token_Kind).Kind;
+         return -Cursor.Data.Tokens.Non_Grammar (Cursor.Token_Kind).Kind;
 
       when Terminals_Keywords =>
          return "keyword";
 
       when Terminals_Others =>
-         return -Token_Lists.Constant_Reference (Cursor.Data.Tokens.Tokens, 
Cursor.Token_Kind).Kind;
+         return -Cursor.Data.Tokens.Tokens (Cursor.Token_Kind).Kind;
 
       when EOI =>
          return "EOI";
@@ -623,7 +566,7 @@ package body WisiToken.BNF.Generate_Utils is
          return "accept";
 
       when Nonterminal =>
-            return "nonterminal";
+         return "nonterminal";
 
       when Done =>
          raise SAL.Programmer_Error with "token cursor is done";
@@ -634,34 +577,13 @@ package body WisiToken.BNF.Generate_Utils is
    is begin
       case Cursor.Kind is
       when Non_Grammar_Kind =>
-         declare
-            Token_Ref : constant 
WisiToken.BNF.Token_Lists.Constant_Reference_Type :=
-              WisiToken.BNF.Token_Lists.Constant_Reference 
(Cursor.Data.Tokens.Non_Grammar, Cursor.Token_Kind);
-
-            Item_Ref : constant String_Pair_Lists.Constant_Reference_Type :=
-              String_Pair_Lists.Constant_Reference (Token_Ref.Element.Tokens, 
Cursor.Token_Item);
-         begin
-            return -Item_Ref.Element.Value;
-         end;
+         return -Cursor.Data.Tokens.Non_Grammar (Cursor.Token_Kind).Tokens 
(Cursor.Token_Item).Value;
 
       when Terminals_Keywords =>
-         declare
-            Keyword_Ref : constant String_Pair_Lists.Constant_Reference_Type :=
-              String_Pair_Lists.Constant_Reference 
(Cursor.Data.Tokens.Keywords, Cursor.Keyword);
-         begin
-            return -Keyword_Ref.Element.Value;
-         end;
+         return -Cursor.Data.Tokens.Keywords (Cursor.Keyword).Value;
 
       when Terminals_Others =>
-         declare
-            Token_Ref : constant 
WisiToken.BNF.Token_Lists.Constant_Reference_Type :=
-              WisiToken.BNF.Token_Lists.Constant_Reference 
(Cursor.Data.Tokens.Tokens, Cursor.Token_Kind);
-
-            Item_Ref : constant String_Pair_Lists.Constant_Reference_Type :=
-              String_Pair_Lists.Constant_Reference (Token_Ref.Element.Tokens, 
Cursor.Token_Item);
-         begin
-            return -Item_Ref.Element.Value;
-         end;
+         return -Cursor.Data.Tokens.Tokens (Cursor.Token_Kind).Tokens 
(Cursor.Token_Item).Value;
 
       when EOI | WisiToken_Accept | Nonterminal =>
             return "";
@@ -671,6 +593,26 @@ package body WisiToken.BNF.Generate_Utils is
       end case;
    end Value;
 
+   function Repair_Image (Cursor : in Token_Cursor) return String
+   is begin
+      case Cursor.Kind is
+      when Non_Grammar_Kind =>
+         return -Cursor.Data.Tokens.Non_Grammar (Cursor.Token_Kind).Tokens 
(Cursor.Token_Item).Repair_Image;
+
+      when Terminals_Keywords =>
+         return "";
+
+      when Terminals_Others =>
+         return -Cursor.Data.Tokens.Tokens (Cursor.Token_Kind).Tokens 
(Cursor.Token_Item).Repair_Image;
+
+      when EOI | WisiToken_Accept | Nonterminal =>
+            return "";
+
+      when Done =>
+         raise SAL.Programmer_Error with "token cursor is done";
+      end case;
+   end Repair_Image;
+
    function To_Conflicts
      (Data             : aliased in out Generate_Data;
       Conflicts        :         in     WisiToken.BNF.Conflict_Lists.List;
@@ -760,15 +702,6 @@ package body WisiToken.BNF.Generate_Utils is
       return Result;
    end To_McKenzie_Param;
 
-   procedure Count_Actions (Data : in out Generate_Utils.Generate_Data)
-   is begin
-      Data.Table_Actions_Count := 0;
-      for State_Index in Data.LR_Parse_Table.States'Range loop
-         Data.Table_Actions_Count := Data.Table_Actions_Count +
-           Actions_Length (Data.LR_Parse_Table.States (State_Index)) + 1;
-      end loop;
-   end Count_Actions;
-
    procedure Put_Stats
      (Input_Data    : in WisiToken_Grammar_Runtime.User_Data_Type;
       Generate_Data : in Generate_Utils.Generate_Data)
@@ -780,24 +713,7 @@ package body WisiToken.BNF.Generate_Utils is
         (Integer'Image (Input_Data.Rule_Count) & " rules," &
            Integer'Image (Input_Data.Action_Count) & " user actions," &
            Integer'Image (Input_Data.Check_Count) & " checks," &
-           WisiToken.State_Index'Image (Generate_Data.Parser_State_Count) & " 
states," &
-           Integer'Image (Generate_Data.Table_Actions_Count) & " parse 
actions");
+           WisiToken.State_Index'Image (Generate_Data.Parser_State_Count) & " 
states");
    end Put_Stats;
 
-   function Actions_Length (State : in Parse.LR.Parse_State) return Integer
-   is
-      use all type WisiToken.Parse.LR.Action_Node_Ptr;
-      Node : Parse.LR.Action_Node_Ptr := State.Action_List;
-   begin
-      return Result : Integer := 0
-      do
-         loop
-            exit when Node = null;
-            Result := Result + 1;
-            Node := Node.Next;
-            exit when Node.Next = null; -- don't count Error
-         end loop;
-      end return;
-   end Actions_Length;
-
 end WisiToken.BNF.Generate_Utils;
diff --git a/packages/wisi/wisitoken-bnf-generate_utils.ads 
b/packages/wisi/wisitoken-bnf-generate_utils.ads
index bcf599f..0cd7508 100644
--- a/packages/wisi/wisitoken-bnf-generate_utils.ads
+++ b/packages/wisi/wisitoken-bnf-generate_utils.ads
@@ -49,11 +49,10 @@ package WisiToken.BNF.Generate_Utils is
       --  The following fields are LR specific; so far, it's not worth
       --  splitting them out.
 
-      Ignore_Conflicts    : Boolean                       := False;
-      Conflicts           : WisiToken.Generate.LR.Conflict_Lists.List;
-      LR_Parse_Table      : WisiToken.Parse.LR.Parse_Table_Ptr;
-      Table_Actions_Count : Integer                       := -1; -- parse, not 
user, actions
-      Parser_State_Count  : WisiToken.Unknown_State_Index := 0;
+      Ignore_Conflicts   : Boolean                       := False;
+      Conflicts          : WisiToken.Generate.LR.Conflict_Lists.List;
+      LR_Parse_Table     : WisiToken.Parse.LR.Parse_Table_Ptr;
+      Parser_State_Count : WisiToken.Unknown_State_Index := 0;
    end record;
 
    function Initialize
@@ -132,6 +131,12 @@ package WisiToken.BNF.Generate_Utils is
    --  Tokens  : Tokens (i).Tokens (j).Value
    --  Rules   : empty string (they have no Value)
 
+   function Repair_Image (Cursor : in Token_Cursor) return String;
+   --  Return the token repair image from the .wy file:
+   --  Keywords: empty string
+   --  Tokens  : Tokens (i).Tokens (j).Repair_Image
+   --  Rules   : empty string
+
    function To_Conflicts
      (Data             : aliased in out Generate_Data;
       Conflicts        :         in     WisiToken.BNF.Conflict_Lists.List;
@@ -149,15 +154,10 @@ package WisiToken.BNF.Generate_Utils is
       Item :         in McKenzie_Recover_Param_Type)
      return WisiToken.Parse.LR.McKenzie_Param_Type;
 
-   procedure Count_Actions (Data : in out Generate_Utils.Generate_Data);
-
    procedure Put_Stats
      (Input_Data    : in WisiToken_Grammar_Runtime.User_Data_Type;
       Generate_Data : in Generate_Utils.Generate_Data);
 
-   function Actions_Length (State : in Parse.LR.Parse_State) return Integer;
-   --  Not including Error.
-
 private
 
    type Token_Cursor_Kind is
@@ -168,7 +168,7 @@ private
       Kind        : Token_Cursor_Kind;
       ID          : Token_ID;
       Token_Kind  : WisiToken.BNF.Token_Lists.Cursor; -- Non_Grammar or 
Tokens, depending on Kind
-      Token_Item  : String_Pair_Lists.Cursor;
+      Token_Item  : String_Triple_Lists.Cursor;
       Keyword     : String_Pair_Lists.Cursor;
       Nonterminal : Rule_Lists.Cursor;
    end record;
diff --git a/packages/wisi/wisitoken-bnf-output_ada_common.adb 
b/packages/wisi/wisitoken-bnf-output_ada_common.adb
index b3d7dea..97ec9ed 100644
--- a/packages/wisi/wisitoken-bnf-output_ada_common.adb
+++ b/packages/wisi/wisitoken-bnf-output_ada_common.adb
@@ -33,13 +33,12 @@ package body WisiToken.BNF.Output_Ada_Common is
    function Duplicate_Reduce (State : in Parse.LR.Parse_State) return Boolean
    is
       use Parse.LR;
-      Node        : Action_Node_Ptr       := State.Action_List;
-      Action_Node : Parse_Action_Node_Ptr := Node.Action;
+      Action_Node : Parse_Action_Node_Ptr;
       First       : Boolean               := True;
       Action      : Reduce_Action_Rec;
    begin
-      loop
-         Action_Node := Node.Action;
+      for Node of State.Action_List loop
+         Action_Node := Node.Actions;
          if Action_Node.Next /= null then
             --  conflict
             return False;
@@ -55,32 +54,27 @@ package body WisiToken.BNF.Output_Ada_Common is
                return False;
             end if;
          end if;
-         Node := Node.Next;
-         exit when Node.Next = null; --  Last entry is Error.
       end loop;
       return True;
    end Duplicate_Reduce;
 
    function Symbols_Image (State : in Parse.LR.Parse_State) return String
    is
+      use all type Ada.Containers.Count_Type;
       use Ada.Strings.Unbounded;
-      use Parse.LR;
 
       Result     : Unbounded_String;
-      Need_Comma : Boolean          := False;
-      Node       : Action_Node_Ptr  := State.Action_List;
+      Need_Comma : Boolean := False;
    begin
-      if Generate_Utils.Actions_Length (State) = 1 then
-         return "(1 => " & Token_ID'Image (Node.Symbol) & ")";
+      if State.Action_List.Length = 1 then
+         return "(1 => " & Token_ID'Image (State.Action_List (1).Symbol) & ")";
       else
          Result := +"(";
-         loop
+         for Node of State.Action_List loop
             Result := Result &
               (if Need_Comma then ", " else "") &
               Trimmed_Image (Node.Symbol);
             Need_Comma := True;
-            Node := Node.Next;
-            exit when Node.Next = null; -- last is Error
          end loop;
          Result := Result & ")";
          return -Result;
@@ -267,6 +261,7 @@ package body WisiToken.BNF.Output_Ada_Common is
                            
"WisiToken.Parse.LR.Parser.Language_String_ID_Set_Access;");
          else
             Indent_Line ("  (Parser                       :    out 
WisiToken.Parse.LR.Parser_No_Recover.Parser;");
+            Indent_Line ("   --  no error recovery");
          end if;
          Indent_Line ("   Trace                        : not null access 
WisiToken.Trace'Class;");
          Indent_Start ("   User_Data                    : in     
WisiToken.Syntax_Trees.User_Data_Access");
@@ -555,11 +550,15 @@ package body WisiToken.BNF.Output_Ada_Common is
          declare
             use Ada.Containers;
             Base_Indent : constant Ada.Text_IO.Count := Indent;
-            Node        : Action_Node_Ptr := Table.States 
(State_Index).Action_List;
          begin
+            Indent_Line
+              ("Table.States (" & Trimmed_Image (State_Index) & 
").Action_List.Set_Capacity (" &
+                 Trimmed_Image (Table.States (State_Index).Action_List.Length) 
& ");");
+
             if Duplicate_Reduce (Table.States (State_Index)) then
                declare
-                  Action : constant Reduce_Action_Rec := Node.Action.Item;
+                  Node   : Action_Node renames Table.States 
(State_Index).Action_List (1);
+                  Action : constant Reduce_Action_Rec := Node.Actions.Item;
                begin
                   Set_Col (Indent);
                   Line := +"Add_Action (Table.States (" & Trimmed_Image 
(State_Index) & "), " &
@@ -587,11 +586,10 @@ package body WisiToken.BNF.Output_Ada_Common is
                end;
 
             else
-               loop
-                  exit when Node = null;
+               for Node of Table.States (State_Index).Action_List loop
                   Set_Col (Indent);
                   declare
-                     Action_Node : Parse_Action_Node_Ptr := Node.Action;
+                     Action_Node : Parse_Action_Node_Ptr := Node.Actions;
                   begin
                      case Action_Node.Item.Verb is
                      when Shift =>
@@ -632,7 +630,7 @@ package body WisiToken.BNF.Output_Ada_Common is
                         Append (");");
 
                      when Parse.LR.Error =>
-                        Line := +"Add_Error (Table.States (" & Trimmed_Image 
(State_Index) & "));";
+                        raise SAL.Programmer_Error;
                      end case;
                      Indent_Wrap (-Line);
                      Line_Count := Line_Count + 1;
@@ -675,24 +673,22 @@ package body WisiToken.BNF.Output_Ada_Common is
                      end loop;
                   end;
                   Indent := Base_Indent;
-                  Node   := Node.Next;
                end loop;
             end if;
          end Actions;
 
+         if Table.States (State_Index).Goto_List.Length > 0 then
+            Indent_Line
+              ("Table.States (" & Trimmed_Image (State_Index) & 
").Goto_List.Set_Capacity (" &
+                 Trimmed_Image (Table.States (State_Index).Goto_List.Length) & 
");");
+         end if;
          Gotos :
-         declare
-            Node : Goto_Node_Ptr := Table.States (State_Index).Goto_List;
-         begin
-            loop
-               exit when Node = null;
-               Set_Col (Indent);
-               Put ("Add_Goto (Table.States (" & Trimmed_Image (State_Index) & 
"), ");
-               Put_Line (Trimmed_Image (Symbol (Node)) & ", " & Trimmed_Image 
(State (Node)) & ");");
-               Line_Count := Line_Count + 1;
-               Node := Next (Node);
-            end loop;
-         end Gotos;
+         for Node of Table.States (State_Index).Goto_List loop
+            Set_Col (Indent);
+            Put ("Add_Goto (Table.States (" & Trimmed_Image (State_Index) & 
"), ");
+            Put_Line (Trimmed_Image (Node.Symbol) & ", " & Trimmed_Image 
(Node.State) & ");");
+            Line_Count := Line_Count + 1;
+         end loop Gotos;
 
          if Input_Data.Language_Params.Error_Recover then
             if Table.States (State_Index).Kernel.Length > 0 then
@@ -741,6 +737,7 @@ package body WisiToken.BNF.Output_Ada_Common is
       for Subr in 1 .. Subr_Count loop
          Indent_Line ("Subr_" & Trimmed_Image (Subr) & ";");
       end loop;
+      Indent_Line ("Table.Error_Action := new Parse_Action_Node'((Verb => 
Error), null);");
       Indent := Indent - 3;
       Indent_Line ("end;");
    end Create_LR_Parser_Table;
@@ -1217,14 +1214,9 @@ package body WisiToken.BNF.Output_Ada_Common is
                Indent_Line ("    continue; }");
 
             elsif Kind (I) = "delimited-text" then
-               --  Val contains the start and end strings, separated by space
-               declare
-                  Start_Last : constant Integer := Index (Val, " ");
-               begin
-                  Indent_Line
-                    (Val (1 .. Start_Last - 1) & " {*id = " & 
WisiToken.Token_ID'Image (ID (I)) &
-                       "; skip_to(lexer, " & Val (Start_Last + 1 .. Val'Last) 
& "); continue;}");
-               end;
+               Indent_Line
+                    (Val & " {*id = " & WisiToken.Token_ID'Image (ID (I)) &
+                       "; skip_to(lexer, " & Repair_Image (I) & "); 
continue;}");
 
             elsif 0 /= Index (Source => Val, Pattern => "/") then
                Indent_Line (Val & " {*id = " & WisiToken.Token_ID'Image (ID 
(I)) & "; continue;}");
diff --git a/packages/wisi/wisitoken-bnf-output_ada_emacs.adb 
b/packages/wisi/wisitoken-bnf-output_ada_emacs.adb
index ae109fa..2de6e0c 100644
--- a/packages/wisi/wisitoken-bnf-output_ada_emacs.adb
+++ b/packages/wisi/wisitoken-bnf-output_ada_emacs.adb
@@ -40,7 +40,6 @@ with WisiToken.Generate.Packrat;
 with WisiToken_Grammar_Runtime;
 procedure WisiToken.BNF.Output_Ada_Emacs
   (Input_Data            :         in WisiToken_Grammar_Runtime.User_Data_Type;
-   Elisp_Tokens          :         in WisiToken.BNF.Tokens;
    Output_File_Name_Root :         in String;
    Generate_Data         : aliased in 
WisiToken.BNF.Generate_Utils.Generate_Data;
    Packrat_Data          :         in WisiToken.Generate.Packrat.Data;
@@ -277,28 +276,10 @@ is
             when others =>  "(" & (-Result) & "))");
       end Statement_Params;
 
-      function Containing_Params (Params : in String) return String
-      is
-         --  Input looks like: 1 2)
-         First        : constant Integer := Index_Non_Blank (Params);
-         Second       : constant Integer := Index (Params, Blank_Set, First);
-         First_Label  : constant String  := Params (First .. Second - 1);
-         Second_Label : constant String  := Params (Second + 1 .. Params'Last 
- 1);
-      begin
-         if (0 = Index (First_Label, Numeric, Outside) or else Label_Used 
(First_Label)) and
-           (0 = Index (Second_Label, Numeric, Outside) or else Label_Used 
(Second_Label))
-         then
-            Nonterm_Needed := True;
-            return " (Parse_Data, Tree, Nonterm, Tokens, " & First_Label & ", 
" & Second_Label & ")";
-         else
-            return "";
-         end if;
-      end Containing_Params;
-
       function Motion_Params (Params : in String) return String
       is
-         --  Input looks like: [1 [2 EXCEPTION WHEN] 3 ...]
-         --  Result: (..., Motion_Param_Array'((1, Empty_IDs) & (2, (3 & 8)) & 
(3, Empty_IDs))
+         --  Input looks like: [1 [2 EXCEPTION] 3 ...]
+         --  Result: (..., Motion_Param_Array'((1, Invalid_Token_ID) & (2, 3) 
& (3, Invalid_Token_ID))
          use Generate_Utils;
          use Ada.Strings.Maps;
 
@@ -307,56 +288,61 @@ is
          Last   : Integer          := Index_Non_Blank (Params); -- skip [
          First  : Integer;
          Vector : Boolean;
-         Result : Unbounded_String := +" (Parse_Data, Tree, Nonterm, Tokens, 
(";
+         Result : Unbounded_String;
 
          Index_First  : Integer;
          Index_Last   : Integer;
-         IDs          : Unbounded_String;
-         IDs_Count    : Integer;
-         Need_Comma_1 : Boolean := False;
-         Need_Comma_2 : Boolean := False;
+         ID           : Unbounded_String;
+         Need_Comma : Boolean := False;
+         Count      : Integer          := 0;
       begin
          loop
+            if not (Last in Params'First .. Params'Last) then
+               Put_Error
+                 (Error_Message
+                    (Input_Data.Grammar_Lexer.File_Name, RHS.Source_Line,
+                     "Missing ']' or ')'"));
+               exit;
+            end if;
             Last := Index_Non_Blank (Params, Integer'Min (Params'Last, Last + 
1));
 
             exit when Params (Last) = ']' or Params (Last) = ')';
 
             Vector := Params (Last) = '[';
             if Vector then
-               Index_First  := Last + 1;
-               Last         := Index (Params, Delim, Index_First);
-               Index_Last   := Last - 1;
-               IDs_Count    := 0;
-               IDs          := Null_Unbounded_String;
-               Need_Comma_2 := False;
-               loop
-                  exit when Params (Last) = ']';
-                  First     := Last + 1;
-                  Last      := Index (Params, Delim, First);
-                  IDs_Count := IDs_Count + 1;
-                  begin
-                     IDs := IDs & (if Need_Comma_2 then " & " else "") &
-                       Trimmed_Image (Find_Token_ID (Generate_Data, Params 
(First .. Last - 1)));
-                     Need_Comma_2 := True;
-                  exception
-                  when E : Not_Found =>
-                     Put_Error
-                       (Error_Message
-                          (Input_Data.Grammar_Lexer.File_Name, RHS.Source_Line,
-                           Ada.Exceptions.Exception_Message (E)));
-                  end;
-               end loop;
+               Index_First := Last + 1;
+               Last        := Index (Params, Delim, Index_First);
+               Index_Last  := Last - 1;
+               First       := Last + 1;
+               Last        := Index (Params, Delim, First);
+               begin
+                  ID := +Trimmed_Image (Find_Token_ID (Generate_Data, Params 
(First .. Last - 1)));
+               exception
+               when E : Not_Found =>
+                  Put_Error
+                    (Error_Message
+                       (Input_Data.Grammar_Lexer.File_Name, RHS.Source_Line,
+                        Ada.Exceptions.Exception_Message (E)));
+               end;
 
                declare
                   Label : constant String := Params (Index_First .. 
Index_Last);
                begin
                   if 0 = Index (Label, Numeric, Outside) or else Label_Used 
(Label) then
-                     Nonterm_Needed := True;
-                     Result := Result & (if Need_Comma_1 then " & " else "") & 
"(" &
-                       Label & ", " &
-                       (if IDs_Count = 1 then "+" else "") & IDs & ")";
+                     Result := Result & (if Need_Comma then " & " else "") & 
"(" &
+                       Label & ", " & ID & ")";
+                     Need_Comma := True;
+                     Count  := Count + 1;
                   end if;
                end;
+               if Params (Last) /= ']' then
+                  Put_Error
+                    (Error_Message
+                       (Input_Data.Grammar_Lexer.File_Name, RHS.Source_Line,
+                        "too many token IDs in motion action"));
+                  return -Result & "))";
+               end if;
+
             else
                First  := Index_Non_Blank (Params, Last);
                Last   := Index (Params, Delim, First);
@@ -364,14 +350,20 @@ is
                   Label : constant String := Params (First .. Last - 1);
                begin
                   if 0 = Index (Label, Numeric, Outside) or else Label_Used 
(Label) then
-                     Nonterm_Needed := True;
-                     Result := Result & (if Need_Comma_1 then " & " else "") & 
"(" & Label & ", Empty_IDs)";
+                     Result := Result & (if Need_Comma then " & " else "") & 
"(" & Label & ", Invalid_Token_ID)";
+                     Need_Comma := True;
+                     Count  := Count + 1;
                   end if;
                end;
             end if;
-            Need_Comma_1 := True;
          end loop;
-         return -(Result & "))");
+         if Count <= 1 then
+            --  No point in calling Motion_Action with only one param.
+            return "";
+         else
+            Nonterm_Needed := True;
+            return " (Parse_Data, Tree, Nonterm, Tokens, (" & (-Result) & "))";
+         end if;
       end Motion_Params;
 
       function Face_Apply_Params (Params : in String) return String
@@ -1073,15 +1065,6 @@ is
                end if;
             end;
 
-         elsif Elisp_Name = "wisi-containing-action" then
-            declare
-               Params : constant String := Containing_Params (Line (Last + 1 
.. Line'Last));
-            begin
-               if Params'Length > 0 then
-                  Navigate_Lines.Append (Elisp_Name_To_Ada (Elisp_Name, False, 
Trim => 5) & Params & ";");
-               end if;
-            end;
-
          elsif Elisp_Name = "wisi-motion-action" then
             declare
                Params : constant String := Motion_Params (Line (Last + 1 .. 
Line'Last));
@@ -1644,17 +1627,9 @@ is
       Output_Elisp_Common.Indent_Name_Table
         (Output_File_Name_Root, "process-face-table", Input_Data.Tokens.Faces);
 
-      --  We need the elisp lexer for some operations
-      if Elisp_Tokens.Keywords.Length > 0 then
-         New_Line;
-         Output_Elisp_Common.Indent_Keyword_Table
-           (Output_File_Name_Root, "elisp", Elisp_Tokens.Keywords, 
Ada.Strings.Unbounded.To_String'Access);
-      end if;
-      if Elisp_Tokens.Tokens.Length > 0 then
-         New_Line;
-         Output_Elisp_Common.Indent_Token_Table
-           (Output_File_Name_Root, "elisp", Elisp_Tokens.Tokens, 
Ada.Strings.Unbounded.To_String'Access);
-      end if;
+      --  We need -repair-image for wisi-repair-error
+      New_Line;
+      Output_Elisp_Common.Indent_Repair_Image (Output_File_Name_Root, 
"process", Input_Data.Tokens);
 
       New_Line;
       Put_Line ("(provide '" & Output_File_Name_Root & "-process)");
diff --git a/packages/wisi/wisitoken-bnf-output_elisp.adb 
b/packages/wisi/wisitoken-bnf-output_elisp.adb
deleted file mode 100644
index ff52449..0000000
--- a/packages/wisi/wisitoken-bnf-output_elisp.adb
+++ /dev/null
@@ -1,293 +0,0 @@
---  Abstract :
---
---  Output Elisp code implementing the grammar defined by the parameters.
---
---  Copyright (C) 2012 - 2015, 2017 - 2019 Free Software Foundation, Inc.
---
---  The WisiToken package is free software; you can redistribute it
---  and/or modify it under terms of the GNU General Public License as
---  published by the Free Software Foundation; either version 3, or
---  (at your option) any later version. This library is distributed in
---  the hope that it will be useful, but WITHOUT ANY WARRANTY; without
---  even the implied warranty of MERCHANTABILITY or FITNESS FOR A
---  PARTICULAR PURPOSE.
---
---  As a special exception under Section 7 of GPL version 3, you are granted
---  additional permissions described in the GCC Runtime Library Exception,
---  version 3.1, as published by the Free Software Foundation.
-
-pragma License (Modified_GPL);
-
-with Ada.Text_IO; use Ada.Text_IO;
-with WisiToken.BNF.Generate_Utils;
-with WisiToken.BNF.Output_Elisp_Common;
-with WisiToken.Generate.Packrat;
-with WisiToken.Parse.LR;
-with WisiToken_Grammar_Runtime;
-procedure WisiToken.BNF.Output_Elisp
-  (Input_Data    :         in WisiToken_Grammar_Runtime.User_Data_Type;
-   Elisp_Package :         in String;
-   Generate_Data : aliased in WisiToken.BNF.Generate_Utils.Generate_Data;
-   Packrat_Data  :         in WisiToken.Generate.Packrat.Data;
-   Tuple         :         in Generate_Tuple)
-is
-   pragma Unreferenced (Packrat_Data);
-
-   procedure Action_Table (Table : in WisiToken.Parse.LR.Parse_Table; 
Descriptor : in WisiToken.Descriptor)
-   is
-      use WisiToken.Parse.LR;
-   begin
-      Put ("     [");
-      for State in Table.States'Range loop
-         if State = Table.States'First then
-            Put ("(");
-         else
-            Put ("      (");
-         end if;
-
-         Put ("(default . error)");
-
-         declare
-            Action : Action_Node_Ptr := Table.States (State).Action_List;
-         begin
-            loop
-               declare
-                  Parse_Action_Node : Parse_Action_Node_Ptr := Action.Action;
-                  Conflict          : constant Boolean      := 
Parse_Action_Node.Next /= null;
-               begin
-                  Put (" (" & Image (Action.Symbol, Descriptor) & " . ");
-
-                  if Conflict then
-                     Put ("(");
-                  end if;
-
-                  loop
-                     declare
-                        Parse_Action : Parse_Action_Rec renames 
Parse_Action_Node.Item;
-                     begin
-                        case Parse_Action.Verb is
-                        when Accept_It =>
-                           Put ("accept");
-
-                        when Error =>
-                           Put ("error");
-
-                        when Reduce =>
-                           Put
-                             ("(" & Image (Parse_Action.Production.LHS, 
Descriptor) & " ." &
-                                Integer'Image (Parse_Action.Production.RHS) & 
")");
-
-                        when Shift =>
-                           Put (State_Index'Image (Parse_Action.State));
-
-                        end case;
-
-                        if Parse_Action_Node.Next = null then
-                           if Conflict then
-                              Put (")");
-                           end if;
-                           Put (")");
-                           exit;
-                        else
-                           Put (" ");
-                           Parse_Action_Node := Parse_Action_Node.Next;
-                        end if;
-                     end;
-                  end loop;
-               end;
-
-               Action := Action.Next;
-
-               if Action.Next = null then
-                  if Action.Action.Item.Verb /= Error then
-                     raise SAL.Programmer_Error with "state" &
-                       State_Index'Image (State) & ": default action is not 
error";
-                  end if;
-                  --  let default handle it
-                  Action := null;
-               end if;
-
-               if Action = null then
-                  if State = Table.States'Last then
-                     Put (")");
-                  else
-                     Put_Line (")");
-                  end if;
-                  exit;
-               end if;
-            end loop;
-         end;
-      end loop;
-      Put_Line ("]");
-   end Action_Table;
-
-   procedure Goto_Table (Table : in WisiToken.Parse.LR.Parse_Table; Descriptor 
: in WisiToken.Descriptor)
-   is
-      use WisiToken.Parse.LR;
-
-      subtype Nonterminals is Token_ID range Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal;
-
-      function Count_Nonterminals (List : in Goto_Node_Ptr) return Integer
-      is
-         Item  : Goto_Node_Ptr := List;
-         Count : Integer       := 0;
-      begin
-         while Item /= null loop
-            if Symbol (Item) in Nonterminals then
-               Count := Count + 1;
-            end if;
-            Item := Next (Item);
-         end loop;
-         return Count;
-      end Count_Nonterminals;
-
-   begin
-      Put ("     [");
-      for State in Table.States'Range loop
-         declare
-            Nonterminal_Count : constant Integer := Count_Nonterminals 
(Table.States (State).Goto_List);
-            Gotos             : Goto_Node_Ptr    := Table.States 
(State).Goto_List;
-         begin
-            if Nonterminal_Count = 0 then
-               if State = Table.States'First then
-                  Put_Line ("nil");
-               else
-                  if State = Table.States'Last then
-                     Put ("      nil");
-                  else
-                     Put_Line ("      nil");
-                  end if;
-               end if;
-            else
-               if State = Table.States'First then
-                  Put ("(");
-               else
-                  Put ("      (");
-               end if;
-               loop
-                  if Symbol (Gotos) in Nonterminals then
-                     Put ("(" & Image (Symbol (Gotos), Descriptor) & " ." &
-                            State_Index'Image (Parse.LR.State (Gotos)) & ")");
-                  end if;
-                  Gotos := Next (Gotos);
-                  exit when Gotos = null;
-               end loop;
-               if State = Table.States'Last then
-                  Put (")");
-               else
-                  Put_Line (")");
-               end if;
-            end if;
-         end;
-      end loop;
-      Put ("]");
-   end Goto_Table;
-
-   procedure Output
-     (Elisp_Package : in String;
-      Tokens        : in WisiToken.BNF.Tokens;
-      Parser        : in WisiToken.Parse.LR.Parse_Table_Ptr;
-      Descriptor    : in WisiToken.Descriptor)
-   is
-      use Ada.Strings.Unbounded;
-      use Ada.Containers; -- count_type
-
-      Rule_Length : constant Count_Type := Tokens.Rules.Length;
-      Rule_Count  : Count_Type := 1;
-
-      RHS_Length : Count_Type;
-      RHS_Count  : Count_Type;
-   begin
-      Put_Line ("(defconst " & Elisp_Package & "-elisp-parse-table");
-      Put_Line ("   (wisi-compile-grammar");
-
-      --  nonterminal productions
-      Put ("   '((");
-      for Rule of Tokens.Rules loop
-         if Rule_Count = 1 then
-            Put ("(");
-         else
-            Put ("      (");
-         end if;
-         Put_Line (-Rule.Left_Hand_Side);
-
-         RHS_Length := Rule.Right_Hand_Sides.Length;
-         RHS_Count  := 1;
-         for RHS of Rule.Right_Hand_Sides loop
-            Put ("       ((");
-            for Token of RHS.Tokens loop
-               Put (-Token.Identifier & " ");
-            end loop;
-            if Length (RHS.Action) = 0 then
-               Put (")");
-            else
-               Put_Line (")");
-               Put ("        " & (-RHS.Action));
-            end if;
-
-            if RHS_Count = RHS_Length then
-               Put (")");
-            else
-               Put_Line (")");
-            end if;
-            RHS_Count := RHS_Count + 1;
-         end loop;
-         if Rule_Count = Rule_Length then
-            Put (")");
-         else
-            Put_Line (")");
-         end if;
-         Rule_Count := Rule_Count + 1;
-      end loop;
-      Put_Line (")");
-
-      Action_Table (Parser.all, Descriptor);
-      Goto_Table (Parser.all, Descriptor);
-      Put_Line ("))");
-
-      Put_Line ("  ""Parser table."")");
-   end Output;
-
-   procedure Create_Elisp (Algorithm : in LR_Generate_Algorithm)
-   is
-      use Ada.Strings.Unbounded;
-      File            : File_Type;
-      Elisp_Package_1 : constant String :=
-        (case Algorithm is
-         when LALR => Elisp_Package & "-lalr",
-         when LR1  => Elisp_Package & "-lr1");
-   begin
-      Create (File, Out_File, Elisp_Package_1 & "-elisp.el");
-      Set_Output (File);
-
-      Put_Line (";;; " & Elisp_Package_1 & "-elisp.el --- Generated parser 
support file  -*- lexical-binding:t -*-");
-      Put_Command_Line (Elisp_Comment & "  ", Use_Tuple => True, Tuple => 
Tuple);
-      Put_Raw_Code (Elisp_Comment, Input_Data.Raw_Code (Copyright_License));
-      Put_Raw_Code (Elisp_Comment, Input_Data.Raw_Code (Actions_Spec_Context));
-      New_Line;
-
-      Put_Line ("(require 'wisi)");
-      Put_Line ("(require 'wisi-compile)");
-      Put_Line ("(require 'wisi-elisp-parse)");
-      New_Line;
-      Output_Elisp_Common.Indent_Keyword_Table
-        (Elisp_Package_1, "elisp", Input_Data.Tokens.Keywords, 
To_String'Access);
-      New_Line;
-      Output_Elisp_Common.Indent_Token_Table (Elisp_Package_1, "elisp", 
Input_Data.Tokens.Tokens, To_String'Access);
-      New_Line;
-      Output (Elisp_Package_1, Input_Data.Tokens, 
Generate_Data.LR_Parse_Table, Generate_Data.Descriptor.all);
-      New_Line;
-      Put_Line ("(provide '" & Elisp_Package_1 & "-elisp)");
-      Put_Line (";; end of file");
-      Close (File);
-
-      Set_Output (Standard_Output);
-   end Create_Elisp;
-
-begin
-   Create_Elisp (Tuple.Gen_Alg);
-
-   if WisiToken.Trace_Generate > 0 then
-      WisiToken.BNF.Generate_Utils.Put_Stats (Input_Data, Generate_Data);
-   end if;
-end WisiToken.BNF.Output_Elisp;
diff --git a/packages/wisi/wisitoken-bnf-output_elisp_common.adb 
b/packages/wisi/wisitoken-bnf-output_elisp_common.adb
index a0b7158..2260955 100644
--- a/packages/wisi/wisitoken-bnf-output_elisp_common.adb
+++ b/packages/wisi/wisitoken-bnf-output_elisp_common.adb
@@ -106,8 +106,6 @@ package body WisiToken.BNF.Output_Elisp_Common is
       Indent_Line ("  '(");
       Indent := Indent + 3;
       for Kind of Tokens loop
-         --  We don't use All_Tokens.Iterate here, because we need the
-         --  Kind/token nested list structure, and the order is not important.
          if not (-Kind.Kind = "line_comment" or -Kind.Kind = "whitespace") then
             Indent_Line ("(""" & (-Kind.Kind) & """");
             Indent := Indent + 1;
@@ -155,4 +153,60 @@ package body WisiToken.BNF.Output_Elisp_Common is
       Indent := Indent - 3;
    end Indent_Name_Table;
 
+   procedure Indent_Repair_Image
+     (Output_File_Root : in String;
+      Label            : in String;
+      Tokens           : in WisiToken.BNF.Tokens)
+   is
+      use all type Ada.Text_IO.Count;
+      use Ada.Strings.Unbounded;
+      use WisiToken.Generate;
+
+      function re2c_To_Elisp (Item : in String) return String
+      is
+         Result : String (1 .. Item'Length * 2);
+         Last : Integer := Result'First - 1;
+      begin
+         --  Convert re2c case-insensitive string '...' to elisp string "...",
+         --  with '"' escaped.
+         if Item (Item'First) /= ''' then
+            return Item;
+         end if;
+
+         for C of Item loop
+            if C = ''' then
+               Result (Last + 1) := '"';
+               Last := Last + 1;
+            elsif C = '"' then
+               Result (Last + 1) := '\';
+               Result (Last + 2) := '"';
+               Last := Last + 2;
+            else
+               Result (Last + 1) := C;
+               Last := Last + 1;
+            end if;
+         end loop;
+         return Result (1 .. Last);
+      end re2c_To_Elisp;
+
+   begin
+      Indent_Line ("(defconst " & Output_File_Root & "-" & Label & 
"-repair-image");
+      Indent_Line ("  '(");
+      Indent := Indent + 3;
+      for Pair of Tokens.Keywords loop
+         Indent_Line ("(" & (-Pair.Name) & " . " & (-Pair.Value) & ")");
+      end loop;
+      for Kind of Tokens.Tokens loop
+         for Token of Kind.Tokens loop
+            if Length (Token.Repair_Image) > 0 then
+               Indent_Line ("(" & (-Token.Name) & " . " & re2c_To_Elisp 
(-Token.Repair_Image) & ")");
+            else
+               Indent_Line ("(" & (-Token.Name) & " . " & (-Token.Value) & 
")");
+            end if;
+         end loop;
+      end loop;
+      Indent_Line ("))");
+      Indent := Indent - 3;
+   end Indent_Repair_Image;
+
 end WisiToken.BNF.Output_Elisp_Common;
diff --git a/packages/wisi/wisitoken-bnf-output_elisp_common.ads 
b/packages/wisi/wisitoken-bnf-output_elisp_common.ads
index 040bd5e..03a655e 100644
--- a/packages/wisi/wisitoken-bnf-output_elisp_common.ads
+++ b/packages/wisi/wisitoken-bnf-output_elisp_common.ads
@@ -2,7 +2,7 @@
 --
 --  Subprograms common to Output_Elisp and Output_Ada_Emacs
 --
---  Copyright (C) 2012, 2013, 2015, 2017, 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2012, 2013, 2015, 2017, 2018, 2019 Free Software Foundation, 
Inc.
 --
 --  The WisiToken package is free software; you can redistribute it
 --  and/or modify it under terms of the GNU General Public License as
@@ -46,4 +46,9 @@ package WisiToken.BNF.Output_Elisp_Common is
       Label            : in     String;
       Names            : in     String_Lists.List);
 
+   procedure Indent_Repair_Image
+     (Output_File_Root : in String;
+      Label            : in String;
+      Tokens           : in WisiToken.BNF.Tokens);
+
 end WisiToken.BNF.Output_Elisp_Common;
diff --git a/packages/wisi/wisitoken-bnf.adb b/packages/wisi/wisitoken-bnf.adb
index dc37d56..29e4f60 100644
--- a/packages/wisi/wisitoken-bnf.adb
+++ b/packages/wisi/wisitoken-bnf.adb
@@ -204,25 +204,26 @@ package body WisiToken.BNF is
    end Count;
 
    procedure Add_Token
-     (Tokens : in out Token_Lists.List;
-      Kind   : in     String;
-      Name   : in     String;
-      Value  : in     String)
+     (Tokens       : in out Token_Lists.List;
+      Kind         : in     String;
+      Name         : in     String;
+      Value        : in     String;
+      Repair_Image : in     String := "")
    is
       use type Ada.Strings.Unbounded.Unbounded_String;
    begin
       for Token_Kind of Tokens loop
          if Token_Kind.Kind = Kind then
-            Token_Kind.Tokens.Append ((+Name, +Value));
+            Token_Kind.Tokens.Append ((+Name, +Value, +Repair_Image));
             return;
          end if;
       end loop;
 
       --  Kind not found; add it
       declare
-         Temp : String_Pair_Lists.List;
+         Temp : String_Triple_Lists.List;
       begin
-         Temp.Append ((+Name, +Value));
+         Temp.Append ((+Name, +Value, +Repair_Image));
          Tokens.Append ((+Kind, Temp));
       end;
    end Add_Token;
diff --git a/packages/wisi/wisitoken-bnf.ads b/packages/wisi/wisitoken-bnf.ads
index 3532de7..d586c4a 100644
--- a/packages/wisi/wisitoken-bnf.ads
+++ b/packages/wisi/wisitoken-bnf.ads
@@ -64,15 +64,14 @@ package WisiToken.BNF is
    type Generate_Algorithm_Set is array (Generate_Algorithm) of Boolean;
    type Generate_Algorithm_Set_Access is access Generate_Algorithm_Set;
 
-   type Output_Language is (Ada_Lang, Ada_Emacs_Lang, Elisp_Lang);
+   type Output_Language is (Ada_Lang, Ada_Emacs_Lang);
    subtype Ada_Output_Language is Output_Language range Ada_Lang .. 
Ada_Emacs_Lang;
    --  _Lang to avoid colliding with the standard package Ada and
    --  WisiToken packages named *.Ada. In the grammar file, they
    --  are named by (case insensitive):
    Output_Language_Image : constant array (Output_Language) of 
String_Access_Constant :=
      (Ada_Lang       => new String'("Ada"),
-      Ada_Emacs_Lang => new String'("Ada_Emacs"),
-      Elisp_Lang     => new String'("elisp"));
+      Ada_Emacs_Lang => new String'("Ada_Emacs"));
 
    function To_Output_Language (Item : in String) return Output_Language;
    --  Raises User_Error for invalid Item
@@ -188,6 +187,14 @@ package WisiToken.BNF is
    function Is_Present (List : in String_Pair_Lists.List; Name : in String) 
return Boolean;
    function Value (List : in String_Pair_Lists.List; Name : in String) return 
String;
 
+   type String_Triple_Type is record
+      Name         : aliased Ada.Strings.Unbounded.Unbounded_String;
+      Value        : Ada.Strings.Unbounded.Unbounded_String;
+      Repair_Image : Ada.Strings.Unbounded.Unbounded_String;
+   end record;
+
+   package String_Triple_Lists is new Ada.Containers.Doubly_Linked_Lists 
(String_Triple_Type);
+
    type Elisp_Action_Type is record
       --  Elisp name is the key
       Action_Label : Ada.Strings.Unbounded.Unbounded_String;
@@ -229,7 +236,7 @@ package WisiToken.BNF is
 
    type Token_Kind_Type is record
       Kind   : Ada.Strings.Unbounded.Unbounded_String;
-      Tokens : String_Pair_Lists.List;
+      Tokens : String_Triple_Lists.List;
    end record;
 
    package Token_Lists is new Ada.Containers.Doubly_Linked_Lists 
(Token_Kind_Type);
@@ -238,11 +245,12 @@ package WisiToken.BNF is
    --  Count of all leaves.
 
    procedure Add_Token
-     (Tokens : in out Token_Lists.List;
-      Kind   : in     String;
-      Name   : in     String;
-      Value  : in     String);
-   --  Add Name, Value to Kind list in Tokens.
+     (Tokens       : in out Token_Lists.List;
+      Kind         : in     String;
+      Name         : in     String;
+      Value        : in     String;
+      Repair_Image : in     String := "");
+   --  Add Name, Value, Repair_Image to Kind list in Tokens.
 
    function Is_In (Tokens : in Token_Lists.List; Kind : in String) return 
Boolean;
    function Is_In
diff --git a/packages/wisi/wisitoken-generate-lr-lalr_generate.adb 
b/packages/wisi/wisitoken-generate-lr-lalr_generate.adb
index f55c822..3631f64 100644
--- a/packages/wisi/wisitoken-generate-lr-lalr_generate.adb
+++ b/packages/wisi/wisitoken-generate-lr-lalr_generate.adb
@@ -176,7 +176,7 @@ package body WisiToken.Generate.LR.LALR_Generate is
 
       Found_State : Unknown_State_Index;
    begin
-      Kernels.Set_First (First_State_Index);
+      Kernels.Set_First_Last (First_State_Index, First_State_Index - 1);
 
       Add (New_Item_Set, Kernels, Kernel_Tree, Descriptor, Include_Lookaheads 
=> False);
 
@@ -298,7 +298,7 @@ package body WisiToken.Generate.LR.LALR_Generate is
          Propagations.Append ((From_Cur, To_List (To_Item)));
 
       elsif not Has_Element (To_Match) then
-         Ref (From_Match).To.Append (To_Item);
+         Variable_Ref (From_Match).To.Append (To_Item);
 
       else
          raise SAL.Programmer_Error with "Add_Propagation: unexpected case";
@@ -360,7 +360,7 @@ package body WisiToken.Generate.LR.LALR_Generate is
                Ada.Text_IO.Put_Line ("  spontaneous: " & Lookahead_Image 
(Closure_Item.Lookaheads.all, Descriptor));
             end if;
 
-            LR1_Items.Include (Ref (To_Item), Closure_Item.Lookaheads.all, 
Descriptor);
+            LR1_Items.Include (Variable_Ref (To_Item), 
Closure_Item.Lookaheads.all, Descriptor);
          end if;
       end;
    end Generate_Lookahead_Info;
@@ -382,7 +382,8 @@ package body WisiToken.Generate.LR.LALR_Generate is
          More_To_Check := False;
          for Mapping of List loop
             for Copy of Mapping.To loop
-               LR1_Items.Include (Ref (Copy), Constant_Ref 
(Mapping.From).Lookaheads.all, Added_One, Descriptor);
+               LR1_Items.Include
+                 (Variable_Ref (Copy), Constant_Ref 
(Mapping.From).Lookaheads.all, Added_One, Descriptor);
 
                More_To_Check := More_To_Check or Added_One;
             end loop;
diff --git a/packages/wisi/wisitoken-generate-lr-lr1_generate.adb 
b/packages/wisi/wisitoken-generate-lr-lr1_generate.adb
index 0f177d9..d148c67 100644
--- a/packages/wisi/wisitoken-generate-lr-lr1_generate.adb
+++ b/packages/wisi/wisitoken-generate-lr-lr1_generate.adb
@@ -100,7 +100,7 @@ package body WisiToken.Generate.LR.LR1_Generate is
       Found_State  : Unknown_State_Index;
 
    begin
-      C.Set_First (First_State_Index);
+      C.Set_First_Last (First_State_Index, First_State_Index - 1);
 
       Add (New_Item_Set, C, C_Tree, Descriptor, Include_Lookaheads => True);
 
diff --git a/packages/wisi/wisitoken-generate-lr.adb 
b/packages/wisi/wisitoken-generate-lr.adb
index b814885..54ddfd6 100644
--- a/packages/wisi/wisitoken-generate-lr.adb
+++ b/packages/wisi/wisitoken-generate-lr.adb
@@ -254,7 +254,7 @@ package body WisiToken.Generate.LR is
    procedure Add_Action
      (Symbol               : in     Token_ID;
       Action               : in     Parse_Action_Rec;
-      Action_List          : in out Action_Node_Ptr;
+      Action_List          : in out Action_Arrays.Vector;
       Closure              : in     LR1_Items.Item_Set;
       Grammar              : in     WisiToken.Productions.Prod_Arrays.Vector;
       Has_Empty_Production : in     Token_ID_Set;
@@ -263,7 +263,7 @@ package body WisiToken.Generate.LR is
       Conflicts            : in out Conflict_Lists.List;
       Descriptor           : in     WisiToken.Descriptor)
    is
-      Matching_Action : constant Action_Node_Ptr := Find (Symbol, Action_List);
+      Matching_Action : constant Action_Arrays.Find_Reference_Type := 
Action_List.Find (Symbol);
    begin
       if Trace_Generate > Detail then
          Ada.Text_IO.Put (Image (Symbol, Descriptor) & " => ");
@@ -271,8 +271,8 @@ package body WisiToken.Generate.LR is
          Ada.Text_IO.New_Line;
       end if;
 
-      if Matching_Action /= null then
-         if Is_In (Action, Matching_Action.Action) then
+      if Matching_Action.Element /= null then
+         if Is_In (Action, Matching_Action.Actions) then
             --  Action is already in the list.
             if Trace_Generate > Detail then
                Ada.Text_IO.Put_Line (" - already present");
@@ -287,10 +287,10 @@ package body WisiToken.Generate.LR is
                --  list of conflicting actions, so we keep it the first item 
in the
                --  list; no order in the rest of the list.
                Action_A : constant Parse_Action_Rec :=
-                 (if Action.Verb in Shift | Accept_It then Action else 
Matching_Action.Action.Item);
+                 (if Action.Verb in Shift | Accept_It then Action else 
Matching_Action.Actions.Item);
 
                Action_B : constant Parse_Action_Rec :=
-                 (if Action.Verb in Shift | Accept_It then 
Matching_Action.Action.Item else Action);
+                 (if Action.Verb in Shift | Accept_It then 
Matching_Action.Actions.Item else Action);
 
                New_Conflict : constant Conflict :=
                  (Action_A    => Action_A.Verb,
@@ -362,9 +362,9 @@ package body WisiToken.Generate.LR is
                end if;
 
                if Action.Verb = Shift then
-                  Matching_Action.Action := new Parse_Action_Node'(Action, 
Matching_Action.Action);
+                  Matching_Action.Actions := new Parse_Action_Node'(Action, 
Matching_Action.Actions);
                else
-                  Matching_Action.Action.Next := new 
Parse_Action_Node'(Action, Matching_Action.Action.Next);
+                  Matching_Action.Actions.Next := new 
Parse_Action_Node'(Action, Matching_Action.Actions.Next);
                end if;
             end;
          end if;
@@ -442,51 +442,9 @@ package body WisiToken.Generate.LR is
          end if;
       end loop;
 
-      --  Place a default error action at the end of every state.
-      --  (it should always have at least one action already).
-      declare
-         --  The default action, when nothing else matches an input
-         Default_Action : constant Action_Node :=
-           --  The symbol here is actually irrelevant; it is the
-           --  position as the last on a state's action list that makes
-           --  it the default.
-           (Symbol => Invalid_Token_ID,
-            Action => new Parse_Action_Node'(Parse_Action_Rec'(Verb => 
WisiToken.Parse.LR.Error), null),
-            Next   => null);
-
-         Last_Action : Action_Node_Ptr := Table.States (State).Action_List;
-      begin
-         if Last_Action = null then
-            --  This happens if the first production in the grammar is
-            --  not the start symbol production.
-            --
-            --  It also happens when the start symbol production does
-            --  not have an explicit EOF, or when there is more than
-            --  one production that has the start symbol on the left
-            --  hand side.
-            --
-            --  It also happens when the grammar is bad, for example:
-            --
-            --  declarations <= declarations & declaration
-            --
-            --  without 'declarations <= declaration'.
-            --
-            --  We continue generating the grammar, in order to help the user
-            --  debug this issue.
-            WisiToken.Generate.Error := True;
-
-            Ada.Text_IO.Put_Line
-              (Ada.Text_IO.Current_Error, "Error: state" & State_Index'Image 
(State) &
-                 " has no actions; bad grammar, or " &
-                 "first production in grammar must be the only start symbol 
production, " &
-                 "and it must must have an explicit EOF.");
-         else
-            while Last_Action.Next /= null loop
-               Last_Action := Last_Action.Next;
-            end loop;
-            Last_Action.Next := new Action_Node'(Default_Action);
-         end if;
-      end;
+      --  We don't place a default error action at the end of every state;
+      --  Parse.LR.Action_For returns Table.Error_Action when Symbol is not 
found.
+      Table.Error_Action := new Parse_Action_Node'((Verb => 
WisiToken.Parse.LR.Error), null);
 
       for Item of Closure.Goto_List loop
          if Item.Symbol in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal then
@@ -497,7 +455,7 @@ package body WisiToken.Generate.LR is
 
    procedure Add_Lookahead_Actions
      (Item                 : in     LR1_Items.Item;
-      Action_List          : in out Action_Node_Ptr;
+      Action_List          : in out Action_Arrays.Vector;
       Grammar              : in     WisiToken.Productions.Prod_Arrays.Vector;
       Has_Empty_Production : in     Token_ID_Set;
       First_Nonterm_Set    : in     Token_Array_Token_Set;
@@ -854,25 +812,21 @@ package body WisiToken.Generate.LR is
       Working_Set : LR1_Items.Item_Lists.List := Kernel.Set;
       Recursive   : Boolean := False;
 
-      function Find_Action (List : in Action_Node_Ptr; ID : in Token_ID) 
return Minimal_Action
-      is
-         Node : Action_Node_Ptr := List;
-      begin
-         loop
+      function Find_Action (List : in Action_Arrays.Vector; ID : in Token_ID) 
return Minimal_Action
+      is begin
+         for Node of List loop
             if Node.Symbol = ID then
-               case Node.Action.Item.Verb is
+               case Node.Actions.Item.Verb is
                when Shift =>
-                  return (Shift, ID, Node.Action.Item.State);
+                  return (Shift, ID, Node.Actions.Item.State);
                when Reduce =>
                   --  Item.Dot is a nonterm that starts with a nullable 
nonterm; reduce
                   --  to that first.
-                  return (Reduce, Node.Action.Item.Production.LHS, 0);
+                  return (Reduce, Node.Actions.Item.Production.LHS, 0);
                when Accept_It | WisiToken.Parse.LR.Error =>
                   raise SAL.Programmer_Error;
                end case;
             end if;
-            Node := Node.Next;
-            exit when Node = null;
          end loop;
          raise SAL.Programmer_Error;
       end Find_Action;
@@ -1219,6 +1173,7 @@ package body WisiToken.Generate.LR is
       Action_Names : in Names_Array_Array;
       Check_Names  : in Names_Array_Array)
    is
+      use all type SAL.Base_Peek_Type;
       use Ada.Containers;
       use Ada.Text_IO;
       File : File_Type;
@@ -1238,75 +1193,67 @@ package body WisiToken.Generate.LR is
       New_Line (File);
 
       for State of Table.States loop
-         declare
-            Node_I : Action_Node_Ptr := State.Action_List;
-         begin
-            loop
-               exit when Node_I = null;
-               --  Action first, so we know if Symbol is present (not when 
Error)
-               declare
-                  Node_J     : Parse_Action_Node_Ptr := Node_I.Action;
-                  Put_Symbol : Boolean               := True;
-               begin
-                  loop
-                     Put (File, Parse_Action_Verbs'Image (Node_J.Item.Verb));
+         Put (File, Trimmed_Image (State.Action_List.Length) & ' ');
+         for I in State.Action_List.First_Index .. 
State.Action_List.Last_Index loop
+            --  Action first, for historical reasons
+            declare
+               Node_I : Action_Node renames State.Action_List (I);
+               Node_J : Parse_Action_Node_Ptr := Node_I.Actions;
+            begin
+               loop
+                  Put (File, Parse_Action_Verbs'Image (Node_J.Item.Verb));
 
-                     case Node_J.Item.Verb is
-                     when Shift =>
-                        Put (File, State_Index'Image (Node_J.Item.State));
+                  case Node_J.Item.Verb is
+                  when Shift =>
+                     Put (File, State_Index'Image (Node_J.Item.State));
 
-                     when Reduce | Accept_It =>
-                        Put (File, Token_ID'Image (Node_J.Item.Production.LHS) 
&
-                               Integer'Image (Node_J.Item.Production.RHS));
+                  when Reduce | Accept_It =>
+                     Put (File, Token_ID'Image (Node_J.Item.Production.LHS) &
+                            Integer'Image (Node_J.Item.Production.RHS));
 
-                        if Action_Names (Node_J.Item.Production.LHS) /= null 
and then
-                          Action_Names 
(Node_J.Item.Production.LHS)(Node_J.Item.Production.RHS) /= null
-                        then
-                           Put (File, " true");
-                        else
-                           Put (File, " false");
-                        end if;
-                        if Check_Names (Node_J.Item.Production.LHS) /= null 
and then
-                          Check_Names 
(Node_J.Item.Production.LHS)(Node_J.Item.Production.RHS) /= null
-                        then
-                           Put (File, " true");
-                        else
-                           Put (File, " false");
-                        end if;
+                     if Action_Names (Node_J.Item.Production.LHS) /= null and 
then
+                       Action_Names 
(Node_J.Item.Production.LHS)(Node_J.Item.Production.RHS) /= null
+                     then
+                        Put (File, " true");
+                     else
+                        Put (File, " false");
+                     end if;
+                     if Check_Names (Node_J.Item.Production.LHS) /= null and 
then
+                       Check_Names 
(Node_J.Item.Production.LHS)(Node_J.Item.Production.RHS) /= null
+                     then
+                        Put (File, " true");
+                     else
+                        Put (File, " false");
+                     end if;
 
-                        Put (File, Ada.Containers.Count_Type'Image 
(Node_J.Item.Token_Count));
+                     Put (File, Ada.Containers.Count_Type'Image 
(Node_J.Item.Token_Count));
 
-                     when Parse.LR.Error =>
-                        --  Error action terminates the action list
-                        Put_Symbol := False;
-                     end case;
+                  when Parse.LR.Error =>
+                     raise SAL.Programmer_Error;
+                  end case;
 
-                     Node_J := Node_J.Next;
-                     exit when Node_J = null;
-                     Put (File, ' ');
-                  end loop;
-                  Put (File, ';');
-                  if Put_Symbol then
-                     Put (File, Token_ID'Image (Node_I.Symbol));
-                  end if;
-               end;
+                  Node_J := Node_J.Next;
+                  exit when Node_J = null;
+                  Put (File, ' ');
+               end loop;
+               Put (File, ';');
+               Put (File, Token_ID'Image (Node_I.Symbol));
+            end;
+            if I = State.Action_List.Last_Index then
+               Put_Line (File, ";");
+            else
                New_Line (File);
+            end if;
+         end loop;
 
-               Node_I := Node_I.Next;
+         if State.Goto_List.Length > 0 then
+            Put (File, Trimmed_Image (State.Goto_List.Length));
+            for Node of State.Goto_List loop
+               Put (File, Node.Symbol'Image & Node.State'Image);
             end loop;
-         end;
-
-         declare
-            Node_I : Goto_Node_Ptr := State.Goto_List;
-         begin
-            loop
-               exit when Node_I = null;
-               Put (File, Token_ID'Image (Symbol (Node_I)) & State_Index'Image 
(Parse.LR.State (Node_I)));
-               Node_I := Next (Node_I);
-            end loop;
-            Put (File, ';');
-            New_Line (File);
-         end;
+         end if;
+         Put (File, ';');
+         New_Line (File);
 
          if State.Kernel.Length = 0 then
             --  Not set for state 0
@@ -1455,34 +1402,27 @@ package body WisiToken.Generate.LR is
       use all type Ada.Containers.Count_Type;
       use Ada.Text_IO;
       use Ada.Strings.Fixed;
-      Action_Ptr : Action_Node_Ptr := State.Action_List;
-      Goto_Ptr   : Goto_Node_Ptr   := State.Goto_List;
    begin
-      while Action_Ptr /= null loop
-         Put ("   ");
-         if Action_Ptr.Next = null then
-            Put ("default" & (Descriptor.Image_Width - 7) * ' ' & " => ");
-
-         elsif Action_Ptr.Action.Item.Verb /= Parse.LR.Error then
-            Put (Image (Action_Ptr.Symbol, Descriptor) &
-                   (Descriptor.Image_Width - Image (Action_Ptr.Symbol, 
Descriptor)'Length) * ' '
-                   & " => ");
-         end if;
-         Put (Descriptor, Action_Ptr.Action);
+      for Action of State.Action_List loop
+         Put ("   " & Image (Action.Symbol, Descriptor) &
+                (Descriptor.Image_Width - Image (Action.Symbol, 
Descriptor)'Length) * ' '
+                & " => ");
+         Put (Descriptor, Action.Actions);
          New_Line;
-         Action_Ptr := Action_Ptr.Next;
       end loop;
 
-      if Goto_Ptr /= null then
+      --  The error line is redundant, but we keep it to match existing good 
parse tables.
+      Put_Line ("   default" & (Descriptor.Image_Width - 7) * ' ' & " => 
ERROR");
+
+      if State.Goto_List.Length > 0 then
          New_Line;
       end if;
 
-      while Goto_Ptr /= null loop
+      for Item of State.Goto_List loop
          Put_Line
-           ("   " & Image (Symbol (Goto_Ptr), Descriptor) &
-              (Descriptor.Image_Width - Image (Symbol (Goto_Ptr), 
Descriptor)'Length) * ' ' &
-              " goto state" & State_Index'Image (Parse.LR.State (Goto_Ptr)));
-         Goto_Ptr := Next (Goto_Ptr);
+           ("   " & Image (Item.Symbol, Descriptor) &
+              (Descriptor.Image_Width - Image (Item.Symbol, 
Descriptor)'Length) * ' ' &
+              " goto state" & Item.State'Image);
       end loop;
 
       New_Line;
diff --git a/packages/wisi/wisitoken-generate-lr.ads 
b/packages/wisi/wisitoken-generate-lr.ads
index 297689b..1bb9e2b 100644
--- a/packages/wisi/wisitoken-generate-lr.ads
+++ b/packages/wisi/wisitoken-generate-lr.ads
@@ -63,7 +63,7 @@ package WisiToken.Generate.LR is
    procedure Add_Action
      (Symbol               : in     Token_ID;
       Action               : in     Parse_Action_Rec;
-      Action_List          : in out Action_Node_Ptr;
+      Action_List          : in out Action_Arrays.Vector;
       Closure              : in     LR1_Items.Item_Set;
       Grammar              : in     WisiToken.Productions.Prod_Arrays.Vector;
       Has_Empty_Production : in     Token_ID_Set;
@@ -89,7 +89,7 @@ package WisiToken.Generate.LR is
 
    procedure Add_Lookahead_Actions
      (Item                 : in     LR1_Items.Item;
-      Action_List          : in out Action_Node_Ptr;
+      Action_List          : in out Action_Arrays.Vector;
       Grammar              : in     WisiToken.Productions.Prod_Arrays.Vector;
       Has_Empty_Production : in     Token_ID_Set;
       First_Nonterm_Set    : in     Token_Array_Token_Set;
diff --git a/packages/wisi/wisitoken-generate-lr1_items.adb 
b/packages/wisi/wisitoken-generate-lr1_items.adb
index 86cd8d9..f394b67 100644
--- a/packages/wisi/wisitoken-generate-lr1_items.adb
+++ b/packages/wisi/wisitoken-generate-lr1_items.adb
@@ -71,7 +71,7 @@ package body WisiToken.Generate.LR1_Items is
 
          Modified := True;
       else
-         Include (Ref (Found), Lookaheads, Modified);
+         Include (Variable_Ref (Found), Lookaheads, Modified);
       end if;
 
       return Modified;
@@ -306,7 +306,7 @@ package body WisiToken.Generate.LR1_Items is
       if Found_Tree = Item_Set_Trees.No_Element then
          return Unknown_State;
       else
-         return Item_Set_Tree.Constant_Ref (Found_Tree).State;
+         return Item_Set_Tree (Found_Tree).State;
       end if;
    end Find;
 
diff --git a/packages/wisi/wisitoken-generate.adb 
b/packages/wisi/wisitoken-generate.adb
index 769a581..eae0ca3 100644
--- a/packages/wisi/wisitoken-generate.adb
+++ b/packages/wisi/wisitoken-generate.adb
@@ -268,8 +268,7 @@ package body WisiToken.Generate is
       subtype Terminal is Token_ID range Descriptor.First_Terminal .. 
Descriptor.Last_Terminal;
    begin
       return Result : Token_Sequence_Arrays.Vector do
-         Result.Set_First (First'First (1));
-         Result.Set_Last (First'Last (1));
+         Result.Set_First_Last (First'First (1), First'Last (1));
 
          for I in First'Range (1) loop
             declare
diff --git a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-base.adb 
b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-base.adb
index ae60955..d8b03f3 100644
--- a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-base.adb
+++ b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-base.adb
@@ -24,11 +24,11 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
      (Parsers                 : not null access Parser_Lists.List;
       Parser_Status           : in              Parser_Status_Array;
       Min_Success_Check_Count : in              Natural;
+      Total_Enqueue_Count     : in              Natural;
       Check_Delta_Limit       : in              Natural;
       Enqueue_Limit           : in              Natural)
      return Boolean
    is
-      use all type SAL.Base_Peek_Type;
       Done_Count : SAL.Base_Peek_Type := 0;
    begin
       --  Return True if all parsers are done, or if any parser has a config
@@ -41,9 +41,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
                   --  fail; another parser succeeded, this one taking too long.
                   Done_Count := Done_Count + 1;
 
-               elsif P_Status.Parser_State.Recover.Enqueue_Count +
-                 P_Status.Parser_State.Recover.Config_Full_Count >= 
Enqueue_Limit
-               then
+               elsif Total_Enqueue_Count + 
P_Status.Parser_State.Recover.Config_Full_Count >= Enqueue_Limit then
                   --  fail
                   Done_Count := Done_Count + 1;
                end if;
@@ -90,7 +88,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
         (Parsers   : not null access Parser_Lists.List;
          Terminals : not null access constant Base_Token_Arrays.Vector)
       is
-         use all type SAL.Base_Peek_Type;
          Index : SAL.Peek_Type := 1;
       begin
          Supervisor.Parsers      := Parsers;
@@ -98,6 +95,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
          All_Parsers_Done        := False;
          Success_Counter         := 0;
          Min_Success_Check_Count := Natural'Last;
+         Total_Enqueue_Count     := 0;
          Fatal_Called            := False;
          Result                  := Recover_Status'First;
          Error_ID                := Ada.Exceptions.Null_Id;
@@ -133,10 +131,9 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
         (Parser_Index : out SAL.Base_Peek_Type;
          Config       : out Configuration;
          Status       : out Config_Status)
-        when (Fatal_Called or All_Parsers_Done) or else
-          Get_Barrier (Parsers, Parser_Status, Min_Success_Check_Count, 
Check_Delta_Limit, Enqueue_Limit)
+        when (Fatal_Called or All_Parsers_Done) or else Get_Barrier
+          (Parsers, Parser_Status, Min_Success_Check_Count, 
Total_Enqueue_Count, Check_Delta_Limit, Enqueue_Limit)
       is
-         use all type SAL.Base_Peek_Type;
          Done_Count     : SAL.Base_Peek_Type := 0;
          Min_Cost       : Integer            := Integer'Last;
          Min_Cost_Index : SAL.Base_Peek_Type;
@@ -190,13 +187,11 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
 
                         Done_Count := Done_Count + 1;
 
-                     elsif P_Status.Parser_State.Recover.Enqueue_Count +
-                       P_Status.Parser_State.Recover.Config_Full_Count >= 
Enqueue_Limit
-                     then
+                     elsif Total_Enqueue_Count + 
P_Status.Parser_State.Recover.Config_Full_Count >= Enqueue_Limit then
                         if Trace_McKenzie > Outline then
                            Put_Line
                              (Trace.all,
-                              P_Status.Parser_State.Label, "fail; enqueue 
limit (" &
+                              P_Status.Parser_State.Label, "fail; total 
enqueue limit (" &
                                 Enqueue_Limit'Image & " cost" &
                                 
P_Status.Parser_State.Recover.Config_Heap.Min_Key'Image & ")",
                               Task_ID => False);
@@ -274,7 +269,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
          Config       : in     Configuration;
          Configs      : in out Config_Heaps.Heap_Type)
       is
-         use all type SAL.Base_Peek_Type;
          Data : McKenzie_Data renames Parser_Status 
(Parser_Index).Parser_State.Recover;
       begin
          Put (Parser_Index, Configs); --  Decrements Active_Worker_Count.
@@ -331,7 +325,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
 
       procedure Put (Parser_Index : in SAL.Peek_Type; Configs : in out 
Config_Heaps.Heap_Type)
       is
-         use all type SAL.Base_Peek_Type;
          Configs_Count : constant SAL.Base_Peek_Type := Configs.Count; -- 
Before it is emptied, for Trace.
 
          P_Status : Base.Parser_Status renames Parser_Status (Parser_Index);
@@ -339,13 +332,14 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
       begin
          P_Status.Active_Workers := P_Status.Active_Workers - 1;
 
+         Total_Enqueue_Count := Total_Enqueue_Count + Integer (Configs_Count);
+         Data.Enqueue_Count  := Data.Enqueue_Count + Integer (Configs_Count);
          loop
             exit when Configs.Count = 0;
 
             --  [1] has a check for duplicate configs here; that only happens 
with
             --  higher costs, which take too long for our application.
             Data.Config_Heap.Add (Configs.Remove);
-            Data.Enqueue_Count := Data.Enqueue_Count + 1;
          end loop;
 
          if Trace_McKenzie > Detail then
@@ -353,7 +347,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
               (Trace.all, P_Status.Parser_State.Label,
                "enqueue:" & SAL.Base_Peek_Type'Image (Configs_Count) &
                  "/" & SAL.Base_Peek_Type'Image (Data.Config_Heap.Count) &
-                 "/" & Trimmed_Image (Data.Enqueue_Count) &
+                 "/" & Trimmed_Image (Total_Enqueue_Count) &
                  "/" & Trimmed_Image (Data.Check_Count) &
                  ", min cost:" &
                  (if Data.Config_Heap.Count > 0
@@ -363,14 +357,15 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
          end if;
       end Put;
 
-      procedure Config_Full (Parser_Index : in SAL.Peek_Type)
+      procedure Config_Full (Prefix : in String; Parser_Index : in 
SAL.Peek_Type)
       is
          P_Status : Base.Parser_Status renames Parser_Status (Parser_Index);
          Data : McKenzie_Data renames P_Status.Parser_State.Recover;
       begin
          Data.Config_Full_Count := Data.Config_Full_Count + 1;
          if Trace_McKenzie > Outline then
-            Put_Line (Trace.all, Label (Parser_Index), "config.ops is full; " 
& Data.Config_Full_Count'Image);
+            Put_Line (Trace.all, Label (Parser_Index), Prefix & ": config.ops 
is full; " &
+                        Data.Config_Full_Count'Image);
          end if;
       end Config_Full;
 
diff --git a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-base.ads 
b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-base.ads
index cde4bd5..f67df90 100644
--- a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-base.ads
+++ b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-base.ads
@@ -123,7 +123,7 @@ private package WisiToken.Parse.LR.McKenzie_Recover.Base is
       --
       --  Decrements active worker count.
 
-      procedure Config_Full (Parser_Index : in SAL.Peek_Type);
+      procedure Config_Full (Prefix : in String; Parser_Index : in 
SAL.Peek_Type);
       --  Report that a config.ops was full when trying to add another op.
       --  This is counted towards the enqueue limit.
 
@@ -149,6 +149,7 @@ private package WisiToken.Parse.LR.McKenzie_Recover.Base is
       All_Parsers_Done        : Boolean;
       Success_Counter         : Natural;
       Min_Success_Check_Count : Natural;
+      Total_Enqueue_Count     : Natural;
       Fatal_Called            : Boolean;
       Result                  : Recover_Status;
       Error_ID                : Ada.Exceptions.Exception_Id;
diff --git a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-explore.adb 
b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-explore.adb
index 272eadf..f749cfb 100644
--- a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-explore.adb
+++ b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-explore.adb
@@ -18,6 +18,7 @@
 pragma License (Modified_GPL);
 
 with Ada.Exceptions;
+with SAL.Gen_Bounded_Definite_Queues;
 with WisiToken.Parse.LR.McKenzie_Recover.Parse;
 with WisiToken.Parse.LR.Parser;
 package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
@@ -34,19 +35,19 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
       Cost_Delta        : in              Integer;
       Strategy          : in              Strategies)
    is
+      use Config_Op_Arrays;
       McKenzie_Param : McKenzie_Param_Type renames Shared.Table.McKenzie_Param;
 
       Op : constant Config_Op := (Insert, ID, Config.Current_Shared_Token, 
State, Config.Stack.Depth);
    begin
       Config.Strategy_Counts (Strategy) := Config.Strategy_Counts (Strategy) + 
1;
 
-      begin
-         Config.Ops.Append (Op);
-      exception
-      when SAL.Container_Full =>
-         Super.Config_Full (Parser_Index);
+      if Is_Full (Config.Ops) then
+         Super.Config_Full ("do_shift ops", Parser_Index);
          raise Bad_Config;
-      end;
+      else
+         Append (Config.Ops, Op);
+      end if;
 
       if Cost_Delta = 0 then
          Config.Cost := Config.Cost + McKenzie_Param.Insert (ID);
@@ -64,7 +65,12 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
       Config.Error_Token.ID := Invalid_Token_ID;
       Config.Check_Status   := (Label => WisiToken.Semantic_Checks.Ok);
 
-      Config.Stack.Push ((State, Syntax_Trees.Invalid_Node_Index, (ID, Virtual 
=> True, others => <>)));
+      if Config.Stack.Is_Full then
+         Super.Config_Full ("do_shift stack", Parser_Index);
+         raise Bad_Config;
+      else
+         Config.Stack.Push ((State, Syntax_Trees.Invalid_Node_Index, (ID, 
Virtual => True, others => <>)));
+      end if;
       if Trace_McKenzie > Detail then
          Base.Put
            ((if Label'Length > 0 then Label & ": " else "") & "insert " & 
Image (ID, Super.Trace.Descriptor.all),
@@ -84,7 +90,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
       Action            : in              Reduce_Action_Rec;
       Do_Language_Fixes : in              Boolean := True)
    is
-      use all type SAL.Base_Peek_Type;
       use all type Semantic_Checks.Check_Status_Label;
       use all type WisiToken.Parse.LR.Parser.Language_Fixes_Access;
 
@@ -114,16 +119,20 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
          end if;
 
          --  Finish the reduce; ignore the check fail.
-         Config.Stack.Pop (SAL.Base_Peek_Type (Config.Check_Token_Count));
+         if Config.Stack.Depth < SAL.Base_Peek_Type (Config.Check_Token_Count) 
then
+            raise SAL.Programmer_Error;
+         else
+            Config.Stack.Pop (SAL.Base_Peek_Type (Config.Check_Token_Count));
+         end if;
          Config.Error_Token.ID := Invalid_Token_ID;
          Config.Check_Status   := (Label => Ok);
       end case;
 
-      if Config.Stack.Depth = 0 or else Config.Stack (1).State = Unknown_State 
then
+      if Config.Stack.Depth = 0 or else Config.Stack.Peek.State = 
Unknown_State then
          raise Bad_Config;
       end if;
 
-      New_State := Goto_For (Table, Config.Stack (1).State, 
Action.Production.LHS);
+      New_State := Goto_For (Table, Config.Stack.Peek.State, 
Action.Production.LHS);
 
       if New_State = Unknown_State then
          if Trace_McKenzie > Extra then
@@ -143,7 +152,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
               ": state" & State_Index'Image (Prev_State) & " reduce" &
               Ada.Containers.Count_Type'Image (Action.Token_Count) & " to " &
               Image (Action.Production.LHS, Descriptor) & ", goto" &
-              State_Index'Image (New_State) & " via" & State_Index'Image 
(Config.Stack (2).State));
+              State_Index'Image (New_State) & " via" & State_Index'Image 
(Config.Stack.Peek (2).State));
       end if;
    end Do_Reduce_1;
 
@@ -166,7 +175,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
 
       Orig_Config : Configuration;
       Table       : Parse_Table renames Shared.Table.all;
-      Next_Action : Parse_Action_Node_Ptr := Action_For (Table, Config.Stack 
(1).State, Inserted_ID);
+      Next_Action : Parse_Action_Node_Ptr := Action_For (Table, 
Config.Stack.Peek.State, Inserted_ID);
    begin
       if Next_Action.Next /= null then
          Orig_Config := Config;
@@ -241,10 +250,11 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       --  If there are conflicts, all are parsed; if more than one succeed,
       --  all are enqueued in Local_Config_Heap, and this returns Abandon.
 
-      use all type SAL.Base_Peek_Type;
+      use Parse.Parse_Item_Arrays;
+      use Config_Op_Arrays;
       use all type Ada.Containers.Count_Type;
 
-      Parse_Items : Parse.Parse_Item_Arrays.Vector;
+      Parse_Items : aliased Parse.Parse_Item_Arrays.Vector;
 
       Dummy : Boolean := Parse.Parse
         (Super, Shared, Parser_Index, Parse_Items, Config,
@@ -254,15 +264,20 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
    begin
       --  This solution is from Language_Fixes; any cost increase is done 
there.
 
-      if Parse_Items.Length = 1 then
+      if Length (Parse_Items) = 1 then
          declare
-            Item : Parse.Parse_Item renames Parse_Items (1);
+            Item : Parse.Parse_Item renames 
Parse.Parse_Item_Array_Refs.Constant_Ref (Parse_Items, 1);
          begin
             if Item.Parsed and Item.Config.Current_Insert_Delete = 
No_Insert_Delete then
                --  Item.Config.Error_Token.ID, Check_Status are correct.
                Config := Item.Config;
 
-               Config.Ops.Append ((Fast_Forward, Config.Current_Shared_Token));
+               if Is_Full (Config.Ops) then
+                  Super.Config_Full ("fast_forward 1", Parser_Index);
+                  return Abandon;
+               else
+                  Append (Config.Ops, (Fast_Forward, 
Config.Current_Shared_Token));
+               end if;
                Config.Minimal_Complete_State := None;
                Config.Matching_Begin_Done    := False;
                return Continue;
@@ -271,26 +286,32 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
             end if;
          end;
       else
-         for Item of Parse_Items loop
-            if Item.Parsed and Item.Config.Current_Insert_Delete = 
No_Insert_Delete then
-               Item.Config.Ops.Append ((Fast_Forward, 
Item.Config.Current_Shared_Token));
-               Item.Config.Minimal_Complete_State := None;
-               Item.Config.Matching_Begin_Done    := False;
-               Local_Config_Heap.Add (Item.Config);
+         for I in First_Index (Parse_Items) .. Last_Index (Parse_Items) loop
+            declare
+               Item : Parse.Parse_Item renames 
Parse.Parse_Item_Array_Refs.Variable_Ref (Parse_Items, I);
+            begin
+               if Item.Parsed and Item.Config.Current_Insert_Delete = 
No_Insert_Delete then
+                  if Is_Full (Config.Ops) then
+                     Super.Config_Full ("fast_forward 2", Parser_Index);
+                     return Abandon;
+                  else
+                     Append (Item.Config.Ops, (Fast_Forward, 
Item.Config.Current_Shared_Token));
+                  end if;
+                  Item.Config.Minimal_Complete_State := None;
+                  Item.Config.Matching_Begin_Done    := False;
+                  Local_Config_Heap.Add (Item.Config);
 
-               if Trace_McKenzie > Detail then
-                  Base.Put ("fast forward enqueue", Super, Shared, 
Parser_Index, Item.Config);
+                  if Trace_McKenzie > Detail then
+                     Base.Put ("fast forward enqueue", Super, Shared, 
Parser_Index, Item.Config);
+                  end if;
                end if;
-            end if;
+            end;
          end loop;
          return Abandon;
       end if;
    exception
    when Bad_Config =>
       return Abandon;
-   when SAL.Container_Full =>
-      Super.Config_Full (Parser_Index);
-      return Abandon;
    end Fast_Forward;
 
    function Check
@@ -301,25 +322,31 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       Local_Config_Heap : in out          Config_Heaps.Heap_Type)
      return Check_Status
    is
+      use Config_Op_Arrays, Config_Op_Array_Refs;
+      use Parse.Parse_Item_Arrays;
       use all type Semantic_Checks.Check_Status_Label;
 
       McKenzie_Param : McKenzie_Param_Type renames Shared.Table.McKenzie_Param;
 
-      Parse_Items : Parse.Parse_Item_Arrays.Vector;
+      Parse_Items : aliased Parse.Parse_Item_Arrays.Vector;
       Result      : Check_Status := Continue;
 
-      function Max_Push_Back_Token_Index (Ops : in Config_Op_Arrays.Vector) 
return WisiToken.Base_Token_Index
+      function Max_Push_Back_Token_Index (Ops : aliased in 
Config_Op_Arrays.Vector) return WisiToken.Base_Token_Index
       is
          Result : WisiToken.Base_Token_Index := 
WisiToken.Base_Token_Index'First;
       begin
          --  For Ops since last Fast_Forward, return maximum Token_Index in a
          --  Push_Back. If there are no such ops, return a value that will be
          --  less than the current token index.
-         for Op of reverse Ops loop
-            exit when Op.Op = Fast_Forward;
-            if Op.Op = Push_Back and then Op.PB_Token_Index > Result then
-               Result := Op.PB_Token_Index;
-            end if;
+         for I in reverse First_Index (Ops) .. Last_Index (Ops) loop
+            declare
+               Op : Config_Op renames Constant_Ref (Ops, I);
+            begin
+               exit when Op.Op = Fast_Forward;
+               if Op.Op = Push_Back and then Op.PB_Token_Index > Result then
+                  Result := Op.PB_Token_Index;
+               end if;
+            end;
          end loop;
          return Result;
       end Max_Push_Back_Token_Index;
@@ -339,22 +366,22 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       --  Set Config.error to reflect failure, if it is at current token, so
       --  Use_Minimal_Complete_Actions can see it.
       declare
-         Item          : Parse.Parse_Item renames Parse_Items 
(Parse_Items.First_Index);
-         Parsed_Config : Configuration renames Item.Config;
+         Item : Parse.Parse_Item renames 
Parse.Parse_Item_Array_Refs.Constant_Ref
+           (Parse_Items, First_Index (Parse_Items));
       begin
-         if Parsed_Config.Check_Status.Label /= Ok then
-            Config.Check_Status := Parsed_Config.Check_Status;
-            Config.Error_Token  := Parsed_Config.Error_Token;
+         if Item.Config.Check_Status.Label /= Ok then
+            Config.Check_Status := Item.Config.Check_Status;
+            Config.Error_Token  := Item.Config.Error_Token;
 
             --  Explore cannot fix a check fail; only Language_Fixes can. The
             --  "ignore error" case is handled immediately on return from
             --  Language_Fixes in Process_One, below.
             Result := Abandon;
 
-         elsif Parsed_Config.Error_Token.ID /= Invalid_Token_ID then
+         elsif Item.Config.Error_Token.ID /= Invalid_Token_ID then
 
             if Item.Shift_Count = 0 then
-               Config.Error_Token  := Parsed_Config.Error_Token;
+               Config.Error_Token  := Item.Config.Error_Token;
                Config.Check_Status := (Label => Ok);
             else
                --  Error is not at current token, but Explore might find 
something
@@ -370,39 +397,41 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       --  All Parse_Items either failed or were not parsed; if they failed
       --  and made progress, enqueue them so Language_Fixes can try to fix
       --  them.
-      for Item of Parse_Items loop
-         if Item.Config.Error_Token.ID /= Invalid_Token_ID and then
-           Item.Shift_Count > 0 and then
-           Max_Push_Back_Token_Index (Item.Config.Ops) < 
Item.Config.Current_Shared_Token - 1
-         then
-            --  Some progress was made; explore at the new error point. It is
-            --  likely that there is only one actual error point, and this 
moves
-            --  away from it, so we give it a cost.
-            begin
-               Item.Config.Minimal_Complete_State := None;
-               Item.Config.Matching_Begin_Done    := False;
-               if Item.Config.Ops (Item.Config.Ops.Last_Index).Op = 
Fast_Forward then
-
-                  Item.Config.Cost := Item.Config.Cost + 
McKenzie_Param.Fast_Forward;
-
-                  Item.Config.Ops (Item.Config.Ops.Last_Index).FF_Token_Index 
:=
-                    Item.Config.Current_Shared_Token;
-
-               else
-                  Item.Config.Cost := Item.Config.Cost + 
McKenzie_Param.Fast_Forward;
-
-                  Item.Config.Ops.Append ((Fast_Forward, 
Item.Config.Current_Shared_Token));
+      for I in First_Index (Parse_Items) .. Last_Index (Parse_Items) loop
+         declare
+            Item : Parse.Parse_Item renames 
Parse.Parse_Item_Array_Refs.Variable_Ref (Parse_Items, I);
+         begin
+            if Item.Config.Error_Token.ID /= Invalid_Token_ID and then
+              Item.Shift_Count > 0 and then
+              Max_Push_Back_Token_Index (Item.Config.Ops) < 
Item.Config.Current_Shared_Token - 1
+            then
+               --  Some progress was made; explore at the new error point. It 
is
+               --  likely that there is only one actual error point, and this 
moves
+               --  away from it, so we give it a cost.
+               begin
+                  Item.Config.Minimal_Complete_State := None;
+                  Item.Config.Matching_Begin_Done    := False;
+                  if Constant_Ref (Item.Config.Ops, Last_Index 
(Item.Config.Ops)).Op = Fast_Forward then
+                     Item.Config.Cost := Item.Config.Cost + 
McKenzie_Param.Fast_Forward;
+                     Variable_Ref (Item.Config.Ops, Last_Index 
(Item.Config.Ops)).FF_Token_Index :=
+                       Item.Config.Current_Shared_Token;
+                  else
+                     Item.Config.Cost := Item.Config.Cost + 
McKenzie_Param.Fast_Forward;
+
+                     if Is_Full (Item.Config.Ops) then
+                        Super.Config_Full ("check 1", Parser_Index);
+                        raise Bad_Config;
+                     else
+                        Append (Item.Config.Ops, (Fast_Forward, 
Item.Config.Current_Shared_Token));
+                     end if;
+                  end if;
+               end;
+               Local_Config_Heap.Add (Item.Config);
+               if Trace_McKenzie > Detail then
+                  Base.Put ("new error point ", Super, Shared, Parser_Index, 
Item.Config);
                end if;
-            exception
-            when SAL.Container_Full =>
-               Super.Config_Full (Parser_Index);
-               raise Bad_Config;
-            end;
-            Local_Config_Heap.Add (Item.Config);
-            if Trace_McKenzie > Detail then
-               Base.Put ("new error point ", Super, Shared, Parser_Index, 
Item.Config);
             end if;
-         end if;
+         end;
       end loop;
 
       if Trace_McKenzie > Extra then
@@ -465,19 +494,23 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
 
          --  loop only exits via returns above
       end loop;
+   exception
+   when Bad_Config =>
+      --  From Do_Reduce_1
+      return False;
    end Check_Reduce_To_Start;
 
    procedure Try_Push_Back
      (Super             : not null access Base.Supervisor;
       Shared            : not null access Base.Shared;
       Parser_Index      : in              SAL.Base_Peek_Type;
-      Config            : in out          Configuration;
+      Config            : in              Configuration;
       Local_Config_Heap : in out          Config_Heaps.Heap_Type)
    is
       Trace          : WisiToken.Trace'Class renames Super.Trace.all;
       McKenzie_Param : McKenzie_Param_Type renames Shared.Table.McKenzie_Param;
 
-      Token : constant Recover_Token := Config.Stack (1).Token;
+      Token : constant Recover_Token := Config.Stack.Peek.Token;
    begin
       --  Try pushing back the stack top, to allow insert and other
       --  operations at that point.
@@ -491,6 +524,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
          --  in trying to redo it.
 
          declare
+            use Config_Op_Arrays;
             New_Config : Configuration := Config;
          begin
             New_Config.Error_Token.ID := Invalid_Token_ID;
@@ -498,14 +532,19 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
 
             New_Config.Stack.Pop;
 
-            if Token.Min_Terminal_Index = Invalid_Token_Index then
-               --  Token is empty; Config.current_shared_token does not 
change, no
-               --  cost increase.
-               New_Config.Ops.Append ((Push_Back, Token.ID, 
New_Config.Current_Shared_Token));
+            if Is_Full (New_Config.Ops) then
+               Super.Config_Full ("push_back 1", Parser_Index);
+               raise Bad_Config;
             else
-               New_Config.Cost := New_Config.Cost + McKenzie_Param.Push_Back 
(Token.ID);
-               New_Config.Ops.Append ((Push_Back, Token.ID, 
Token.Min_Terminal_Index));
-               New_Config.Current_Shared_Token := Token.Min_Terminal_Index;
+               if Token.Min_Terminal_Index = Invalid_Token_Index then
+                  --  Token is empty; Config.current_shared_token does not 
change, no
+                  --  cost increase.
+                  Append (New_Config.Ops, (Push_Back, Token.ID, 
New_Config.Current_Shared_Token));
+               else
+                  New_Config.Cost := New_Config.Cost + 
McKenzie_Param.Push_Back (Token.ID);
+                  Append (New_Config.Ops, (Push_Back, Token.ID, 
Token.Min_Terminal_Index));
+                  New_Config.Current_Shared_Token := Token.Min_Terminal_Index;
+               end if;
             end if;
             New_Config.Strategy_Counts (Explore_Table) := 
New_Config.Strategy_Counts (Explore_Table) + 1;
 
@@ -517,25 +556,22 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
             end if;
          end;
       end if;
-   exception
-   when SAL.Container_Full =>
-      Super.Config_Full (Parser_Index);
    end Try_Push_Back;
 
    function Just_Pushed_Back_Or_Deleted (Config : in Configuration; ID : in 
Token_ID) return Boolean
    is
+      use Config_Op_Arrays, Config_Op_Array_Refs;
       use all type Ada.Containers.Count_Type;
    begin
-      if Config.Ops.Length = 0 then
+      if Length (Config.Ops) = 0 then
          return False;
       else
          declare
-            Last_Op : Config_Op renames Config.Ops (Config.Ops.Last_Index);
+            Last_Op : Config_Op renames Constant_Ref (Config.Ops, Last_Index 
(Config.Ops));
          begin
-            return Last_Op = (Push_Back, ID, Config.Current_Shared_Token) or
-              Last_Op = (Push_Back, ID, Config.Current_Shared_Token - 1) or
-            Last_Op = (Delete, ID, Config.Current_Shared_Token) or
-              Last_Op = (Delete, ID, Config.Current_Shared_Token - 1);
+            return
+              (Last_Op.Op = Push_Back and then Last_Op.PB_ID = ID) or
+              (Last_Op.Op = Delete and then Last_Op.Del_ID = ID);
          end;
       end if;
    end Just_Pushed_Back_Or_Deleted;
@@ -544,19 +580,20 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
      (Super             : not null access Base.Supervisor;
       Shared            : not null access Base.Shared;
       Parser_Index      : in              SAL.Base_Peek_Type;
-      Config            : in out          Configuration;
+      Config            : in              Configuration;
       Local_Config_Heap : in out          Config_Heaps.Heap_Type)
    is
       Trace : WisiToken.Trace'Class renames Super.Trace.all;
       McKenzie_Param : McKenzie_Param_Type renames Shared.Table.McKenzie_Param;
 
-      Token : constant Recover_Token := Config.Stack (1).Token;
+      Token : constant Recover_Token := Config.Stack.Peek.Token;
    begin
       --  Try expanding the nonterm on the stack top, to allow pushing_back
       --  its components, or insert and other operations at that point.
 
       if Undo_Reduce_Valid (Config.Stack, Super.Parser_State 
(Parser_Index).Tree) then
          declare
+            use Config_Op_Arrays;
             New_Config  : Configuration := Config;
             Token_Count : Ada.Containers.Count_Type;
          begin
@@ -570,8 +607,12 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
                New_Config.Cost := New_Config.Cost + McKenzie_Param.Undo_Reduce 
(Token.ID);
             end if;
 
-            New_Config.Ops.Append ((Undo_Reduce, Token.ID, Token_Count));
-
+            if Is_Full (New_Config.Ops) then
+               Super.Config_Full ("undo_reduce 1", Parser_Index);
+               raise Bad_Config;
+            else
+               Append (New_Config.Ops, (Undo_Reduce, Token.ID, Token_Count));
+            end if;
             New_Config.Strategy_Counts (Explore_Table) := 
New_Config.Strategy_Counts (Explore_Table) + 1;
 
             Local_Config_Heap.Add (New_Config);
@@ -582,9 +623,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
             end if;
          end;
       end if;
-   exception
-   when SAL.Container_Full =>
-      Super.Config_Full (Parser_Index);
    end Try_Undo_Reduce;
 
    procedure Insert_From_Action_List
@@ -606,8 +644,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
       --  conflicts or semantic check fails encountered, they create other
       --  configs to enqueue.
 
-      I : Action_List_Iterator := First (Table.States 
(Config.Stack.Peek.State));
-
       Current_Token : constant Token_ID := Current_Token_ID_Peek
         (Shared.Terminals.all, Config.Current_Shared_Token, 
Config.Insert_Delete, Config.Current_Insert_Delete);
 
@@ -616,92 +652,93 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       --  Most of the time, all the reductions in a state are the same. So
       --  we cache the first result. This includes one reduction; if an
       --  associated semantic check failed, this does not include the fixes.
-   begin
-
-      loop
-         exit when I.Is_Done;
 
-         declare
-            ID     : constant Token_ID := I.Symbol;
-            Action : Parse_Action_Rec renames I.Action;
-         begin
-            if ID /= EOF_ID and then --  can't insert eof
-              ID /= Invalid_Token_ID -- invalid when Verb = Error
-            then
-               if Just_Pushed_Back_Or_Deleted (Config, ID) then
-                  if Trace_McKenzie > Extra then
-                     Put_Line
-                       (Super.Trace.all, Super.Label (Parser_Index), "Insert: 
abandon " & Image (ID, Descriptor) &
-                          ": undo push_back");
-                  end if;
-               elsif ID = Current_Token then
-                  --  This needed because we allow explore when the error is 
not at the
-                  --  explore point; it prevents inserting useless tokens (ie
-                  --  'identifier ;' in ada_lite).
-                  if Trace_McKenzie > Extra then
-                     Put_Line
-                       (Super.Trace.all, Super.Label (Parser_Index), "Insert: 
abandon " & Image (ID, Descriptor) &
-                          ": current token");
-                  end if;
+      I : Parse_Action_Node_Ptr;
+   begin
+      for Node of Table.States (Config.Stack.Peek.State).Action_List loop
+         I := Node.Actions;
+         loop
+            exit when I = null;
+            declare
+               ID     : constant Token_ID := Node.Symbol;
+               Action : Parse_Action_Rec renames I.Item;
+            begin
+               if ID /= EOF_ID and then -- can't insert eof
+                 ID /= Invalid_Token_ID -- invalid when Verb = Error
+               then
+                  if Just_Pushed_Back_Or_Deleted (Config, ID) then
+                     if Trace_McKenzie > Extra then
+                        Put_Line
+                          (Super.Trace.all, Super.Label (Parser_Index), 
"Insert: abandon " & Image (ID, Descriptor) &
+                             ": undo push_back");
+                     end if;
+                  elsif ID = Current_Token then
+                     --  This needed because we allow explore when the error 
is not at the
+                     --  explore point; it prevents inserting useless tokens 
(ie
+                     --  'identifier ;' in ada_lite).
+                     if Trace_McKenzie > Extra then
+                        Put_Line
+                          (Super.Trace.all, Super.Label (Parser_Index), 
"Insert: abandon " & Image (ID, Descriptor) &
+                             ": current token");
+                     end if;
 
-               elsif (for some Minimal of Minimal_Insert => ID = Minimal) then
-                  --  Was inserted by Insert_Minimal_Complete_Actions
-                  null;
+                  elsif (for some Minimal of Minimal_Insert => ID = Minimal) 
then
+                     --  Was inserted by Insert_Minimal_Complete_Actions
+                     null;
 
-               else
-                  case Action.Verb is
-                  when Shift =>
-                     declare
-                        New_Config : Configuration := Config;
-                     begin
-                        New_Config.Error_Token.ID := Invalid_Token_ID;
-                        New_Config.Check_Status   := (Label => 
WisiToken.Semantic_Checks.Ok);
-
-                        Do_Shift
-                          ("Insert", Super, Shared, Parser_Index, 
Local_Config_Heap, New_Config, Action.State, ID,
-                           Cost_Delta => 0,
-                           Strategy   => Explore_Table);
-                     end;
-
-                  when Reduce =>
-                     if not Equal (Action, Cached_Action) then
+                  else
+                     case Action.Verb is
+                     when Shift =>
                         declare
                            New_Config : Configuration := Config;
                         begin
-                           New_Config.Error_Token.ID := Invalid_Token_ID;
-                           New_Config.Check_Status   := (Label => 
WisiToken.Semantic_Checks.Ok);
-
-                           Do_Reduce_1 ("Insert", Super, Shared, Parser_Index, 
Local_Config_Heap, New_Config, Action);
-                           Cached_Config := New_Config;
-                           Cached_Action := Action;
-
-                           Do_Reduce_2
-                             ("Insert", Super, Shared, Parser_Index, 
Local_Config_Heap, New_Config, ID,
+                           Do_Shift
+                             ("Insert", Super, Shared, Parser_Index, 
Local_Config_Heap, New_Config, Action.State, ID,
                               Cost_Delta => 0,
                               Strategy   => Explore_Table);
                         end;
 
-                     else
-                        declare
-                           New_Config : Configuration := Cached_Config;
-                        begin
-                           Do_Reduce_2
-                             ("Insert", Super, Shared, Parser_Index, 
Local_Config_Heap, New_Config, ID,
-                              Cost_Delta => 0,
-                              Strategy   => Explore_Table);
-                        end;
-                     end if;
+                     when Reduce =>
+                        if not Equal (Action, Cached_Action) then
+                           declare
+                              New_Config : Configuration := Config;
+                           begin
+                              New_Config.Error_Token.ID := Invalid_Token_ID;
+                              New_Config.Check_Status   := (Label => 
WisiToken.Semantic_Checks.Ok);
+
+                              Do_Reduce_1
+                                ("Insert", Super, Shared, Parser_Index, 
Local_Config_Heap, New_Config, Action);
+                              Cached_Config := New_Config;
+                              Cached_Action := Action;
+
+                              Do_Reduce_2
+                                ("Insert", Super, Shared, Parser_Index, 
Local_Config_Heap, New_Config, ID,
+                                 Cost_Delta => 0,
+                                 Strategy   => Explore_Table);
+                           end;
+
+                        else
+                           declare
+                              New_Config : Configuration := Cached_Config;
+                           begin
+                              Do_Reduce_2
+                                ("Insert", Super, Shared, Parser_Index, 
Local_Config_Heap, New_Config, ID,
+                                 Cost_Delta => 0,
+                                 Strategy   => Explore_Table);
+                           end;
+                        end if;
 
-                  when Accept_It =>
-                     raise SAL.Programmer_Error with "found test case for 
Process_One Accept_It";
+                     when Accept_It =>
+                        raise SAL.Programmer_Error with "found test case for 
Process_One Accept_It";
 
-                  when Error =>
-                     null;
-                  end case;
+                     when Error =>
+                        null;
+                     end case;
+                  end if;
                end if;
-            end if;
-         end;
-         I.Next;
+            end;
+            I := I.Next;
+         end loop;
       end loop;
    end Insert_From_Action_List;
 
@@ -714,7 +751,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
      return Token_ID_Arrays.Vector
       --  Return tokens inserted (empty if none).
    is
-      use all type SAL.Base_Peek_Type;
       use Ada.Containers;
 
       Table         : Parse_Table renames Shared.Table.all;
@@ -727,32 +763,42 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
          Config : Configuration;
       end record;
 
-      package Item_Queues is new SAL.Gen_Unbounded_Definite_Queues (Work_Item);
+      package Item_Queues is new SAL.Gen_Bounded_Definite_Queues (Work_Item);
+      use Item_Queues;
 
-      Work : Item_Queues.Queue;
+      Work : Queue_Type (10);
+      --  The required queue size depends on the number of multiple-item
+      --  Minimal_Complete_Actions encountered. That is limited by compound
+      --  statement nesting, and by the frequency of such actions.
 
       function To_Reduce_Action (Action : in Minimal_Action) return 
Reduce_Action_Rec
         is (Reduce, (Action.Nonterm, 0), null, null, Action.Token_Count);
 
       procedure Minimal_Do_Shift (Action : in Minimal_Action; Config : in out 
Configuration)
-      is begin
+      is
+         use Config_Op_Arrays, Config_Op_Array_Refs;
+      begin
          --  Check for a cycle. We compare stack depth as well as state, so
          --  nested compound statements don't look like a cycle; see
          --  test_mckenzie_recover Push_Back_1. We don't check for cycles in
          --  Insert_From_Action_List because we assume cost eliminates cycles
          --  there; Minimal_Complete_Delta is usually negative, so cost does
          --  not necessarily increase here.
-         for Op of reverse Config.Ops loop
-            if Op.Op = Insert and then
-              (Op.Ins_ID = Action.ID and Op.State = Action.State and 
Op.Stack_Depth = Config.Stack.Depth)
-            then
-               if Trace_McKenzie > Extra then
-                  Put_Line
-                    (Super.Trace.all, Super.Label (Parser_Index), 
"Minimal_Complete_Actions: abandon " &
-                       Image (Action.ID, Descriptor) & Action.State'Image & ": 
cycle");
+         for I in reverse First_Index (Config.Ops) .. Last_Index (Config.Ops) 
loop
+            declare
+               Op : Config_Op renames Constant_Ref (Config.Ops, I);
+            begin
+               if Op.Op = Insert and then
+                 (Op.Ins_ID = Action.ID and Op.State = Action.State and 
Op.Stack_Depth = Config.Stack.Depth)
+               then
+                  if Trace_McKenzie > Extra then
+                     Put_Line
+                       (Super.Trace.all, Super.Label (Parser_Index), 
"Minimal_Complete_Actions: abandon " &
+                          Image (Action.ID, Descriptor) & Action.State'Image & 
": cycle");
+                  end if;
+                  return;
                end if;
-               return;
-            end if;
+            end;
          end loop;
 
          --  We don't check Action.ID = Current_Token; the error is at the
@@ -804,7 +850,12 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
             return;
          elsif Actions.Length = 1 then
             if (not Reduce_Only) or Actions (Actions.First_Index).Verb = 
Reduce then
-               Work.Add ((Actions (Actions.First_Index), Config));
+               if Is_Full (Work) then
+                  Super.Config_Full ("Minimal_Complete_Actions 1", 
Parser_Index);
+                  raise Bad_Config;
+               else
+                  Add (Work, (Actions (Actions.First_Index), Config));
+               end if;
             end if;
             return;
          end if;
@@ -848,7 +899,12 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
 
          for I in Length'Range loop
             if (Use_Recursive and Item_Not_Recursive (I)) or ((not 
Use_Recursive) and Length (I) = Min_Length) then
-               Work.Add ((Actions (I), Config));
+               if Is_Full (Work) then
+                  Super.Config_Full ("Minimal_Complete_Actions 2", 
Parser_Index);
+                  raise Bad_Config;
+               else
+                  Add (Work, (Actions (I), Config));
+               end if;
             elsif Trace_McKenzie > Extra then
                Put_Line
                  (Super.Trace.all, Super.Label (Parser_Index), 
"Minimal_Complete_Actions: drop " &
@@ -878,10 +934,10 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
          Orig_Config, Reduce_Only => False);
 
       loop
-         exit when Work.Is_Empty;
+         exit when Is_Empty (Work);
 
          declare
-            Item : Work_Item := Work.Get;
+            Item : Work_Item := Get (Work);
          begin
             if Trace_McKenzie > Extra then
                Put_Line
@@ -976,7 +1032,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
          return;
       end if;
 
-      --  Set up for Parse
       declare
          New_Config  : Configuration := Config;
       begin
@@ -985,41 +1040,46 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
          end loop;
 
          declare
-            use all type SAL.Base_Peek_Type;
-            Parse_Items : Parse.Parse_Item_Arrays.Vector;
+            use Parse.Parse_Item_Arrays;
+            Parse_Items : aliased Parse.Parse_Item_Arrays.Vector;
             Dummy : constant Boolean :=  Parse.Parse
               (Super, Shared, Parser_Index, Parse_Items, New_Config,
                Shared_Token_Goal => Invalid_Token_Index,
                All_Conflicts     => True,
                Trace_Prefix      => "parse Matching_Begin");
          begin
-            for Item of Parse_Items loop
-               if Item.Parsed and Item.Config.Current_Insert_Delete = 
No_Insert_Delete then
-                  Item.Config.Matching_Begin_Done := True;
-                  Item.Config.Cost := Item.Config.Cost + 
Table.McKenzie_Param.Matching_Begin;
-                  Item.Config.Strategy_Counts (Matching_Begin) := 
Item.Config.Strategy_Counts (Matching_Begin) + 1;
-                  Item.Config.Error_Token.ID := Invalid_Token_ID;
-                  Item.Config.Check_Status := (Label => 
WisiToken.Semantic_Checks.Ok);
-
-                  if Trace_McKenzie > Detail then
-                     Base.Put
-                       ("Matching_Begin: insert " & Image 
(Matching_Begin_Tokens, Descriptor),
-                        Super, Shared, Parser_Index, Item.Config);
-                  end if;
-                  Local_Config_Heap.Add (Item.Config);
-               else
-                  if Trace_McKenzie > Detail then
-                     Base.Put
-                     ("Matching_Begin: abandon " & Image 
(Matching_Begin_Tokens, Descriptor) & ": parse fail",
-                        Super, Shared, Parser_Index, Item.Config);
+            for I in First_Index (Parse_Items) .. Last_Index (Parse_Items) loop
+               declare
+                  Item : Parse.Parse_Item renames 
Parse.Parse_Item_Array_Refs.Variable_Ref (Parse_Items, I);
+               begin
+                  if Item.Parsed and Item.Config.Current_Insert_Delete = 
No_Insert_Delete then
+                     Item.Config.Matching_Begin_Done := True;
+                     Item.Config.Cost := Item.Config.Cost + 
Table.McKenzie_Param.Matching_Begin;
+                     Item.Config.Strategy_Counts (Matching_Begin) := 
Item.Config.Strategy_Counts (Matching_Begin) + 1;
+                     Item.Config.Error_Token.ID := Invalid_Token_ID;
+                     Item.Config.Check_Status := (Label => 
WisiToken.Semantic_Checks.Ok);
+
+                     if Trace_McKenzie > Detail then
+                        Base.Put
+                          ("Matching_Begin: insert " & Image 
(Matching_Begin_Tokens, Descriptor),
+                           Super, Shared, Parser_Index, Item.Config);
+                     end if;
+                     Local_Config_Heap.Add (Item.Config);
+                  else
+                     if Trace_McKenzie > Detail then
+                        Base.Put
+                          ("Matching_Begin: abandon " & Image 
(Matching_Begin_Tokens, Descriptor) & ": parse fail",
+                           Super, Shared, Parser_Index, Item.Config);
+                     end if;
                   end if;
-               end if;
+               end;
             end loop;
          end;
       end;
    exception
    when SAL.Container_Full =>
-      Super.Config_Full (Parser_Index);
+      --  From config_ops_sorted
+      Super.Config_Full ("Minimal_Complete_Actions 3", Parser_Index);
    end Insert_Matching_Begin;
 
    procedure Try_Insert_Terminal
@@ -1083,6 +1143,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       Config            : in out          Configuration;
       Local_Config_Heap : in out          Config_Heaps.Heap_Type)
    is
+      use Config_Op_Arrays;
       use all type Parser.Language_String_ID_Set_Access;
 
       Descriptor  : WisiToken.Descriptor renames Shared.Trace.Descriptor.all;
@@ -1116,22 +1177,29 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
       end String_ID_Set;
 
       procedure String_Literal_In_Stack
-        (New_Config        : in out Configuration;
+        (Label             : in     String;
+         New_Config        : in out Configuration;
          Matching          : in     SAL.Peek_Type;
          String_Literal_ID : in     Token_ID)
       is
+         use Parse.Parse_Item_Arrays;
+
          Saved_Shared_Token : constant WisiToken.Token_Index := 
New_Config.Current_Shared_Token;
 
          Tok         : Recover_Token;
          J           : WisiToken.Token_Index;
-         Parse_Items : Parse.Parse_Item_Arrays.Vector;
+         Parse_Items : aliased Parse.Parse_Item_Arrays.Vector;
       begin
          --  Matching is the index of a token on New_Config.Stack containing a 
string
          --  literal. Push back thru that token, then delete all tokens after
          --  the string literal to Saved_Shared_Token.
+         if not Has_Space (New_Config.Ops, Ada.Containers.Count_Type 
(Matching)) then
+            Super.Config_Full ("insert quote 1 " & Label, Parser_Index);
+            raise Bad_Config;
+         end if;
          for I in 1 .. Matching loop
             Tok := New_Config.Stack.Pop.Token;
-            New_Config.Ops.Append ((Push_Back, Tok.ID, 
Tok.Min_Terminal_Index));
+            Append (New_Config.Ops, (Push_Back, Tok.ID, 
Tok.Min_Terminal_Index));
          end loop;
 
          New_Config.Current_Shared_Token := Tok.Min_Terminal_Index;
@@ -1148,12 +1216,12 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
               (Super, Shared, Parser_Index, Parse_Items, New_Config,
                Shared_Token_Goal => J,
                All_Conflicts     => False,
-               Trace_Prefix      => "insert quote parse pushback")
+               Trace_Prefix      => "insert quote parse pushback " & Label)
             then
                --  The non-deleted tokens parsed without error. We don't care 
if any
                --  conflicts were encountered; we are not using the parse 
result.
-               New_Config := Parse_Items (1).Config;
-               New_Config.Ops.Append ((Fast_Forward, 
New_Config.Current_Shared_Token));
+               New_Config := Parse.Parse_Item_Array_Refs.Constant_Ref 
(Parse_Items, 1).Config;
+               Append (New_Config.Ops, (Fast_Forward, 
New_Config.Current_Shared_Token));
             else
                raise SAL.Programmer_Error;
             end if;
@@ -1161,11 +1229,16 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
          when Bad_Config =>
             raise SAL.Programmer_Error;
          end;
-         J := New_Config.Current_Shared_Token; -- parse result
-         loop
-            exit when J = Saved_Shared_Token;
-            New_Config.Ops.Append ((Delete, Shared.Terminals.all (J).ID, J));
-            J := J + 1;
+
+         if not Has_Space
+           (New_Config.Ops, Ada.Containers.Count_Type (Saved_Shared_Token - 1 
- New_Config.Current_Shared_Token))
+         then
+            Super.Config_Full ("insert quote 2 " & Label, Parser_Index);
+            raise Bad_Config;
+         end if;
+
+         for J in New_Config.Current_Shared_Token .. Saved_Shared_Token - 1 
loop
+            Append (New_Config.Ops, (Delete, Shared.Terminals.all (J).ID, J));
          end loop;
 
          New_Config.Current_Shared_Token := Saved_Shared_Token;
@@ -1186,13 +1259,18 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
          --  This is a guess, so we give it a nominal cost
          New_Config.Cost := New_Config.Cost + 1;
 
+         if not Has_Space (New_Config.Ops, Ada.Containers.Count_Type (Last - 
First)) then
+            Super.Config_Full ("insert quote 3 " & Label, Parser_Index);
+            raise Bad_Config;
+         end if;
+
          for I in First .. Last loop
-            New_Config.Ops.Append ((Delete, Shared.Terminals.all (I).ID, I));
+            Append (New_Config.Ops, (Delete, Shared.Terminals.all (I).ID, I));
          end loop;
          New_Config.Current_Shared_Token := Last + 1;
 
          --  Let explore do insert after these deletes.
-         New_Config.Ops.Append ((Fast_Forward, 
New_Config.Current_Shared_Token));
+         Append (New_Config.Ops, (Fast_Forward, 
New_Config.Current_Shared_Token));
 
          if New_Config.Resume_Token_Goal - Check_Limit < 
New_Config.Current_Shared_Token then
             New_Config.Resume_Token_Goal := New_Config.Current_Shared_Token + 
Check_Limit;
@@ -1206,12 +1284,8 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
          New_Config.Strategy_Counts (String_Quote) := 
New_Config.Strategy_Counts (String_Quote) + 1;
 
          if Trace_McKenzie > Detail then
-            Base.Put ("insert missing quote " & Label & " ", Super, Shared, 
Parser_Index, New_Config);
+            Base.Put ("insert quote " & Label & " ", Super, Shared, 
Parser_Index, New_Config);
          end if;
-      exception
-      when SAL.Container_Full =>
-         Super.Config_Full (Parser_Index);
-         raise Bad_Config;
       end Finish;
 
    begin
@@ -1263,7 +1337,12 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
             loop
                Token := New_Config.Stack.Pop.Token;
                if Token.Byte_Region /= Null_Buffer_Region then
-                  New_Config.Ops.Append ((Push_Back, Token.ID, 
Token.Min_Terminal_Index));
+                  if Is_Full (New_Config.Ops) then
+                     Super.Config_Full ("insert quote 4 a", Parser_Index);
+                     raise Bad_Config;
+                  else
+                     Append (New_Config.Ops, (Push_Back, Token.ID, 
Token.Min_Terminal_Index));
+                  end if;
                   exit;
                end if;
             end loop;
@@ -1289,7 +1368,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
          --  stack.
 
          declare
-            use all type SAL.Base_Peek_Type;
             Matching : SAL.Peek_Type := 1;
          begin
             Find_Descendant_ID
@@ -1301,7 +1379,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
                --  happens in a high cost non critical config.
                if Trace_McKenzie > Detail then
                   Put_Line
-                    (Super.Trace.all, Super.Label (Parser_Index), "abandon 
missing quote b; string literal in virtual");
+                    (Super.Trace.all, Super.Label (Parser_Index), "insert 
quote b abandon; string literal in virtual");
                end if;
                return;
             end if;
@@ -1309,7 +1387,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
             declare
                New_Config : Configuration := Config;
             begin
-               String_Literal_In_Stack (New_Config, Matching, 
Lexer_Error_Token.ID);
+               String_Literal_In_Stack ("b", New_Config, Matching, 
Lexer_Error_Token.ID);
 
                Finish
                  ("b", New_Config, Config.Current_Shared_Token, 
Shared.Line_Begin_Token.all (Current_Line + 1) - 1);
@@ -1342,7 +1420,12 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
             loop
                Token := New_Config.Stack.Pop.Token;
                if Token.Byte_Region /= Null_Buffer_Region then
-                  New_Config.Ops.Append ((Push_Back, Token.ID, 
Token.Min_Terminal_Index));
+                  if Is_Full (New_Config.Ops) then
+                     Super.Config_Full ("insert quote 5 d", Parser_Index);
+                     raise Bad_Config;
+                  else
+                     Append (New_Config.Ops, (Push_Back, Token.ID, 
Token.Min_Terminal_Index));
+                  end if;
                   exit;
                end if;
             end loop;
@@ -1362,7 +1445,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
          --  on the stack containing the string literal that should be extended
          --  to the found quote. See test_mckenzie_recover.adb String_Quote_1.
          declare
-            use all type SAL.Base_Peek_Type;
             Matching : SAL.Peek_Type := 1;
          begin
             --  Lexer_Error_Token is a string literal; find a matching one.
@@ -1377,7 +1459,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
                declare
                   New_Config : Configuration := Config;
                begin
-                  String_Literal_In_Stack (New_Config, Matching, 
Lexer_Error_Token.ID);
+                  String_Literal_In_Stack ("e", New_Config, Matching, 
Lexer_Error_Token.ID);
 
                   Finish ("e", New_Config, Config.Current_Shared_Token, 
Lexer_Error_Token_Index);
                   Local_Config_Heap.Add (New_Config);
@@ -1386,9 +1468,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
          end;
       end if;
    exception
-   when SAL.Container_Full =>
-      Super.Config_Full (Parser_Index);
-
    when Bad_Config =>
       null;
    end Try_Insert_Quote;
@@ -1397,11 +1476,12 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
      (Super             : not null access Base.Supervisor;
       Shared            : not null access Base.Shared;
       Parser_Index      : in              SAL.Base_Peek_Type;
-      Config            : in out          Configuration;
+      Config            : in              Configuration;
       Local_Config_Heap : in out          Config_Heaps.Heap_Type)
    is
       --  Try deleting (= skipping) the current shared input token.
 
+      use Config_Op_Arrays, Config_Op_Array_Refs;
       use all type Ada.Containers.Count_Type;
       Trace       : WisiToken.Trace'Class renames Super.Trace.all;
       EOF_ID      : Token_ID renames Trace.Descriptor.EOI_ID;
@@ -1413,20 +1493,25 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
    begin
       if ID /= EOF_ID and then
          --  can't delete EOF
-         (Config.Ops.Length = 0 or else
+         (Length (Config.Ops) = 0 or else
            --  Don't delete an ID we just inserted; waste of time
-           (not Equal (Config.Ops (Config.Ops.Last_Index), (Insert, ID, 
Config.Current_Shared_Token, 1, 0))))
+           (not Equal (Constant_Ref (Config.Ops, Last_Index (Config.Ops)),
+                       (Insert, ID, Config.Current_Shared_Token, 1, 0))))
       then
          declare
             New_Config : Configuration := Config;
 
             function Matching_Push_Back return Boolean
             is begin
-               for Op of reverse New_Config.Ops loop
-                  exit when not (Op.Op in Undo_Reduce | Push_Back | Delete);
-                  if Op = (Push_Back, ID, New_Config.Current_Shared_Token) then
-                     return True;
-                  end if;
+               for I in reverse First_Index (New_Config.Ops) .. Last_Index 
(New_Config.Ops) loop
+                  declare
+                     Op : Config_Op renames Config_Op_Array_Refs.Variable_Ref 
(New_Config.Ops, I).Element.all;
+                  begin
+                     exit when not (Op.Op in Undo_Reduce | Push_Back | Delete);
+                     if Op = (Push_Back, ID, New_Config.Current_Shared_Token) 
then
+                        return True;
+                     end if;
+                  end;
                end loop;
                return False;
             end Matching_Push_Back;
@@ -1443,7 +1528,12 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
                New_Config.Cost := Natural'Max (Natural'First, New_Config.Cost 
- McKenzie_Param.Push_Back (ID));
             end if;
 
-            New_Config.Ops.Append ((Delete, ID, Config.Current_Shared_Token));
+            if Is_Full (New_Config.Ops) then
+               Super.Config_Full ("delete", Parser_Index);
+               raise Bad_Config;
+            else
+               Append (New_Config.Ops, (Delete, ID, 
Config.Current_Shared_Token));
+            end if;
             New_Config.Current_Shared_Token := New_Config.Current_Shared_Token 
+ 1;
             loop
                exit when not Super.Parser_State 
(Parser_Index).Prev_Deleted.Contains (New_Config.Current_Shared_Token);
@@ -1462,9 +1552,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
             end if;
          end;
       end if;
-   exception
-   when SAL.Container_Full =>
-      Super.Config_Full (Parser_Index);
    end Try_Delete_Input;
 
    procedure Process_One
@@ -1477,7 +1564,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
 
       use all type Base.Config_Status;
       use all type Parser.Language_Fixes_Access;
-      use all type SAL.Base_Peek_Type;
       use all type Semantic_Checks.Check_Status_Label;
 
       Trace      : WisiToken.Trace'Class renames Super.Trace.all;
@@ -1561,7 +1647,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
                   --  finish reduce.
                   Config.Stack.Pop (SAL.Base_Peek_Type 
(Config.Check_Token_Count));
 
-                  New_State := Goto_For (Table, Config.Stack (1).State, 
Config.Error_Token.ID);
+                  New_State := Goto_For (Table, Config.Stack.Peek.State, 
Config.Error_Token.ID);
 
                   if New_State = Unknown_State then
                      if Config.Stack.Depth = 1 then
@@ -1572,7 +1658,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
                      else
                         raise SAL.Programmer_Error with
                           "process_one found test case for new_state = 
Unknown; old state " &
-                          Trimmed_Image (Config.Stack (1).State) & " nonterm " 
& Image
+                          Trimmed_Image (Config.Stack.Peek.State) & " nonterm 
" & Image
                             (Config.Error_Token.ID, Trace.Descriptor.all);
                      end if;
                   end if;
@@ -1621,6 +1707,8 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       --
       --  All possible permutations will be explored.
 
+      pragma Assert (Config.Stack.Depth > 0);
+
       Try_Insert_Terminal (Super, Shared, Parser_Index, Config, 
Local_Config_Heap);
 
       if None_Since_FF (Config.Ops, Delete) and then
@@ -1652,9 +1740,12 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
 
       Super.Put (Parser_Index, Local_Config_Heap);
    exception
-   when E : others =>
+   when Bad_Config =>
       --  Just abandon this config; tell Super we are done.
       Super.Put (Parser_Index, Local_Config_Heap);
+
+   when E : others =>
+      Super.Put (Parser_Index, Local_Config_Heap);
       if Debug_Mode then
          raise;
       elsif Trace_McKenzie > Outline then
diff --git a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-parse.adb 
b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-parse.adb
index 963cf1a..5db933e 100644
--- a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-parse.adb
+++ b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-parse.adb
@@ -26,8 +26,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
       Nonterm         :    out Recover_Token;
       Default_Virtual : in     Boolean)
    is
-      use all type SAL.Base_Peek_Type;
-
       Min_Terminal_Index_Set : Boolean := False;
    begin
       Nonterm :=
@@ -36,7 +34,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
          others  => <>);
 
       for I in Tokens'Range loop
-         Tokens (I) := Stack (Tokens'Last - I + 1).Token;
+         Tokens (I) := Stack.Peek (Tokens'Last - I + 1).Token;
       end loop;
 
       for T of Tokens loop
@@ -67,13 +65,13 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
       Default_Virtual : in              Boolean)
      return Semantic_Checks.Check_Status
    is
-      use all type SAL.Base_Peek_Type;
       use all type Semantic_Checks.Semantic_Check;
       use all type Semantic_Checks.Check_Status_Label;
 
       Last   : constant SAL.Base_Peek_Type := SAL.Base_Peek_Type 
(Action.Token_Count);
       Tokens : Recover_Token_Array (1 .. Last);
    begin
+      pragma Assert (Stack.Depth > Last);
       Compute_Nonterm (Action.Production.LHS, Stack, Tokens, Nonterm, 
Default_Virtual);
 
       if Action.Check = null then
@@ -92,13 +90,13 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
    end Reduce_Stack;
 
    function Parse_One_Item
-     (Super             : not null access Base.Supervisor;
-      Shared            : not null access Base.Shared;
-      Parser_Index      : in              SAL.Peek_Type;
-      Parse_Items       : in out          Parse_Item_Arrays.Vector;
-      Parse_Item_Index  : in              Positive;
-      Shared_Token_Goal : in              Base_Token_Index;
-      Trace_Prefix      : in              String)
+     (Super             :         not null access Base.Supervisor;
+      Shared            :         not null access Base.Shared;
+      Parser_Index      :         in              SAL.Peek_Type;
+      Parse_Items       : aliased in out          Parse_Item_Arrays.Vector;
+      Parse_Item_Index  :         in              Positive;
+      Shared_Token_Goal :         in              Base_Token_Index;
+      Trace_Prefix      :         in              String)
      return Boolean
    is
       --  Perform parse actions on Parse_Items (Parse_Item_Index), until one
@@ -111,15 +109,16 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
       --  If any actions have conflicts, append the conflict configs and 
actions to
       --  Parse_Items.
 
+      use Parse_Item_Arrays;
+      use Sorted_Insert_Delete_Arrays;
       use all type Ada.Containers.Count_Type;
-      use all type SAL.Base_Peek_Type;
       use all type Semantic_Checks.Check_Status_Label;
 
       Trace      : WisiToken.Trace'Class renames Super.Trace.all;
       Descriptor : WisiToken.Descriptor renames Super.Trace.Descriptor.all;
       Table      : Parse_Table renames Shared.Table.all;
 
-      Item   : Parse_Item renames Parse_Items (Parse_Item_Index);
+      Item   : Parse_Item renames Parse_Item_Array_Refs.Variable_Ref 
(Parse_Items, Parse_Item_Index).Element.all;
       Config : Configuration renames Item.Config;
       Action : Parse_Action_Node_Ptr renames Item.Action;
 
@@ -142,7 +141,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
          if Trace_McKenzie > Extra then
             if Config.Current_Insert_Delete /= No_Insert_Delete then
                Put_Line (Trace, Super.Label (Parser_Index), Trace_Prefix & ": 
Insert_Delete: " &
-                           Image (Insert_Delete_Arrays.Vector 
(Config.Insert_Delete), Trace.Descriptor.all));
+                           Image (Config.Insert_Delete, Trace.Descriptor.all));
             end if;
          end if;
 
@@ -156,14 +155,14 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
       Item.Parsed := True;
 
       if Action = null then
-         Action := Action_For (Table, Config.Stack (1).State, 
Current_Token.ID);
+         Action := Action_For (Table, Config.Stack.Peek.State, 
Current_Token.ID);
       end if;
 
       loop
          Conflict := Action.Next;
          loop
             exit when Conflict = null;
-            if Parse_Items.Is_Full then
+            if Is_Full (Parse_Items) then
                if Trace_McKenzie > Outline then
                   Put_Line (Trace, Super.Label (Parser_Index), Trace_Prefix & 
": too many conflicts; abandoning");
                end if;
@@ -180,7 +179,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
                           Image (Conflict.Item, Descriptor));
                   end if;
 
-                  Parse_Items.Append ((New_Config, Conflict, Parsed => False, 
Shift_Count => Item.Shift_Count));
+                  Append (Parse_Items, (New_Config, Conflict, Parsed => False, 
Shift_Count => Item.Shift_Count));
                end;
             end if;
             Conflict := Conflict.Next;
@@ -193,7 +192,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
                  ":" & Image (Current_Token, Descriptor) &
                  " : " & Image (Action.Item, Descriptor) &
                  (if Action.Item.Verb = Reduce
-                  then " via" & Config.Stack (SAL.Peek_Type 
(Action.Item.Token_Count + 1)).State'Image
+                  then " via" & Config.Stack.Peek (SAL.Peek_Type 
(Action.Item.Token_Count + 1)).State'Image
                   else ""));
          end if;
 
@@ -269,10 +268,10 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
          exit when not Success or
            Action.Item.Verb = Accept_It or
            (if Shared_Token_Goal = Invalid_Token_Index
-            then Config.Insert_Delete.Length = 0
+            then Length (Config.Insert_Delete) = 0
             else Config.Current_Shared_Token > Shared_Token_Goal);
 
-         Action := Action_For (Table, Config.Stack (1).State, 
Current_Token.ID);
+         Action := Action_For (Table, Config.Stack.Peek.State, 
Current_Token.ID);
       end loop;
 
       Config.Current_Shared_Token := Restore_Terminals_Current;
@@ -281,35 +280,41 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
    end Parse_One_Item;
 
    function Parse
-     (Super             : not null access Base.Supervisor;
-      Shared            : not null access Base.Shared;
-      Parser_Index      : in              SAL.Peek_Type;
-      Parse_Items       :    out          Parse_Item_Arrays.Vector;
-      Config            : in              Configuration;
-      Shared_Token_Goal : in              Base_Token_Index;
-      All_Conflicts     : in              Boolean;
-      Trace_Prefix      : in              String)
+     (Super             :         not null access Base.Supervisor;
+      Shared            :         not null access Base.Shared;
+      Parser_Index      :         in              SAL.Peek_Type;
+      Parse_Items       : aliased    out          Parse_Item_Arrays.Vector;
+      Config            :         in              Configuration;
+      Shared_Token_Goal :         in              Base_Token_Index;
+      All_Conflicts     :         in              Boolean;
+      Trace_Prefix      :         in              String)
      return Boolean
    is
+      use Parse_Item_Arrays;
       Trace : WisiToken.Trace'Class renames Super.Trace.all;
 
       Last_Parsed : Natural;
       Success     : Boolean;
    begin
-      Parse_Items.Clear;
-      Parse_Items.Append ((Config, Action => null, Parsed => False, 
Shift_Count => 0));
+      Clear (Parse_Items);
+      Append (Parse_Items, (Config, Action => null, Parsed => False, 
Shift_Count => 0));
 
       --  Clear any errors; so they reflect the parse result.
-      Parse_Items (Parse_Items.First_Index).Config.Error_Token.ID := 
Invalid_Token_ID;
-      Parse_Items (Parse_Items.First_Index).Config.Check_Status   := (Label => 
Semantic_Checks.Ok);
-
-      Last_Parsed := Parse_Items.First_Index;
+      declare
+         Config : Configuration renames Parse_Item_Array_Refs.Variable_Ref
+           (Parse_Items, First_Index (Parse_Items)).Config;
+      begin
+         Config.Error_Token.ID := Invalid_Token_ID;
+         Config.Check_Status   := (Label => Semantic_Checks.Ok);
+      end;
+
+      Last_Parsed := First_Index (Parse_Items);
       loop
          --  Loop over initial config and any conflicts.
          Success := Parse_One_Item
            (Super, Shared, Parser_Index, Parse_Items, Last_Parsed, 
Shared_Token_Goal, Trace_Prefix);
 
-         exit when Parse_Items.Last_Index = Last_Parsed;
+         exit when Last_Index (Parse_Items) = Last_Parsed;
 
          exit when Success and not All_Conflicts;
 
diff --git a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-parse.ads 
b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-parse.ads
index e5e4d36..abd8946 100644
--- a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-parse.ads
+++ b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-parse.ads
@@ -17,6 +17,7 @@
 
 pragma License (Modified_GPL);
 
+with SAL.Gen_Bounded_Definite_Vectors.Gen_Refs;
 with WisiToken.Parse.LR.McKenzie_Recover.Base;
 private package WisiToken.Parse.LR.McKenzie_Recover.Parse is
 
@@ -53,15 +54,17 @@ private package WisiToken.Parse.LR.McKenzie_Recover.Parse is
    package Parse_Item_Arrays is new SAL.Gen_Bounded_Definite_Vectors 
(Positive, Parse_Item, Capacity => 10);
    --  Parse_Item_Arrays.Capacity sets maximum conflicts in one call to Parse
 
+   package Parse_Item_Array_Refs is new Parse_Item_Arrays.Gen_Refs;
+
    function Parse
-     (Super             : not null access Base.Supervisor;
-      Shared            : not null access Base.Shared;
-      Parser_Index      : in              SAL.Peek_Type;
-      Parse_Items       :    out          Parse_Item_Arrays.Vector;
-      Config            : in              Configuration;
-      Shared_Token_Goal : in              Base_Token_Index;
-      All_Conflicts     : in              Boolean;
-      Trace_Prefix      : in              String)
+     (Super             :         not null access Base.Supervisor;
+      Shared            :         not null access Base.Shared;
+      Parser_Index      :         in              SAL.Peek_Type;
+      Parse_Items       : aliased    out          Parse_Item_Arrays.Vector;
+      Config            :         in              Configuration;
+      Shared_Token_Goal :         in              Base_Token_Index;
+      All_Conflicts     :         in              Boolean;
+      Trace_Prefix      :         in              String)
      return Boolean;
    --  Attempt to parse Config and any conflict configs. If not
    --  All_Conflicts, return when Config.Insert_Delete is all processed,
diff --git a/packages/wisi/wisitoken-parse-lr-mckenzie_recover.adb 
b/packages/wisi/wisitoken-parse-lr-mckenzie_recover.adb
index 49c2106..c53f0ef 100644
--- a/packages/wisi/wisitoken-parse-lr-mckenzie_recover.adb
+++ b/packages/wisi/wisitoken-parse-lr-mckenzie_recover.adb
@@ -91,25 +91,25 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
    --  problem, and would mean a task that terminates due to an exception
    --  is never restarted.
 
-   function To_Recover
-     (Parser_Stack : in Parser_Lists.Parser_Stacks.Stack;
-      Tree         : in Syntax_Trees.Tree)
-     return Recover_Stacks.Stack
+   procedure To_Recover
+     (Parser_Stack : in     Parser_Lists.Parser_Stacks.Stack;
+      Tree         : in     Syntax_Trees.Tree;
+      Stack        : in out Recover_Stacks.Stack)
    is
-      use all type SAL.Base_Peek_Type;
-      Result : Recover_Stacks.Stack;
-      Depth  : constant SAL.Peek_Type := Parser_Stack.Depth;
+      Depth : constant SAL.Peek_Type := Parser_Stack.Depth;
    begin
-      Result.Set_Depth (Depth);
-      for I in 1 .. Depth loop
+      pragma Assert (Stack.Depth = 0);
+      if Stack.Size < Depth then
+         raise SAL.Programmer_Error with "recover stack needs more space;" & 
Depth'Image;
+      end if;
+      for I in reverse 1 .. Depth loop
          declare
             Item  : Parser_Lists.Parser_Stack_Item renames Parser_Stack (I);
             Token : constant Recover_Token := (if I = Depth then (others => 
<>) else Tree.Recover_Token (Item.Token));
          begin
-            Result.Set (I, Depth, (Item.State, Item.Token, Token));
+            Stack.Push ((Item.State, Item.Token, Token));
          end;
       end loop;
-      return Result;
    end To_Recover;
 
    procedure Recover_Init
@@ -119,7 +119,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       use all type WisiToken.Parse.LR.Parser.Language_Fixes_Access;
 
       Trace  : WisiToken.Trace'Class renames Shared_Parser.Trace.all;
-      Config : constant Configuration_Access := 
Parser_State.Recover.Config_Heap.Add (Configuration'(others => <>));
+      Config : Configuration;
       Error  : Parse_Error renames Parser_State.Errors 
(Parser_State.Errors.Last);
    begin
       Parser_State.Recover.Enqueue_Count := Parser_State.Recover.Enqueue_Count 
+ 1;
@@ -148,7 +148,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       --  Additional initialization of Parser_State.Recover is done in
       --  Supervisor.Initialize.
 
-      Config.Stack := To_Recover (Parser_State.Stack, Parser_State.Tree);
+      To_Recover (Parser_State.Stack, Parser_State.Tree, Config.Stack);
 
       --  Parser_State.Recover_Insert_Delete must be empty (else we would not 
get
       --  here). Therefore Parser_State current token is in
@@ -160,7 +160,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       when Action =>
          Config.Error_Token := Parser_State.Tree.Recover_Token 
(Error.Error_Token);
          if Trace_McKenzie > Detail then
-            Put ("enqueue", Trace, Parser_State.Label, 
Shared_Parser.Terminals, Config.all,
+            Put ("enqueue", Trace, Parser_State.Label, 
Shared_Parser.Terminals, Config,
                  Task_ID => False);
          end if;
 
@@ -168,7 +168,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
          if Shared_Parser.Language_Fixes = null then
             --  The only fix is to ignore the error.
             if Trace_McKenzie > Detail then
-               Put ("enqueue", Trace, Parser_State.Label, 
Shared_Parser.Terminals, Config.all,
+               Put ("enqueue", Trace, Parser_State.Label, 
Shared_Parser.Terminals, Config,
                     Task_ID => False);
             end if;
 
@@ -179,15 +179,15 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
             --  solution; see McKenzie_Recover.Explore Process_One.
 
             Config.Check_Status      := Error.Check_Status;
-            Config.Error_Token       := Config.Stack (1).Token;
+            Config.Error_Token       := Config.Stack.Peek.Token;
             Config.Check_Token_Count := Undo_Reduce (Config.Stack, 
Parser_State.Tree);
 
-            Config.Ops.Append ((Undo_Reduce, Config.Error_Token.ID, 
Config.Check_Token_Count));
+            Config_Op_Arrays.Append (Config.Ops, (Undo_Reduce, 
Config.Error_Token.ID, Config.Check_Token_Count));
 
             if Trace_McKenzie > Detail then
                Put ("undo_reduce " & Image
                       (Config.Error_Token.ID, Trace.Descriptor.all), Trace, 
Parser_State.Label,
-                    Shared_Parser.Terminals, Config.all, Task_ID => False);
+                    Shared_Parser.Terminals, Config, Task_ID => False);
             end if;
          end if;
 
@@ -196,12 +196,13 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
          --  recovery.
          raise SAL.Programmer_Error;
       end case;
+
+      Parser_State.Recover.Config_Heap.Add (Config);
    end Recover_Init;
 
    function Recover (Shared_Parser : in out LR.Parser.Parser) return 
Recover_Status
    is
       use all type Parser.Post_Recover_Access;
-      use all type SAL.Base_Peek_Type;
       Trace : WisiToken.Trace'Class renames Shared_Parser.Trace.all;
 
       Parsers : Parser_Lists.List renames Shared_Parser.Parsers;
@@ -302,6 +303,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       --  the same check here is premature optimization.
       declare
          use Parser_Lists;
+
          Cur         : Cursor             := Parsers.First;
          Solutions   : SAL.Base_Peek_Type := 0;
          Spawn_Limit : SAL.Base_Peek_Type := Shared_Parser.Max_Parallel; -- 
per parser
@@ -357,6 +359,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
                      Trace.Put_Line
                        (Integer'Image (Cur.Label) &
                           ": fail, enqueue" & Integer'Image 
(Data.Enqueue_Count) &
+                          (if Data.Config_Full_Count > 0 then ", config_full" 
& Data.Config_Full_Count'Image else "") &
                           ", check " & Integer'Image (Data.Check_Count) &
                           ", max shared_token " & WisiToken.Token_Index'Image 
(Shared_Parser.Terminals.Last_Index));
                   end if;
@@ -381,6 +384,8 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
                --  Can't have active 'renames State_Ref' when terminate a 
parser
                declare
                   use Parser_Lists;
+                  use Config_Op_Arrays, Config_Op_Array_Refs;
+                  use Sorted_Insert_Delete_Arrays;
 
                   Parser_State : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref;
 
@@ -396,7 +401,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
                   Shared_Token_Changed  : Boolean := False;
                   Current_Token_Virtual : Boolean := False;
 
-                  Sorted_Insert_Delete : Sorted_Insert_Delete_Arrays.Vector;
+                  Sorted_Insert_Delete : aliased 
Sorted_Insert_Delete_Arrays.Vector;
 
                   procedure Apply_Prev_Token
                   is begin
@@ -467,163 +472,187 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
                   --  also avoids enlarging a non-flushed branched tree, which 
saves
                   --  time and space.
 
-                  for Op of Result.Ops loop
-                     case Op.Op is
-                     when Fast_Forward =>
-                        if Op.FF_Token_Index < Min_Op_Token_Index then
-                           Min_Op_Token_Index := Op.FF_Token_Index;
-                        end if;
+                  for I in First_Index (Result.Ops) .. Last_Index (Result.Ops) 
loop
+                     declare
+                        Op : Config_Op renames Constant_Ref (Result.Ops, I);
+                     begin
+                        case Op.Op is
+                        when Fast_Forward =>
+                           if Op.FF_Token_Index < Min_Op_Token_Index then
+                              Min_Op_Token_Index := Op.FF_Token_Index;
+                           end if;
 
-                     when Undo_Reduce =>
-                        null;
+                        when Undo_Reduce =>
+                           null;
 
-                     when Push_Back =>
-                        if Op.PB_Token_Index /= Invalid_Token_Index then
-                           if Op.PB_Token_Index < Min_Op_Token_Index then
-                              Min_Op_Token_Index := Op.PB_Token_Index;
-                           end if;
-                           if Op.PB_Token_Index < Min_Push_Back_Token_Index 
then
-                              Min_Push_Back_Token_Index := Op.PB_Token_Index;
+                        when Push_Back =>
+                           if Op.PB_Token_Index /= Invalid_Token_Index then
+                              if Op.PB_Token_Index < Min_Op_Token_Index then
+                                 Min_Op_Token_Index := Op.PB_Token_Index;
+                              end if;
+                              if Op.PB_Token_Index < Min_Push_Back_Token_Index 
then
+                                 Min_Push_Back_Token_Index := 
Op.PB_Token_Index;
+                              end if;
                            end if;
-                        end if;
 
-                     when Insert =>
-                        if Op.Ins_Token_Index /= Invalid_Token_Index then
-                           if Op.Ins_Token_Index < Min_Op_Token_Index then
-                              Min_Op_Token_Index := Op.Ins_Token_Index;
-                           end if;
-                           if Op.Ins_Token_Index < Min_Push_Back_Token_Index 
then
-                              Min_Push_Back_Token_Index := Op.Ins_Token_Index;
+                        when Insert =>
+                           if Op.Ins_Token_Index /= Invalid_Token_Index then
+                              if Op.Ins_Token_Index < Min_Op_Token_Index then
+                                 Min_Op_Token_Index := Op.Ins_Token_Index;
+                              end if;
+                              if Op.Ins_Token_Index < 
Min_Push_Back_Token_Index then
+                                 Min_Push_Back_Token_Index := 
Op.Ins_Token_Index;
+                              end if;
                            end if;
-                        end if;
 
-                     when Delete =>
-                        if Op.Del_Token_Index /= Invalid_Token_Index then
-                           if Op.Del_Token_Index < Min_Op_Token_Index then
-                              Min_Op_Token_Index := Op.Del_Token_Index;
-                           end if;
-                           if Op.Del_Token_Index < Min_Push_Back_Token_Index 
then
-                              Min_Push_Back_Token_Index := Op.Del_Token_Index;
+                        when Delete =>
+                           if Op.Del_Token_Index /= Invalid_Token_Index then
+                              if Op.Del_Token_Index < Min_Op_Token_Index then
+                                 Min_Op_Token_Index := Op.Del_Token_Index;
+                              end if;
+                              if Op.Del_Token_Index < 
Min_Push_Back_Token_Index then
+                                 Min_Push_Back_Token_Index := 
Op.Del_Token_Index;
+                              end if;
                            end if;
-                        end if;
 
-                     end case;
+                        end case;
+                     end;
                   end loop;
 
-                  for Op of Result.Ops loop
-                     case Op.Op is
-                     when Fast_Forward =>
-                        Stack_Matches_Ops := False;
-
-                     when Undo_Reduce =>
-                        if not Stack_Matches_Ops then
-                           if Trace_McKenzie > Outline then
-                              Put_Line
-                                (Trace, Parser_State.Label, "Undo_Reduce after 
insert or fast_forward",
-                                 Task_ID => False);
-                           end if;
-                           raise Bad_Config;
-                        end if;
+                  for I in First_Index (Result.Ops) .. Last_Index (Result.Ops) 
loop
+                     declare
+                        Op : Config_Op renames Constant_Ref (Result.Ops, I);
+                     begin
+                        case Op.Op is
+                        when Fast_Forward =>
+                           Stack_Matches_Ops := False;
 
-                        declare
-                           Item : constant Parser_Lists.Parser_Stack_Item := 
Parser_State.Stack.Pop;
-                        begin
-                           case Tree.Label (Item.Token) is
-                           when Syntax_Trees.Shared_Terminal |
-                             Syntax_Trees.Virtual_Identifier |
-                             Syntax_Trees.Virtual_Terminal =>
+                        when Undo_Reduce =>
+                           if not Stack_Matches_Ops then
                               if Trace_McKenzie > Outline then
                                  Put_Line
-                                   (Trace, Parser_State.Label, "expecting 
nonterminal, found " &
-                                      Image (Tree.ID (Item.Token), 
Trace.Descriptor.all),
+                                   (Trace, Parser_State.Label, "Undo_Reduce 
after insert or fast_forward",
                                     Task_ID => False);
                               end if;
                               raise Bad_Config;
-
-                           when Syntax_Trees.Nonterm =>
-                              for C of Tree.Children (Item.Token) loop
-                                 Parser_State.Stack.Push ((Tree.State (C), C));
-                              end loop;
-                           end case;
-                        end;
-
-                     when Push_Back =>
-                        if Stack_Matches_Ops then
-                           Parser_State.Stack.Pop;
-                           if Op.PB_Token_Index /= Invalid_Token_Index then
-                              Parser_State.Shared_Token := Op.PB_Token_Index;
-                              Shared_Token_Changed      := True;
                            end if;
 
-                        elsif Op.PB_Token_Index = Min_Op_Token_Index then
-                           loop
-                              --  Multiple push_backs can have the same 
Op.PB_Token_Index, so we may
-                              --  already be at the target.
-                              exit when Parser_State.Shared_Token <= 
Op.PB_Token_Index and
-                                (Parser_State.Stack.Depth = 1 or else
-                                   Tree.Min_Terminal_Index (Parser_State.Stack 
(1).Token) /= Invalid_Token_Index);
-                              --  also push back empty tokens.
-
-                              declare
-                                 Item : constant 
Parser_Lists.Parser_Stack_Item := Parser_State.Stack.Pop;
-
-                                 Min_Index : constant Base_Token_Index :=
-                                   Parser_State.Tree.Min_Terminal_Index 
(Item.Token);
-                              begin
-                                 if Min_Index /= Invalid_Token_Index then
-                                    Shared_Token_Changed := True;
-                                    Parser_State.Shared_Token := Min_Index;
+                           declare
+                              Item : constant Parser_Lists.Parser_Stack_Item 
:= Parser_State.Stack.Pop;
+                           begin
+                              case Tree.Label (Item.Token) is
+                              when Syntax_Trees.Shared_Terminal |
+                                Syntax_Trees.Virtual_Identifier |
+                                Syntax_Trees.Virtual_Terminal =>
+                                 if Trace_McKenzie > Outline then
+                                    Put_Line
+                                      (Trace, Parser_State.Label, "expecting 
nonterminal, found " &
+                                         Image (Tree.ID (Item.Token), 
Trace.Descriptor.all),
+                                       Task_ID => False);
                                  end if;
-                              end;
-                           end loop;
-                           pragma Assert (Parser_State.Shared_Token = 
Op.PB_Token_Index);
-                        end if;
+                                 raise Bad_Config;
+
+                              when Syntax_Trees.Nonterm =>
+                                 for C of Tree.Children (Item.Token) loop
+                                    Parser_State.Stack.Push ((Tree.State (C), 
C));
+                                 end loop;
+                              end case;
+                           end;
+
+                        when Push_Back =>
+                           if Stack_Matches_Ops then
+                              Parser_State.Stack.Pop;
+                              if Op.PB_Token_Index /= Invalid_Token_Index then
+                                 Parser_State.Shared_Token := 
Op.PB_Token_Index;
+                                 Shared_Token_Changed      := True;
+                              end if;
 
-                     when Insert =>
-                        if Stack_Matches_Ops and Op.Ins_Token_Index = 
Parser_State.Shared_Token then
-                           --  This is the first Insert. Even if a later 
Push_Back supercedes it,
-                           --  we record Stack_Matches_Ops false here.
-                           Stack_Matches_Ops := False;
+                           elsif Op.PB_Token_Index = Min_Op_Token_Index then
+                              loop
+                                 --  Multiple push_backs can have the same 
Op.PB_Token_Index, so we may
+                                 --  already be at the target.
+                                 exit when Parser_State.Shared_Token <= 
Op.PB_Token_Index and
+                                   (Parser_State.Stack.Depth = 1 or else
+                                      Tree.Min_Terminal_Index 
(Parser_State.Stack (1).Token) /= Invalid_Token_Index);
+                                 --  also push back empty tokens.
+
+                                 declare
+                                    Item : constant 
Parser_Lists.Parser_Stack_Item := Parser_State.Stack.Pop;
+
+                                    Min_Index : constant Base_Token_Index :=
+                                      Parser_State.Tree.Min_Terminal_Index 
(Item.Token);
+                                 begin
+                                    if Min_Index /= Invalid_Token_Index then
+                                       Shared_Token_Changed := True;
+                                       Parser_State.Shared_Token := Min_Index;
+                                    end if;
+                                 end;
+                              end loop;
+                              pragma Assert (Parser_State.Shared_Token = 
Op.PB_Token_Index);
+                           end if;
 
-                           if Op.Ins_Token_Index <= Min_Push_Back_Token_Index 
then
-                              Parser_State.Current_Token := 
Parser_State.Tree.Add_Terminal (Op.Ins_ID);
-                              Current_Token_Virtual      := True;
+                        when Insert =>
+                           if Stack_Matches_Ops and Op.Ins_Token_Index = 
Parser_State.Shared_Token then
+                              --  This is the first Insert. Even if a later 
Push_Back supercedes it,
+                              --  we record Stack_Matches_Ops false here.
+                              Stack_Matches_Ops := False;
+
+                              if Op.Ins_Token_Index <= 
Min_Push_Back_Token_Index then
+                                 Parser_State.Current_Token := 
Parser_State.Tree.Add_Terminal (Op.Ins_ID);
+                                 Current_Token_Virtual      := True;
+                              else
+                                 if Is_Full (Sorted_Insert_Delete) then
+                                    raise Bad_Config;
+                                 else
+                                    Insert (Sorted_Insert_Delete, Op);
+                                 end if;
+                              end if;
                            else
-                              Sorted_Insert_Delete.Insert (Op);
+                              if Is_Full (Sorted_Insert_Delete) then
+                                 raise Bad_Config;
+                              else
+                                 Insert (Sorted_Insert_Delete, Op);
+                              end if;
                            end if;
-                        else
-                           Sorted_Insert_Delete.Insert (Op);
-                        end if;
 
-                     when Delete =>
-                        if Stack_Matches_Ops and Op.Del_Token_Index = 
Parser_State.Shared_Token then
-                           --  We can apply multiple deletes.
-                           Parser_State.Shared_Token := Op.Del_Token_Index + 1;
-                           Apply_Prev_Token;
-                           Shared_Token_Changed      := True;
-                        else
-                           Sorted_Insert_Delete.Insert (Op);
-                        end if;
-                     end case;
+                        when Delete =>
+                           if Stack_Matches_Ops and Op.Del_Token_Index = 
Parser_State.Shared_Token then
+                              --  We can apply multiple deletes.
+                              Parser_State.Shared_Token := Op.Del_Token_Index 
+ 1;
+                              Apply_Prev_Token;
+                              Shared_Token_Changed      := True;
+                           else
+                              if Is_Full (Sorted_Insert_Delete) then
+                                 raise Bad_Config;
+                              else
+                                 Insert (Sorted_Insert_Delete, Op);
+                              end if;
+                           end if;
+                        end case;
+                     end;
                   end loop;
 
                   --  We may not have processed the current Insert or Delete 
above, if
                   --  they are after a fast_forward.
-                  for Op of Sorted_Insert_Delete loop
-                     if Token_Index (Op) = Parser_State.Shared_Token and not 
Current_Token_Virtual then
-                        case Insert_Delete_Op_Label'(Op.Op) is
-                        when Insert =>
-                           Parser_State.Current_Token := 
Parser_State.Tree.Add_Terminal (ID (Op));
-                           Current_Token_Virtual      := True;
+                  for I in First_Index (Sorted_Insert_Delete) .. Last_Index 
(Sorted_Insert_Delete) loop
+                     declare
+                        Op : Insert_Delete_Op renames 
Insert_Delete_Array_Refs.Constant_Ref (Sorted_Insert_Delete, I);
+                     begin
+                        if Token_Index (Op) = Parser_State.Shared_Token and 
not Current_Token_Virtual then
+                           case Insert_Delete_Op_Label'(Op.Op) is
+                           when Insert =>
+                              Parser_State.Current_Token := 
Parser_State.Tree.Add_Terminal (ID (Op));
+                              Current_Token_Virtual      := True;
 
-                        when Delete =>
-                           Parser_State.Shared_Token := Op.Del_Token_Index + 1;
-                           Apply_Prev_Token;
-                           Shared_Token_Changed      := True;
-                        end case;
-                     else
-                        Parser_State.Recover_Insert_Delete.Put (Op);
-                     end if;
+                           when Delete =>
+                              Parser_State.Shared_Token := Op.Del_Token_Index 
+ 1;
+                              Apply_Prev_Token;
+                              Shared_Token_Changed      := True;
+                           end case;
+                        else
+                           Parser_State.Recover_Insert_Delete.Put (Op);
+                        end if;
+                     end;
                   end loop;
 
                   --  If not Shared_Token_Changed, Shared_Token is the error 
token,
@@ -686,7 +715,10 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       return Super.Recover_Result;
 
    exception
-   when others =>
+   when E : others =>
+      if Debug_Mode then
+         Trace.Put (Ada.Exceptions.Exception_Name (E) & ": " & 
Ada.Exceptions.Exception_Message (E));
+      end if;
       return Fail_Programmer_Error;
    end Recover;
 
@@ -700,22 +732,23 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
    end Check;
 
    function Current_Token
-     (Terminals                 : in     Base_Token_Arrays.Vector;
-      Terminals_Current         : in out WisiToken.Base_Token_Index;
-      Restore_Terminals_Current :    out WisiToken.Base_Token_Index;
-      Insert_Delete             : in out Sorted_Insert_Delete_Arrays.Vector;
-      Current_Insert_Delete     : in out SAL.Base_Peek_Type;
-      Prev_Deleted              : in     Recover_Token_Index_Arrays.Vector)
+     (Terminals                 :         in     Base_Token_Arrays.Vector;
+      Terminals_Current         :         in out WisiToken.Base_Token_Index;
+      Restore_Terminals_Current :            out WisiToken.Base_Token_Index;
+      Insert_Delete             : aliased in out 
Sorted_Insert_Delete_Arrays.Vector;
+      Current_Insert_Delete     :         in out SAL.Base_Peek_Type;
+      Prev_Deleted              :         in     
Recover_Token_Index_Arrays.Vector)
      return Base_Token
    is
-      use all type SAL.Base_Peek_Type;
+      use Sorted_Insert_Delete_Arrays;
+      use Insert_Delete_Array_Refs;
 
       procedure Inc_I_D
       is begin
          Current_Insert_Delete := Current_Insert_Delete + 1;
-         if Current_Insert_Delete > Insert_Delete.Last_Index then
+         if Current_Insert_Delete > Last_Index (Insert_Delete) then
             Current_Insert_Delete := No_Insert_Delete;
-            Insert_Delete.Clear;
+            Clear (Insert_Delete);
          end if;
       end Inc_I_D;
 
@@ -730,9 +763,9 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
             Restore_Terminals_Current := Terminals_Current;
             return Terminals (Terminals_Current);
 
-         elsif Token_Index (Insert_Delete (Current_Insert_Delete)) = 
Terminals_Current then
+         elsif Token_Index (Constant_Ref (Insert_Delete, 
Current_Insert_Delete)) = Terminals_Current then
             declare
-               Op : Insert_Delete_Op renames Insert_Delete 
(Current_Insert_Delete);
+               Op : Insert_Delete_Op renames Constant_Ref (Insert_Delete, 
Current_Insert_Delete);
             begin
                case Insert_Delete_Op_Label (Op.Op) is
                when Insert =>
@@ -759,13 +792,14 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
    end Current_Token;
 
    function Current_Token_ID_Peek
-     (Terminals             : in     Base_Token_Arrays.Vector;
-      Terminals_Current     : in     Base_Token_Index;
-      Insert_Delete         : in     Sorted_Insert_Delete_Arrays.Vector;
-      Current_Insert_Delete : in     SAL.Base_Peek_Type)
+     (Terminals             :         in Base_Token_Arrays.Vector;
+      Terminals_Current     :         in Base_Token_Index;
+      Insert_Delete         : aliased in Sorted_Insert_Delete_Arrays.Vector;
+      Current_Insert_Delete :         in SAL.Base_Peek_Type)
      return Token_ID
    is
-      use all type SAL.Base_Peek_Type;
+      use Insert_Delete_Array_Refs;
+
       Result : Token_ID;
    begin
       if Terminals_Current = Base_Token_Index'First then
@@ -780,9 +814,9 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       if Current_Insert_Delete = No_Insert_Delete then
          null;
 
-      elsif Token_Index (Insert_Delete (Current_Insert_Delete)) = 
Terminals_Current then
+      elsif Token_Index (Constant_Ref (Insert_Delete, Current_Insert_Delete)) 
= Terminals_Current then
          declare
-            Op : Insert_Delete_Op renames Insert_Delete 
(Current_Insert_Delete);
+            Op : Insert_Delete_Op renames Constant_Ref (Insert_Delete, 
Current_Insert_Delete);
          begin
             case Insert_Delete_Op_Label (Op.Op) is
             when Insert =>
@@ -798,14 +832,13 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
    end Current_Token_ID_Peek;
 
    procedure Current_Token_ID_Peek_3
-     (Terminals             : in     Base_Token_Arrays.Vector;
-      Terminals_Current     : in     Base_Token_Index;
-      Insert_Delete         : in     Sorted_Insert_Delete_Arrays.Vector;
-      Current_Insert_Delete : in     SAL.Base_Peek_Type;
-      Prev_Deleted          : in     Recover_Token_Index_Arrays.Vector;
-      Tokens                :    out Token_ID_Array_1_3)
+     (Terminals             :         in     Base_Token_Arrays.Vector;
+      Terminals_Current     :         in     Base_Token_Index;
+      Insert_Delete         : aliased in     
Sorted_Insert_Delete_Arrays.Vector;
+      Current_Insert_Delete :         in     SAL.Base_Peek_Type;
+      Prev_Deleted          :         in     Recover_Token_Index_Arrays.Vector;
+      Tokens                :            out Token_ID_Array_1_3)
    is
-      use all type SAL.Base_Peek_Type;
       Terminals_Next : WisiToken.Token_Index := Terminals_Current + 1;
    begin
       if Terminals_Current = Base_Token_Index'First then
@@ -841,13 +874,14 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       else
          for I in Tokens'Range loop
             declare
+               use Sorted_Insert_Delete_Arrays, Insert_Delete_Array_Refs;
                J : constant SAL.Base_Peek_Type := Current_Insert_Delete + 
SAL.Peek_Type (I) - 1;
             begin
-               if (J >= Insert_Delete.First_Index and J <= 
Insert_Delete.Last_Index) and then
-                 Token_Index (Insert_Delete (J)) = Terminals_Current
+               if (J in First_Index (Insert_Delete) .. Last_Index 
(Insert_Delete)) and then
+                 Token_Index (Constant_Ref (Insert_Delete, J)) = 
Terminals_Current
                then
                   declare
-                     Op : Insert_Delete_Op renames Insert_Delete (J);
+                     Op : Insert_Delete_Op renames Constant_Ref 
(Insert_Delete, J);
                   begin
                      case Insert_Delete_Op_Label (Op.Op) is
                      when Insert =>
@@ -869,46 +903,48 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       Config    : in out Configuration;
       ID        : in     Token_ID)
    is
+      use Config_Op_Arrays;
+      use Sorted_Insert_Delete_Arrays;
       Op : constant Config_Op := (Delete, ID, Config.Current_Shared_Token);
    begin
       Check (Terminals (Config.Current_Shared_Token).ID, ID);
-      Config.Ops.Append (Op);
-      Config.Insert_Delete.Insert (Op);
+      if Is_Full (Config.Ops) or Is_Full (Config.Insert_Delete) then
+         raise Bad_Config;
+      end if;
+      Append (Config.Ops, Op);
+      Insert (Config.Insert_Delete, Op);
       Config.Current_Insert_Delete := 1;
-   exception
-   when SAL.Container_Full =>
-      raise Bad_Config;
    end Delete_Check;
 
    procedure Delete_Check
      (Terminals : in     Base_Token_Arrays.Vector;
       Config    : in out Configuration;
-      Index     : in out     WisiToken.Token_Index;
+      Index     : in out WisiToken.Token_Index;
       ID        : in     Token_ID)
    is
+      use Config_Op_Arrays;
+      use Sorted_Insert_Delete_Arrays;
       Op : constant Config_Op := (Delete, ID, Index);
    begin
       Check (Terminals (Index).ID, ID);
-      Config.Ops.Append (Op);
-      Config.Insert_Delete.Insert (Op);
+      if Is_Full (Config.Ops) or Is_Full (Config.Insert_Delete) then
+         raise Bad_Config;
+      end if;
+      Append (Config.Ops, Op);
+      Insert (Config.Insert_Delete, Op);
       Config.Current_Insert_Delete := 1;
       Index := Index + 1;
-   exception
-   when SAL.Container_Full =>
-      raise Bad_Config;
    end Delete_Check;
 
    procedure Find_ID
      (Config         : in     Configuration;
       ID             : in     Token_ID;
       Matching_Index : in out SAL.Peek_Type)
-   is
-      use all type SAL.Peek_Type;
-   begin
+   is begin
       loop
          exit when Matching_Index = Config.Stack.Depth; -- Depth has 
Invalid_Token_ID
          declare
-            Stack_ID : Token_ID renames Config.Stack (Matching_Index).Token.ID;
+            Stack_ID : Token_ID renames Config.Stack.Peek 
(Matching_Index).Token.ID;
          begin
             exit when Stack_ID = ID;
          end;
@@ -920,13 +956,11 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
      (Config         : in     Configuration;
       IDs            : in     Token_ID_Set;
       Matching_Index : in out SAL.Peek_Type)
-   is
-      use all type SAL.Peek_Type;
-   begin
+   is begin
       loop
-         exit when Matching_Index = Config.Stack.Depth; -- Depth has 
Invalid_Token_ID
+         exit when Matching_Index >= Config.Stack.Depth; -- Depth has 
Invalid_Token_ID
          declare
-            ID : Token_ID renames Config.Stack (Matching_Index).Token.ID;
+            ID : Token_ID renames Config.Stack.Peek (Matching_Index).Token.ID;
          begin
             exit when ID in IDs'First .. IDs'Last and then IDs (ID);
          end;
@@ -942,14 +976,13 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       Matching_Index : in out SAL.Peek_Type)
    is
       use Syntax_Trees;
-      use all type SAL.Peek_Type;
    begin
       loop
-         exit when Matching_Index = Config.Stack.Depth; -- Depth has 
Invalid_Token_ID
-         exit when Config.Stack (Matching_Index).Token.ID in ID_Set'Range and 
then
-           (ID_Set (Config.Stack (Matching_Index).Token.ID) and
-              (Config.Stack (Matching_Index).Tree_Index /= Invalid_Node_Index 
and then
-                 Tree.Find_Descendant (Config.Stack 
(Matching_Index).Tree_Index, ID) /= Invalid_Node_Index));
+         exit when Matching_Index >= Config.Stack.Depth; -- Depth has 
Invalid_Token_ID
+         exit when Config.Stack.Peek (Matching_Index).Token.ID in ID_Set'Range 
and then
+           (ID_Set (Config.Stack.Peek (Matching_Index).Token.ID) and
+              (Config.Stack.Peek (Matching_Index).Tree_Index /= 
Invalid_Node_Index and then
+                 Tree.Find_Descendant (Config.Stack.Peek 
(Matching_Index).Tree_Index, ID) /= Invalid_Node_Index));
 
          Matching_Index := Matching_Index + 1;
       end loop;
@@ -963,13 +996,12 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       Case_Insensitive    : in     Boolean)
    is
       use Ada.Characters.Handling;
-      use all type SAL.Peek_Type;
       Match_Name : constant String := (if Case_Insensitive then To_Lower 
(Name) else Name);
    begin
       loop
-         exit when Matching_Name_Index = Config.Stack.Depth; -- Depth has 
Invalid_Token_ID
+         exit when Matching_Name_Index >= Config.Stack.Depth; -- Depth has 
Invalid_Token_ID
          declare
-            Token       : Recover_Token renames Config.Stack 
(Matching_Name_Index).Token;
+            Token       : Recover_Token renames Config.Stack.Peek 
(Matching_Name_Index).Token;
             Name_Region : constant Buffer_Region :=
               (if Token.Name = Null_Buffer_Region
                then Token.Byte_Region
@@ -996,18 +1028,17 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       Case_Insensitive    : in     Boolean)
    is
       use Ada.Characters.Handling;
-      use all type SAL.Peek_Type;
       Match_Name : constant String := (if Case_Insensitive then To_Lower 
(Name) else Name);
    begin
       Other_Count := 0;
 
       loop
-         exit when Matching_Name_Index = Config.Stack.Depth; -- Depth has 
Invalid_Token_ID
+         exit when Matching_Name_Index >= Config.Stack.Depth; -- Depth has 
Invalid_Token_ID
          declare
-            Token       : Recover_Token renames Config.Stack 
(Matching_Name_Index).Token;
+            Token       : Recover_Token renames Config.Stack.Peek 
(Matching_Name_Index).Token;
             Name_Region : constant Buffer_Region :=
               (if Token.Name = Null_Buffer_Region
-               then Token.Byte_Region -- FIXME: why not only Token.name?
+               then Token.Byte_Region
                else Token.Name);
          begin
             exit when Name_Region /= Null_Buffer_Region and then
@@ -1027,14 +1058,16 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
 
    procedure Insert (Config : in out Configuration; ID : in Token_ID)
    is
+      use Config_Op_Arrays;
+      use Sorted_Insert_Delete_Arrays;
       Op : constant Config_Op := (Insert, ID, Config.Current_Shared_Token, 
Unknown_State, 0);
    begin
-      Config.Ops.Append (Op);
-      Config.Insert_Delete.Insert (Op);
+      if Is_Full (Config.Ops) or Is_Full (Config.Insert_Delete) then
+         raise Bad_Config;
+      end if;
+      Append (Config.Ops, Op);
+      Insert (Config.Insert_Delete, Op);
       Config.Current_Insert_Delete := 1;
-   exception
-   when SAL.Container_Full =>
-      raise Bad_Config;
    end Insert;
 
    procedure Insert (Config : in out Configuration; IDs : in Token_ID_Array)
@@ -1045,15 +1078,15 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
    end Insert;
 
    function Next_Token
-     (Terminals                 : in     Base_Token_Arrays.Vector;
-      Terminals_Current         : in out Base_Token_Index;
-      Restore_Terminals_Current : in out WisiToken.Base_Token_Index;
-      Insert_Delete             : in out Sorted_Insert_Delete_Arrays.Vector;
-      Current_Insert_Delete     : in out SAL.Base_Peek_Type;
-      Prev_Deleted              : in     Recover_Token_Index_Arrays.Vector)
+     (Terminals                 :         in     Base_Token_Arrays.Vector;
+      Terminals_Current         :         in out Base_Token_Index;
+      Restore_Terminals_Current :         in out WisiToken.Base_Token_Index;
+      Insert_Delete             : aliased in out 
Sorted_Insert_Delete_Arrays.Vector;
+      Current_Insert_Delete     :         in out SAL.Base_Peek_Type;
+      Prev_Deleted              :         in     
Recover_Token_Index_Arrays.Vector)
      return Base_Token
    is
-      use all type SAL.Base_Peek_Type;
+      use Sorted_Insert_Delete_Arrays, Insert_Delete_Array_Refs;
 
       function Next_Terminal return Base_Token
       is begin
@@ -1069,18 +1102,18 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
 
    begin
       loop
-         if Insert_Delete.Last_Index > 0 and then Current_Insert_Delete = 
Insert_Delete.Last_Index then
-            Current_Insert_Delete     := No_Insert_Delete;
-            Insert_Delete.Clear;
+         if Last_Index (Insert_Delete) > 0 and then Current_Insert_Delete = 
Last_Index (Insert_Delete) then
+            Current_Insert_Delete := No_Insert_Delete;
+            Clear (Insert_Delete);
             return Next_Terminal;
 
          elsif Current_Insert_Delete = No_Insert_Delete then
             return Next_Terminal;
 
-         elsif Token_Index (Insert_Delete (Current_Insert_Delete + 1)) = 
Terminals_Current + 1 then
+         elsif Token_Index (Constant_Ref (Insert_Delete, Current_Insert_Delete 
+ 1)) = Terminals_Current + 1 then
             Current_Insert_Delete := Current_Insert_Delete + 1;
             declare
-               Op : constant Insert_Delete_Op := Insert_Delete 
(Current_Insert_Delete);
+               Op : Insert_Delete_Op renames Constant_Ref (Insert_Delete, 
Current_Insert_Delete);
             begin
                case Insert_Delete_Op_Label'(Op.Op) is
                when Insert =>
@@ -1100,6 +1133,9 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
 
    procedure Push_Back (Config : in out Configuration)
    is
+      use Config_Op_Arrays, Config_Op_Array_Refs;
+      use Sorted_Insert_Delete_Arrays;
+
       Item        : constant Recover_Stack_Item := Config.Stack.Pop;
       Token_Index : constant Base_Token_Index   := 
Item.Token.Min_Terminal_Index;
 
@@ -1115,22 +1151,26 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
    begin
       if Token_Index /= Invalid_Token_Index then
          Config.Current_Shared_Token := Token_Index;
-         for I in Config.Ops.First_Index .. Config.Ops.Last_Index loop
-            if Compare (Token_Index, Config.Ops (I)) then
-               Config.Insert_Delete.Insert (Config.Ops (I), Ignore_If_Equal => 
True);
+         for I in First_Index (Config.Ops) .. Last_Index (Config.Ops) loop
+            if Compare (Token_Index, Constant_Ref (Config.Ops, I)) then
+               if Is_Full (Config.Insert_Delete) then
+                  raise Bad_Config;
+               end if;
+               Insert (Config.Insert_Delete, Constant_Ref (Config.Ops, I), 
Ignore_If_Equal => True);
             end if;
          end loop;
       end if;
 
-      Config.Ops.Append ((Push_Back, Item.Token.ID, 
Config.Current_Shared_Token));
-   exception
-   when SAL.Container_Full =>
-      raise Bad_Config;
+      if Is_Full (Config.Ops) then
+         raise Bad_Config;
+      end if;
+      Append (Config.Ops, (Push_Back, Item.Token.ID, 
Config.Current_Shared_Token));
    end Push_Back;
 
    procedure Push_Back_Check (Config : in out Configuration; Expected_ID : in 
Token_ID)
    is begin
-      Check (Config.Stack (1).Token.ID, Expected_ID);
+      pragma Assert (Config.Stack.Depth > 1);
+      Check (Config.Stack.Peek (1).Token.ID, Expected_ID);
       Push_Back (Config);
    end Push_Back_Check;
 
@@ -1154,8 +1194,8 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
 
       --  Build a string, call trace.put_line once, so output from multiple
       --  tasks is not interleaved (mostly).
+      use Insert_Delete_Array_Refs;
       use all type Ada.Strings.Unbounded.Unbounded_String;
-      use all type SAL.Base_Peek_Type;
       use all type WisiToken.Semantic_Checks.Check_Status_Label;
 
       Descriptor : WisiToken.Descriptor renames Trace.Descriptor.all;
@@ -1186,7 +1226,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
          Result := Result & "|" & Image (Config.Current_Shared_Token, 
Terminals, Descriptor) & "|";
       else
          Result := Result & "/" & Trimmed_Image (Config.Current_Insert_Delete) 
& ":" &
-           Image (Config.Insert_Delete (Config.Current_Insert_Delete), 
Descriptor) & "/";
+           Image (Constant_Ref (Config.Insert_Delete, 
Config.Current_Insert_Delete), Descriptor) & "/";
       end if;
 
       Result := Result & Image (Config.Ops, Descriptor);
@@ -1212,7 +1252,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       Tree  : in     Syntax_Trees.Tree)
      return Ada.Containers.Count_Type
    is
-      Nonterm_Item : constant Recover_Stack_Item := Stack.Pop;
+      Nonterm_Item : constant Recover_Stack_Item := Recover_Stacks.Pop (Stack);
    begin
       if Nonterm_Item.Token.Byte_Region = Null_Buffer_Region then
          return 0;
@@ -1232,8 +1272,9 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       Tree     : in     Syntax_Trees.Tree;
       Expected : in     Token_ID)
    is begin
-      Check (Config.Stack (1).Token.ID, Expected);
-      Config.Ops.Append ((Undo_Reduce, Expected, Undo_Reduce (Config.Stack, 
Tree)));
+      pragma Assert (Config.Stack.Depth > 1);
+      Check (Config.Stack.Peek (1).Token.ID, Expected);
+      Config_Op_Arrays.Append (Config.Ops, (Undo_Reduce, Expected, Undo_Reduce 
(Config.Stack, Tree)));
    exception
    when SAL.Container_Full =>
       raise Bad_Config;
diff --git a/packages/wisi/wisitoken-parse-lr-mckenzie_recover.ads 
b/packages/wisi/wisitoken-parse-lr-mckenzie_recover.ads
index b143866..9b84a03 100644
--- a/packages/wisi/wisitoken-parse-lr-mckenzie_recover.ads
+++ b/packages/wisi/wisitoken-parse-lr-mckenzie_recover.ads
@@ -62,12 +62,12 @@ private
    --  Implemented using 'pragma Assert'.
 
    function Current_Token
-     (Terminals                 : in     Base_Token_Arrays.Vector;
-      Terminals_Current         : in out Base_Token_Index;
-      Restore_Terminals_Current :    out WisiToken.Base_Token_Index;
-      Insert_Delete             : in out Sorted_Insert_Delete_Arrays.Vector;
-      Current_Insert_Delete     : in out SAL.Base_Peek_Type;
-      Prev_Deleted              : in     Recover_Token_Index_Arrays.Vector)
+     (Terminals                 :         in     Base_Token_Arrays.Vector;
+      Terminals_Current         :         in out Base_Token_Index;
+      Restore_Terminals_Current :            out WisiToken.Base_Token_Index;
+      Insert_Delete             : aliased in out 
Sorted_Insert_Delete_Arrays.Vector;
+      Current_Insert_Delete     :         in out SAL.Base_Peek_Type;
+      Prev_Deleted              :         in     
Recover_Token_Index_Arrays.Vector)
      return Base_Token;
    --  Return the current token, from either Terminals or Insert_Delete;
    --  set up for Next_Token.
@@ -75,21 +75,21 @@ private
    --  See Next_Token for more info.
 
    function Current_Token_ID_Peek
-     (Terminals             : in     Base_Token_Arrays.Vector;
-      Terminals_Current     : in     Base_Token_Index;
-      Insert_Delete         : in     Sorted_Insert_Delete_Arrays.Vector;
-      Current_Insert_Delete : in     SAL.Base_Peek_Type)
+     (Terminals             :         in Base_Token_Arrays.Vector;
+      Terminals_Current     :         in Base_Token_Index;
+      Insert_Delete         : aliased in Sorted_Insert_Delete_Arrays.Vector;
+      Current_Insert_Delete :         in SAL.Base_Peek_Type)
      return Token_ID;
    --  Return the current token from either Terminals or
    --  Insert_Delete, without setting up for Next_Token.
 
    procedure Current_Token_ID_Peek_3
-     (Terminals             : in     Base_Token_Arrays.Vector;
-      Terminals_Current     : in     Base_Token_Index;
-      Insert_Delete         : in     Sorted_Insert_Delete_Arrays.Vector;
-      Current_Insert_Delete : in     SAL.Base_Peek_Type;
-      Prev_Deleted          : in     Recover_Token_Index_Arrays.Vector;
-      Tokens                :    out Token_ID_Array_1_3);
+     (Terminals             :         in     Base_Token_Arrays.Vector;
+      Terminals_Current     :         in     Base_Token_Index;
+      Insert_Delete         : aliased in     
Sorted_Insert_Delete_Arrays.Vector;
+      Current_Insert_Delete :         in     SAL.Base_Peek_Type;
+      Prev_Deleted          :         in     Recover_Token_Index_Arrays.Vector;
+      Tokens                :            out Token_ID_Array_1_3);
    --  Return the current token (in Tokens (1)) from either Terminals or
    --  Insert_Delete, without setting up for Next_Token. Return the two
    --  following tokens in Tokens (2 .. 3).
@@ -177,12 +177,12 @@ private
    --  Call Insert for each item in IDs.
 
    function Next_Token
-     (Terminals                 : in     Base_Token_Arrays.Vector;
-      Terminals_Current         : in out Base_Token_Index;
-      Restore_Terminals_Current : in out WisiToken.Base_Token_Index;
-      Insert_Delete             : in out Sorted_Insert_Delete_Arrays.Vector;
-      Current_Insert_Delete     : in out SAL.Base_Peek_Type;
-      Prev_Deleted              : in     Recover_Token_Index_Arrays.Vector)
+     (Terminals                 :         in     Base_Token_Arrays.Vector;
+      Terminals_Current         :         in out Base_Token_Index;
+      Restore_Terminals_Current :         in out WisiToken.Base_Token_Index;
+      Insert_Delete             : aliased in out 
Sorted_Insert_Delete_Arrays.Vector;
+      Current_Insert_Delete     :         in out SAL.Base_Peek_Type;
+      Prev_Deleted              :         in     
Recover_Token_Index_Arrays.Vector)
      return Base_Token;
    --  Return the next token, from either Terminals or Insert_Delete;
    --  update Terminals_Current or Current_Insert_Delete.
@@ -234,14 +234,15 @@ private
    --  Put message to Trace, with parser and task info.
 
    function Undo_Reduce_Valid
-     (Stack : in out Recover_Stacks.Stack;
-      Tree  : in     Syntax_Trees.Tree)
+     (Stack : in Recover_Stacks.Stack;
+      Tree  : in Syntax_Trees.Tree)
      return Boolean
-     is ((Stack.Peek.Tree_Index /= WisiToken.Syntax_Trees.Invalid_Node_Index 
and then
-            Tree.Is_Nonterm (Stack.Peek.Tree_Index)) or
-           (Stack.Peek.Tree_Index = WisiToken.Syntax_Trees.Invalid_Node_Index 
and
-              (not Stack.Peek.Token.Virtual and
-                 Stack.Peek.Token.Byte_Region = Null_Buffer_Region)));
+     is (Stack.Depth > 1 and then
+           ((Stack.Peek.Tree_Index /= 
WisiToken.Syntax_Trees.Invalid_Node_Index and then
+               Tree.Is_Nonterm (Stack.Peek.Tree_Index)) or
+              (Stack.Peek.Tree_Index = 
WisiToken.Syntax_Trees.Invalid_Node_Index and
+                 (not Stack.Peek.Token.Virtual and
+                    Stack.Peek.Token.Byte_Region = Null_Buffer_Region))));
    --  Undo_Reduce needs to know what tokens the nonterm contains, to
    --  push them on the stack. Thus we need either a valid Tree index, or
    --  an empty nonterm. If Token.Virtual, we can't trust
diff --git a/packages/wisi/wisitoken-parse-lr-parser.adb 
b/packages/wisi/wisitoken-parse-lr-parser.adb
index 986675d..70fab20 100644
--- a/packages/wisi/wisitoken-parse-lr-parser.adb
+++ b/packages/wisi/wisitoken-parse-lr-parser.adb
@@ -45,7 +45,6 @@ package body WisiToken.Parse.LR.Parser is
       --  error recovery to take better advantage of them. One recovery
       --  strategy is to fix things so the semantic check passes.
 
-      use all type SAL.Base_Peek_Type;
       use all type Semantic_Checks.Check_Status_Label;
       use all type Semantic_Checks.Semantic_Check;
 
@@ -139,8 +138,6 @@ package body WisiToken.Parse.LR.Parser is
 
       when Reduce =>
          declare
-            use all type SAL.Base_Peek_Type;
-
             New_State : constant Unknown_State_Index := Goto_For
               (Table => Shared_Parser.Table.all,
                State => Parser_State.Stack (SAL.Base_Peek_Type 
(Action.Token_Count) + 1).State,
@@ -226,9 +223,7 @@ package body WisiToken.Parse.LR.Parser is
    procedure Do_Deletes
      (Shared_Parser : in out LR.Parser.Parser;
       Parser_State  : in out Parser_Lists.Parser_State)
-   is
-      use all type SAL.Base_Peek_Type;
-   begin
+   is begin
       if Trace_Parse > Extra then
          Shared_Parser.Trace.Put_Line
            (Integer'Image (Parser_State.Label) & ": shared_token:" &
@@ -285,8 +280,6 @@ package body WisiToken.Parse.LR.Parser is
       Verb          :    out All_Parse_Action_Verbs;
       Zombie_Count  :    out SAL.Base_Peek_Type)
    is
-      use all type SAL.Base_Peek_Type;
-
       Shift_Count   : SAL.Base_Peek_Type := 0;
       Accept_Count  : SAL.Base_Peek_Type := 0;
       Error_Count   : SAL.Base_Peek_Type := 0;
@@ -383,12 +376,7 @@ package body WisiToken.Parse.LR.Parser is
       Parser.Language_String_ID_Set         := Language_String_ID_Set;
       Parser.User_Data                      := User_Data;
 
-      --  We can't use Table.McKenzie_Param /= Default_McKenzie_Param here,
-      --  because the discriminants are different.
-      Parser.Enable_McKenzie_Recover :=
-        Table.McKenzie_Param.Check_Limit /= Default_McKenzie_Param.Check_Limit 
or
-          Table.McKenzie_Param.Check_Delta_Limit /= 
Default_McKenzie_Param.Check_Delta_Limit or
-          Table.McKenzie_Param.Enqueue_Limit /= 
Default_McKenzie_Param.Enqueue_Limit;
+      Parser.Enable_McKenzie_Recover := not McKenzie_Defaulted (Table.all);
 
       Parser.Max_Parallel         := Max_Parallel;
       Parser.Terminate_Same_State := Terminate_Same_State;
@@ -403,7 +391,6 @@ package body WisiToken.Parse.LR.Parser is
       use all type Ada.Strings.Unbounded.Unbounded_String;
       use all type Syntax_Trees.User_Data_Access;
       use all type Ada.Containers.Count_Type;
-      use all type SAL.Base_Peek_Type;
 
       Trace : WisiToken.Trace'Class renames Shared_Parser.Trace.all;
 
@@ -676,6 +663,7 @@ package body WisiToken.Parse.LR.Parser is
                Recover_Result : McKenzie_Recover.Recover_Status := 
McKenzie_Recover.Recover_Status'First;
 
                Pre_Recover_Parser_Count : constant SAL.Base_Peek_Type := 
Shared_Parser.Parsers.Count;
+               Start : Ada.Calendar.Time;
             begin
                --  Recover algorithms expect current token at
                --  Parsers(*).Current_Token, will set
@@ -686,10 +674,17 @@ package body WisiToken.Parse.LR.Parser is
                if Shared_Parser.Enable_McKenzie_Recover then
                   if Debug_Mode then
                      Trace.Put_Clock ("pre-recover" & 
Shared_Parser.Parsers.Count'Img & " active");
+                     Start := Ada.Calendar.Clock;
                   end if;
                   Recover_Result := McKenzie_Recover.Recover (Shared_Parser);
                   if Debug_Mode then
-                     Trace.Put_Clock ("post-recover" & 
Shared_Parser.Parsers.Count'Img & " active");
+                     declare
+                        use Ada.Calendar;
+                        Recover_Duration : constant Duration := Clock - Start;
+                     begin
+                        Trace.Put_Clock
+                          ("post-recover" & Shared_Parser.Parsers.Count'Img & 
" active," & Recover_Duration'Image);
+                     end;
                   end if;
 
                   if Trace_Parse > Outline then
@@ -732,7 +727,7 @@ package body WisiToken.Parse.LR.Parser is
                      end;
                   end if;
                else
-                  if Trace_Parse > Outline then
+                  if Trace_Parse > Outline or Trace_McKenzie > Outline then
                      Trace.Put_Line ("recover disabled");
                   end if;
                end if;
@@ -786,7 +781,10 @@ package body WisiToken.Parse.LR.Parser is
                          First_Terminal => Trace.Descriptor.First_Terminal,
                          Last_Terminal  => Trace.Descriptor.Last_Terminal,
                          Recover        => <>,
-                         Msg            => +"recover: fail " & 
McKenzie_Recover.Recover_Status'Image (Recover_Result)));
+                         Msg            =>
+                           (if Shared_Parser.Enable_McKenzie_Recover
+                            then +"recover: fail " & 
McKenzie_Recover.Recover_Status'Image (Recover_Result)
+                            else +"recover disabled")));
                   end loop;
                   raise WisiToken.Syntax_Error;
                end if;
@@ -970,7 +968,7 @@ package body WisiToken.Parse.LR.Parser is
       end if;
 
       if Debug_Mode then
-         Trace.Put_Clock ("finish");
+         Trace.Put_Clock ("finish parse");
       end if;
 
       --  We don't raise Syntax_Error for lexer errors, since they are all
@@ -1007,9 +1005,7 @@ package body WisiToken.Parse.LR.Parser is
    end Parse;
 
    overriding function Tree (Shared_Parser : in Parser) return 
Syntax_Trees.Tree
-   is
-      use all type SAL.Base_Peek_Type;
-   begin
+   is begin
       if Shared_Parser.Parsers.Count > 1 then
          raise WisiToken.Parse_Error with "ambigous parse";
       else
@@ -1020,7 +1016,6 @@ package body WisiToken.Parse.LR.Parser is
    overriding
    procedure Execute_Actions (Parser : in out LR.Parser.Parser)
    is
-      use all type SAL.Base_Peek_Type;
       use all type Syntax_Trees.User_Data_Access;
       use all type WisiToken.Syntax_Trees.Semantic_Action;
 
@@ -1065,26 +1060,29 @@ package body WisiToken.Parse.LR.Parser is
          end if;
 
          declare
-            Parser_State : Parser_Lists.Parser_State renames 
Parser.Parsers.First_State_Ref.Element.all;
+            use Config_Op_Arrays, Config_Op_Array_Refs;
+            Parser_State : Parser_Lists.Parser_State renames 
Parser.Parsers.First_State_Ref;
          begin
             if Trace_Action > Outline then
                Parser.Trace.Put_Line
                  (Integer'Image (Parser_State.Label) & ": root node: " & 
Parser_State.Tree.Image
-                 (Parser_State.Tree.Root, Descriptor));
+                    (Parser_State.Tree.Root, Descriptor));
             end if;
 
-            if (for some Err of Parser_State.Errors => Any (Err.Recover.Ops, 
Delete)) then
-               for Err of Parser_State.Errors loop
-                  for Op of Err.Recover.Ops loop
+            for Err of Parser_State.Errors loop
+               for I in First_Index (Err.Recover.Ops) .. Last_Index 
(Err.Recover.Ops) loop
+                  declare
+                     Op : Config_Op renames Constant_Ref (Err.Recover.Ops, I);
+                  begin
                      case Op.Op is
                      when Delete =>
                         Parser.User_Data.Delete_Token (Op.Del_Token_Index);
                      when others =>
                         null;
                      end case;
-                  end loop;
+                  end;
                end loop;
-            end if;
+            end loop;
 
             Parser.User_Data.Initialize_Actions (Parser_State.Tree);
             Parser_State.Tree.Process_Tree (Process_Node'Access);
@@ -1094,7 +1092,6 @@ package body WisiToken.Parse.LR.Parser is
 
    overriding function Any_Errors (Parser : in LR.Parser.Parser) return Boolean
    is
-      use all type SAL.Base_Peek_Type;
       use all type Ada.Containers.Count_Type;
       Parser_State : Parser_Lists.Parser_State renames 
Parser.Parsers.First_Constant_State_Ref;
    begin
@@ -1104,7 +1101,6 @@ package body WisiToken.Parse.LR.Parser is
 
    overriding procedure Put_Errors (Parser : in LR.Parser.Parser)
    is
-      use all type SAL.Base_Peek_Type;
       use Ada.Text_IO;
 
       Parser_State : Parser_Lists.Parser_State renames 
Parser.Parsers.First_Constant_State_Ref;
diff --git a/packages/wisi/wisitoken-parse-lr-parser.ads 
b/packages/wisi/wisitoken-parse-lr-parser.ads
index a88e3af..e84d65d 100644
--- a/packages/wisi/wisitoken-parse-lr-parser.ads
+++ b/packages/wisi/wisitoken-parse-lr-parser.ads
@@ -80,10 +80,10 @@ package WisiToken.Parse.LR.Parser is
    type Post_Recover_Access is access procedure;
 
    type Parser is new WisiToken.Parse.Base_Parser with record
-      Table                                 : Parse_Table_Ptr;
-      Language_Fixes                        : Language_Fixes_Access;
+      Table                          : Parse_Table_Ptr;
+      Language_Fixes                 : Language_Fixes_Access;
       Language_Matching_Begin_Tokens : Language_Matching_Begin_Tokens_Access;
-      Language_String_ID_Set                : Language_String_ID_Set_Access;
+      Language_String_ID_Set         : Language_String_ID_Set_Access;
 
       String_Quote_Checked : Line_Number_Type := Invalid_Line_Number;
       --  Max line checked for missing string quote.
@@ -143,9 +143,9 @@ package WisiToken.Parse.LR.Parser is
    --  raise Parse_Error for an ambiguous parse.
 
    overriding procedure Execute_Actions (Parser : in out LR.Parser.Parser);
-   --  Call User_Data.Reduce on all nonterms in the syntax tree, then
-   --  User_Data.Delete_Token on any tokens deleted by error recovery,
-   --  then the grammar semantic actions.
+   --  Call User_Data.Delete_Token on any tokens deleted by error
+   --  recovery, then User_Data.Reduce and the grammar semantic actions
+   --  on all nonterms in the syntax tree.
 
    overriding function Any_Errors (Parser : in LR.Parser.Parser) return 
Boolean;
    --  Return True if any errors where encountered, recovered or not.
diff --git a/packages/wisi/wisitoken-parse-lr-parser_lists.adb 
b/packages/wisi/wisitoken-parse-lr-parser_lists.adb
index e2a0918..480e86f 100644
--- a/packages/wisi/wisitoken-parse-lr-parser_lists.adb
+++ b/packages/wisi/wisitoken-parse-lr-parser_lists.adb
@@ -27,7 +27,6 @@ package body WisiToken.Parse.LR.Parser_Lists is
       Depth      : in SAL.Base_Peek_Type := 0)
      return String
    is
-      use all type SAL.Base_Peek_Type;
       use Ada.Strings.Unbounded;
 
       Last : constant SAL.Base_Peek_Type :=
@@ -104,14 +103,14 @@ package body WisiToken.Parse.LR.Parser_Lists is
 
    function Label (Cursor : in Parser_Lists.Cursor) return Natural
    is begin
-      return Parser_State_Lists.Constant_Reference (Cursor.Ptr).Label;
+      return Parser_State_Lists.Constant_Ref (Cursor.Ptr).Label;
    end Label;
 
    function Total_Recover_Cost (Cursor : in Parser_Lists.Cursor) return Integer
    is
       Result : Integer := 0;
    begin
-      for Error of Parser_State_Lists.Constant_Reference (Cursor.Ptr).Errors 
loop
+      for Error of Parser_State_Lists.Constant_Ref (Cursor.Ptr).Errors loop
          Result := Error.Recover.Cost;
       end loop;
       return Result;
@@ -120,12 +119,13 @@ package body WisiToken.Parse.LR.Parser_Lists is
    function Max_Recover_Ops_Length (Cursor : in Parser_Lists.Cursor) return 
Ada.Containers.Count_Type
    is
       use Ada.Containers;
+      use Config_Op_Arrays;
       Result : Count_Type := 0;
-      Errors : Parse_Error_Lists.List renames 
Parser_State_Lists.Constant_Reference (Cursor.Ptr).Errors;
+      Errors : Parse_Error_Lists.List renames Parser_State_Lists.Constant_Ref 
(Cursor.Ptr).Errors;
    begin
       for Error of Errors loop
-         if Error.Recover.Ops.Length > Result then
-            Result := Error.Recover.Ops.Length;
+         if Length (Error.Recover.Ops) > Result then
+            Result := Length (Error.Recover.Ops);
          end if;
       end loop;
       return Result;
@@ -134,7 +134,7 @@ package body WisiToken.Parse.LR.Parser_Lists is
    function Min_Recover_Cost (Cursor : in Parser_Lists.Cursor) return Integer
    is
       Result : Integer := Integer'Last;
-      Errors : Parse_Error_Lists.List renames 
Parser_State_Lists.Constant_Reference (Cursor.Ptr).Errors;
+      Errors : Parse_Error_Lists.List renames Parser_State_Lists.Constant_Ref 
(Cursor.Ptr).Errors;
    begin
       for Error of Errors loop
          if Error.Recover.Cost < Result then
@@ -146,12 +146,12 @@ package body WisiToken.Parse.LR.Parser_Lists is
 
    procedure Set_Verb (Cursor : in Parser_Lists.Cursor; Verb : in 
All_Parse_Action_Verbs)
    is begin
-      Parser_State_Lists.Reference (Cursor.Ptr).Verb := Verb;
+      Parser_State_Lists.Variable_Ref (Cursor.Ptr).Verb := Verb;
    end Set_Verb;
 
    function Verb (Cursor : in Parser_Lists.Cursor) return 
All_Parse_Action_Verbs
    is begin
-      return Parser_State_Lists.Constant_Reference (Cursor.Ptr).Verb;
+      return Parser_State_Lists.Constant_Ref (Cursor.Ptr).Verb;
    end Verb;
 
    procedure Terminate_Parser
@@ -161,8 +161,7 @@ package body WisiToken.Parse.LR.Parser_Lists is
       Trace     : in out WisiToken.Trace'Class;
       Terminals : in     Base_Token_Arrays.Vector)
    is
-      use all type SAL.Base_Peek_Type;
-      State : Parser_State renames Parser_State_Lists.Constant_Reference 
(Current.Ptr).Element.all;
+      State : Parser_State renames Parser_State_Lists.Constant_Ref 
(Current.Ptr).Element.all;
    begin
       if Trace_Parse > Outline then
          Trace.Put_Line
@@ -186,7 +185,6 @@ package body WisiToken.Parse.LR.Parser_Lists is
       Trace     : in out WisiToken.Trace'Class;
       Terminals : in     Base_Token_Arrays.Vector)
    is
-      use all type SAL.Base_Peek_Type;
       use all type Ada.Containers.Count_Type;
 
       function Compare
@@ -268,22 +266,22 @@ package body WisiToken.Parse.LR.Parser_Lists is
 
    function State_Ref (Position : in Cursor) return State_Reference
    is begin
-      return (Element => Parser_State_Lists.Constant_Reference 
(Position.Ptr).Element);
+      return (Element => Parser_State_Lists.Constant_Ref 
(Position.Ptr).Element);
    end State_Ref;
 
    function First_State_Ref (List : in Parser_Lists.List'Class) return 
State_Reference
    is begin
-      return (Element => Parser_State_Lists.Constant_Reference 
(List.Elements.First).Element);
+      return (Element => Parser_State_Lists.Constant_Ref 
(List.Elements.First).Element);
    end First_State_Ref;
 
    function First_Constant_State_Ref (List : in Parser_Lists.List'Class) 
return Constant_State_Reference
    is begin
-      return (Element => Parser_State_Lists.Constant_Reference 
(List.Elements.First).Element);
+      return (Element => Parser_State_Lists.Constant_Ref 
(List.Elements.First).Element);
    end First_Constant_State_Ref;
 
    procedure Put_Top_10 (Trace : in out WisiToken.Trace'Class; Cursor : in 
Parser_Lists.Cursor)
    is
-      Parser_State : Parser_Lists.Parser_State renames 
Parser_State_Lists.Constant_Reference (Cursor.Ptr);
+      Parser_State : Parser_Lists.Parser_State renames 
Parser_State_Lists.Constant_Ref (Cursor.Ptr);
    begin
       Trace.Put (Natural'Image (Parser_State.Label) & " stack: ");
       Trace.Put_Line (Image (Parser_State.Stack, Trace.Descriptor.all, 
Parser_State.Tree, Depth => 10));
@@ -297,7 +295,7 @@ package body WisiToken.Parse.LR.Parser_Lists is
    begin
       List.Parser_Label := List.Parser_Label + 1;
       declare
-         Item : Parser_State renames Parser_State_Lists.Reference 
(Cursor.Ptr).Element.all;
+         Item : Parser_State renames Parser_State_Lists.Variable_Ref 
(Cursor.Ptr);
          --  We can't do 'Prepend' in the scope of this 'renames';
          --  that would be tampering with cursors.
       begin
@@ -353,7 +351,7 @@ package body WisiToken.Parse.LR.Parser_Lists is
    is
       pragma Unreferenced (Container);
    begin
-      return (Element => Parser_State_Lists.Constant_Reference 
(Position.Ptr).Element);
+      return (Element => Parser_State_Lists.Constant_Ref 
(Position.Ptr).Element);
    end Constant_Reference;
 
    function Reference
@@ -363,7 +361,7 @@ package body WisiToken.Parse.LR.Parser_Lists is
    is
       pragma Unreferenced (Container);
    begin
-      return (Element => Parser_State_Lists.Reference (Position.Ptr).Element);
+      return (Element => Parser_State_Lists.Variable_Ref 
(Position.Ptr).Element);
    end Reference;
 
    function Persistent_State_Ref (Position : in Parser_Node_Access) return 
State_Access
diff --git a/packages/wisi/wisitoken-parse-lr-parser_lists.ads 
b/packages/wisi/wisitoken-parse-lr-parser_lists.ads
index a5af546..19aa370 100644
--- a/packages/wisi/wisitoken-parse-lr-parser_lists.ads
+++ b/packages/wisi/wisitoken-parse-lr-parser_lists.ads
@@ -22,6 +22,7 @@ pragma License (Modified_GPL);
 
 with Ada.Iterator_Interfaces;
 with SAL.Gen_Indefinite_Doubly_Linked_Lists;
+with SAL.Gen_Unbounded_Definite_Stacks;
 with WisiToken.Syntax_Trees;
 package WisiToken.Parse.LR.Parser_Lists is
 
diff --git a/packages/wisi/wisitoken-parse-lr-parser_no_recover.adb 
b/packages/wisi/wisitoken-parse-lr-parser_no_recover.adb
index 67371f1..7943aab 100644
--- a/packages/wisi/wisitoken-parse-lr-parser_no_recover.adb
+++ b/packages/wisi/wisitoken-parse-lr-parser_no_recover.adb
@@ -36,8 +36,6 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
       Nonterm        :    out WisiToken.Syntax_Trees.Valid_Node_Index;
       Trace          : in out WisiToken.Trace'Class)
    is
-      use all type SAL.Base_Peek_Type;
-
       Parser_State  : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref.Element.all;
       Children_Tree : Syntax_Trees.Valid_Node_Index_Array (1 .. 
SAL.Base_Peek_Type (Action.Token_Count));
       --  for Set_Children.
@@ -83,8 +81,6 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
          Current_Parser.Set_Verb (Reduce);
 
          declare
-            use all type SAL.Base_Peek_Type;
-
             New_State : constant Unknown_State_Index := Goto_For
               (Table => Shared_Parser.Table.all,
                State => Parser_State.Stack (SAL.Base_Peek_Type 
(Action.Token_Count) + 1).State,
@@ -159,8 +155,6 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
      (Shared_Parser : in out Parser;
       Verb          :    out All_Parse_Action_Verbs)
    is
-      use all type SAL.Base_Peek_Type;
-
       Shift_Count  : SAL.Base_Peek_Type := 0;
       Accept_Count : SAL.Base_Peek_Type := 0;
       Error_Count  : SAL.Base_Peek_Type := 0;
@@ -236,7 +230,6 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
    overriding procedure Parse (Shared_Parser : aliased in out Parser)
    is
       use all type Syntax_Trees.User_Data_Access;
-      use all type SAL.Base_Peek_Type;
 
       Trace : WisiToken.Trace'Class renames Shared_Parser.Trace.all;
 
@@ -436,7 +429,6 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
 
    overriding procedure Execute_Actions (Parser : in out 
LR.Parser_No_Recover.Parser)
    is
-      use all type SAL.Base_Peek_Type;
       use all type Syntax_Trees.User_Data_Access;
 
       procedure Process_Node
@@ -489,9 +481,7 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
    end Execute_Actions;
 
    overriding function Tree (Parser : in LR.Parser_No_Recover.Parser) return 
Syntax_Trees.Tree
-   is
-      use all type SAL.Base_Peek_Type;
-   begin
+   is begin
       if Parser.Parsers.Count > 1 then
          raise WisiToken.Parse_Error with "ambigous parse";
       else
@@ -501,7 +491,6 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
 
    overriding function Any_Errors (Parser : in LR.Parser_No_Recover.Parser) 
return Boolean
    is
-      use all type SAL.Base_Peek_Type;
       use all type Ada.Containers.Count_Type;
       Parser_State : Parser_Lists.Parser_State renames 
Parser.Parsers.First_Constant_State_Ref;
    begin
diff --git a/packages/wisi/wisitoken-parse-lr.adb 
b/packages/wisi/wisitoken-parse-lr.adb
index 8900d4c..0ec3aa9 100644
--- a/packages/wisi/wisitoken-parse-lr.adb
+++ b/packages/wisi/wisitoken-parse-lr.adb
@@ -109,68 +109,41 @@ package body WisiToken.Parse.LR is
       return False;
    end Is_In;
 
-   function Find
-     (Symbol      : in Token_ID;
-      Action_List : in Action_Node_Ptr)
-     return Action_Node_Ptr
-   is
-      Action_Node : Action_Node_Ptr := Action_List;
-   begin
-      while Action_Node /= null loop
-         if Action_Node.Symbol = Symbol then
-            return Action_Node;
-         end if;
-         Action_Node := Action_Node.Next;
-      end loop;
-
-      return null;
-   end Find;
+   function Compare (Left, Right : in Token_ID) return SAL.Compare_Result
+   is begin
+      if Left < Right then
+         return SAL.Less;
+      elsif Left = Right then
+         return SAL.Equal;
+      else
+         return SAL.Greater;
+      end if;
+   end Compare;
 
    procedure Add
-     (List   : in out Action_Node_Ptr;
+     (List   : in out Action_Arrays.Vector;
       Symbol : in     Token_ID;
       Action : in     Parse_Action_Rec)
-   is
-      New_Item : constant Action_Node_Ptr := new Action_Node'(Symbol, new 
Parse_Action_Node'(Action, null), null);
-      I        : Action_Node_Ptr          := List;
-   begin
-      if I = null then
-         List := New_Item;
-      else
-         if List.Symbol > Symbol then
-            New_Item.Next := List;
-            List          := New_Item;
-         else
-            if List.Next = null then
-               List.Next := New_Item;
-            else
-               I := List;
+   is begin
+      declare
+         Node : constant Action_Arrays.Find_Reference_Type := List.Find 
(Symbol);
+      begin
+         if Node.Element /= null then
+            declare
+               I : Parse_Action_Node_Ptr := Node.Element.Actions;
+            begin
                loop
-                  exit when I.Next = null or else I.Next.Symbol > Symbol;
+                  exit when I.Next = null;
                   I := I.Next;
                end loop;
-               New_Item.Next := I.Next;
-               I.Next        := New_Item;
-            end if;
+               I.Next := new Parse_Action_Node'(Action, null);
+               return;
+            end;
          end if;
-      end if;
+      end;
+      List.Insert ((Symbol, new Parse_Action_Node'(Action, null)));
    end Add;
 
-   function Symbol (List : in Goto_Node_Ptr) return Token_ID
-   is begin
-      return List.Symbol;
-   end Symbol;
-
-   function State (List : in Goto_Node_Ptr) return State_Index
-   is begin
-      return List.State;
-   end State;
-
-   function Next (List : in Goto_Node_Ptr) return Goto_Node_Ptr
-   is begin
-      return List.Next;
-   end Next;
-
    function To_Vector (Item : in Kernel_Info_Array) return 
Kernel_Info_Arrays.Vector
    is begin
       return Result : Kernel_Info_Arrays.Vector do
@@ -219,70 +192,12 @@ package body WisiToken.Parse.LR is
       end return;
    end To_Vector;
 
-   function First (State : in Parse_State) return Action_List_Iterator
-   is begin
-      return Iter : Action_List_Iterator := (Node => State.Action_List, Item 
=> null) do
-         loop
-            exit when Iter.Node = null;
-            Iter.Item := Iter.Node.Action;
-            exit when Iter.Item /= null;
-            Iter.Node := Iter.Node.Next;
-         end loop;
-      end return;
-   end First;
-
-   function Is_Done (Iter : in Action_List_Iterator) return Boolean
-   is begin
-      return Iter.Node = null;
-   end Is_Done;
-
-   procedure Next (Iter : in out Action_List_Iterator)
-   is begin
-      if Iter.Node = null then
-         return;
-      end if;
-
-      if Iter.Item.Next = null then
-         loop
-            Iter.Node := Iter.Node.Next;
-            exit when Iter.Node = null;
-            Iter.Item := Iter.Node.Action;
-            exit when Iter.Item /= null;
-         end loop;
-      else
-         Iter.Item := Iter.Item.Next; -- a conflict
-      end if;
-   end Next;
-
-   function Symbol (Iter : in Action_List_Iterator) return Token_ID
-   is begin
-      return Iter.Node.Symbol;
-   end Symbol;
-
-   function Action (Iter : in Action_List_Iterator) return Parse_Action_Rec
-   is begin
-      return Iter.Item.Item;
-   end Action;
-
    procedure Add_Action
-     (State       : in out LR.Parse_State;
-      Symbol      : in     Token_ID;
-      State_Index : in     WisiToken.State_Index)
-   is
-      Action   : constant Parse_Action_Rec := (Shift, State_Index);
-      New_Node : constant Action_Node_Ptr  := new Action_Node'(Symbol, new 
Parse_Action_Node'(Action, null), null);
-      Node     : Action_Node_Ptr;
-   begin
-      if State.Action_List = null then
-         State.Action_List := New_Node;
-      else
-         Node := State.Action_List;
-         loop
-            exit when Node.Next = null;
-            Node := Node.Next;
-         end loop;
-         Node.Next := New_Node;
-      end if;
+     (State        : in out LR.Parse_State;
+      Symbol       : in     Token_ID;
+      State_Index  : in     WisiToken.State_Index)
+   is begin
+      Add (State.Action_List, Symbol, (Shift, State_Index));
    end Add_Action;
 
    procedure Add_Action
@@ -294,29 +209,13 @@ package body WisiToken.Parse.LR is
       Semantic_Action : in     WisiToken.Syntax_Trees.Semantic_Action;
       Semantic_Check  : in     Semantic_Checks.Semantic_Check)
    is
-      Action   : Parse_Action_Rec;
-      New_Node : Action_Node_Ptr;
-      Node     : Action_Node_Ptr;
+      Action : constant Parse_Action_Rec :=
+        (case Verb is
+         when Reduce    => (Reduce, Production, Semantic_Action, 
Semantic_Check, RHS_Token_Count),
+         when Accept_It => (Accept_It, Production, Semantic_Action, 
Semantic_Check, RHS_Token_Count),
+         when others    => raise SAL.Programmer_Error);
    begin
-      case Verb is
-      when Reduce =>
-         Action := (Reduce, Production, Semantic_Action, Semantic_Check, 
RHS_Token_Count);
-      when Accept_It =>
-         Action := (Accept_It, Production, Semantic_Action, Semantic_Check, 
RHS_Token_Count);
-      when others =>
-         null;
-      end case;
-      New_Node := new Action_Node'(Symbol, new Parse_Action_Node'(Action, 
null), null);
-      if State.Action_List = null then
-         State.Action_List := New_Node;
-      else
-         Node := State.Action_List;
-         loop
-            exit when Node.Next = null;
-            Node := Node.Next;
-         end loop;
-         Node.Next := New_Node;
-      end if;
+      Add (State.Action_List, Symbol, Action);
    end Add_Action;
 
    procedure Add_Action
@@ -327,14 +226,13 @@ package body WisiToken.Parse.LR is
       Semantic_Action : in     WisiToken.Syntax_Trees.Semantic_Action;
       Semantic_Check  : in     WisiToken.Semantic_Checks.Semantic_Check)
    is begin
-      --  We assume Duplicate_Reduce is True for this state; no
-      --  conflicts, all the same action.
+      --  We assume WisiToken.BNF.Output_Ada_Common.Duplicate_Reduce is True
+      --  for this state; no conflicts, all the same action.
       for Symbol of Symbols loop
          Add_Action
            (State, Symbol, Reduce, Production, RHS_Token_Count,
             Semantic_Action, Semantic_Check);
       end loop;
-      Add_Error (State);
    end Add_Action;
 
    procedure Add_Conflict
@@ -347,7 +245,10 @@ package body WisiToken.Parse.LR is
    is
       Conflict : constant Parse_Action_Rec :=
         (Reduce, Reduce_Production, Semantic_Action, Semantic_Check, 
RHS_Token_Count);
-      Node : Parse_Action_Node_Ptr := Find (Symbol, State.Action_List).Action;
+
+      Ref : constant Action_Arrays.Find_Reference_Constant_Type := 
State.Action_List.Find_Constant (Symbol);
+
+      Node : Parse_Action_Node_Ptr := Ref.Actions;
    begin
       loop
          exit when Node.Next = null;
@@ -356,50 +257,12 @@ package body WisiToken.Parse.LR is
       Node.Next := new Parse_Action_Node'(Conflict, null);
    end Add_Conflict;
 
-   procedure Add_Error (State  : in out LR.Parse_State)
-   is
-      Action : constant Parse_Action_Rec := (Verb => Error);
-      Node   : Action_Node_Ptr           := State.Action_List;
-   begin
-      if Node = null then
-         raise SAL.Programmer_Error with "adding an error action to a parse 
table state before other actions.";
-      end if;
-      loop
-         exit when Node.Next = null;
-         Node := Node.Next;
-      end loop;
-      Node.Next := new Action_Node'(Invalid_Token_ID, new 
Parse_Action_Node'(Action, null), null);
-   end Add_Error;
-
    procedure Add_Goto
      (State      : in out LR.Parse_State;
       Symbol     : in     Token_ID;
       To_State   : in     State_Index)
-   is
-      List     : Goto_Node_Ptr renames State.Goto_List;
-      New_Item : constant Goto_Node_Ptr := new Goto_Node'(Symbol, To_State, 
null);
-      I        : Goto_Node_Ptr := List;
-   begin
-      if I = null then
-         List := New_Item;
-      else
-         if List.Symbol > Symbol then
-            New_Item.Next := List;
-            List          := New_Item;
-         else
-            if List.Next = null then
-               List.Next := New_Item;
-            else
-               I := List;
-               loop
-                  exit when I.Next = null or List.Symbol > Symbol;
-                  I := I.Next;
-               end loop;
-               New_Item.Next := I.Next;
-               I.Next        := New_Item;
-            end if;
-         end if;
-      end if;
+   is begin
+      State.Goto_List.Insert ((Symbol, To_State));
    end Add_Goto;
 
    function Goto_For
@@ -408,103 +271,60 @@ package body WisiToken.Parse.LR is
       ID    : in Token_ID)
      return Unknown_State_Index
    is
-      Goto_Node : constant Goto_Node_Ptr := Goto_For (Table, State, ID);
+      Ref : constant Goto_Arrays.Find_Reference_Constant_Type := Table.States 
(State).Goto_List.Find_Constant (ID);
    begin
-      if Goto_Node = null then
+      if Ref.Element = null then
          --  We can only get here during error recovery.
          return Unknown_State;
       else
-         return Goto_Node.State;
+         return Ref.State;
       end if;
    end Goto_For;
 
-   function Goto_For
-     (Table : in Parse_Table;
-      State : in State_Index;
-      ID    : in Token_ID)
-     return Goto_Node_Ptr
-   is
-      Goto_Node : Goto_Node_Ptr := Table.States (State).Goto_List;
-   begin
-      while Goto_Node /= null and then Goto_Node.Symbol /= ID loop
-         Goto_Node := Goto_Node.Next;
-      end loop;
-
-      return Goto_Node;
-   end Goto_For;
-
    function Action_For
      (Table : in Parse_Table;
       State : in State_Index;
       ID    : in Token_ID)
      return Parse_Action_Node_Ptr
    is
-      Action_Node : Action_Node_Ptr := Table.States (State).Action_List;
+      Ref : constant Action_Arrays.Find_Reference_Constant_Type := 
Table.States (State).Action_List.Find_Constant (ID);
    begin
-      if Action_Node = null then
-         raise SAL.Programmer_Error with "no actions for state" & 
Unknown_State_Index'Image (State);
+      if Ref.Element = null then
+         return Table.Error_Action;
       end if;
 
-      while Action_Node.Next /= null and Action_Node.Symbol /= ID loop
-         Action_Node := Action_Node.Next;
-      end loop;
-
-      return Action_Node.Action;
+      return Ref.Actions;
    end Action_For;
 
    function Expecting (Table : in Parse_Table; State : in State_Index) return 
Token_ID_Set
    is
-      Result : Token_ID_Set    := (Table.First_Terminal .. Table.Last_Terminal 
=> False);
-      Action : Action_Node_Ptr := Table.States (State).Action_List;
+      Result : Token_ID_Set := (Table.First_Terminal .. Table.Last_Terminal => 
False);
    begin
-      loop
-         --  Last action is error; don't include it.
-         exit when Action.Next = null;
-
+      for Action of Table.States (State).Action_List loop
          Result (Action.Symbol) := True;
-         Action := Action.Next;
       end loop;
       return Result;
    end Expecting;
 
    procedure Free_Table (Table : in out Parse_Table_Ptr)
    is
-
       procedure Free is new Ada.Unchecked_Deallocation (Parse_Table, 
Parse_Table_Ptr);
-      Action            : Action_Node_Ptr;
-      Temp_Action       : Action_Node_Ptr;
       Parse_Action      : Parse_Action_Node_Ptr;
       Temp_Parse_Action : Parse_Action_Node_Ptr;
-      Got               : Goto_Node_Ptr;
-      Temp_Got          : Goto_Node_Ptr;
    begin
       if Table = null then
          return;
       end if;
 
       for State of Table.States loop
-         Action := State.Action_List;
-         loop
-            exit when Action = null;
-            Parse_Action := Action.Action;
+         for Action of State.Action_List loop
+            Parse_Action := Action.Actions;
             loop
                exit when Parse_Action = null;
                Temp_Parse_Action := Parse_Action;
                Parse_Action := Parse_Action.Next;
                Free (Temp_Parse_Action);
             end loop;
-
-            Temp_Action := Action;
-            Action := Action.Next;
-            Free (Temp_Action);
-         end loop;
-
-         Got := State.Goto_List;
-         loop
-            exit when Got = null;
-            Temp_Got := Got;
-            Got := Got.Next;
-            Free (Temp_Got);
          end loop;
       end loop;
 
@@ -650,17 +470,18 @@ package body WisiToken.Parse.LR is
 
          for State of Table.States loop
             declare
-               Node_I       : Action_Node_Ptr := new Action_Node;
-               Actions_Done : Boolean         := False;
+               Actions_Done : Boolean := False;
             begin
-               State.Action_List := Node_I;
+               State.Action_List.Set_Capacity (Next_Count_Type);
+
                loop
                   declare
+                     Node_I      : Action_Node;
                      Node_J      : Parse_Action_Node_Ptr := new 
Parse_Action_Node;
-                     Action_Done : Boolean := False;
+                     Action_Done : Boolean               := False;
                      Verb        : Parse_Action_Verbs;
                   begin
-                     Node_I.Action := Node_J;
+                     Node_I.Actions := Node_J;
                      loop
                         Verb := Next_Parse_Action_Verbs;
                         Node_J.Item :=
@@ -692,14 +513,16 @@ package body WisiToken.Parse.LR is
                            Node_J.Item.Token_Count := Next_Count_Type;
 
                         when Error =>
-                           Actions_Done := True;
+                           raise SAL.Programmer_Error;
                         end case;
 
                         if Check_Semicolon then
                            Action_Done := True;
 
-                           if not Actions_Done then
-                              Node_I.Symbol := Next_Token_ID;
+                           Node_I.Symbol := Next_Token_ID;
+
+                           if Check_Semicolon then
+                              Actions_Done := True;
                            end if;
                         end if;
 
@@ -710,11 +533,10 @@ package body WisiToken.Parse.LR is
                      end loop;
 
                      Check_New_Line;
+                     State.Action_List.Insert (Node_I);
                   end;
 
                   exit when Actions_Done;
-                  Node_I.Next := new Action_Node;
-                  Node_I      := Node_I.Next;
                end loop;
             end;
 
@@ -722,36 +544,34 @@ package body WisiToken.Parse.LR is
                --  No Gotos
                null;
             else
+               State.Goto_List.Set_Capacity (Next_Count_Type);
                declare
-                  Node_I : Goto_Node_Ptr := new Goto_Node;
+                  Node : Goto_Node;
                begin
-                  State.Goto_List  := Node_I;
                   loop
-                     Node_I.Symbol := Next_Token_ID;
-                     Node_I.State  := Next_State_Index;
+                     Node.Symbol := Next_Token_ID;
+                     Node.State  := Next_State_Index;
+                     State.Goto_List.Insert (Node);
                      exit when Check_Semicolon;
-                     Node_I.Next   := new Goto_Node;
-                     Node_I        := Node_I.Next;
                   end loop;
                end;
             end if;
             Check_New_Line;
 
             declare
-               First : constant Integer := Next_Integer;
-               Last  : constant Integer := Next_Integer;
+               First : constant Count_Type := Next_Count_Type;
+               Last  : constant Integer    := Next_Integer;
             begin
                if Last = -1 then
                   --  State.Kernel not set for state 0
                   null;
                else
-                  State.Kernel.Set_First (Count_Type (First));
-                  State.Kernel.Set_Last (Count_Type (Last));
+                  State.Kernel.Set_First_Last (First, Count_Type (Last));
 
                   for I in State.Kernel.First_Index .. State.Kernel.Last_Index 
loop
                      State.Kernel (I).LHS := Next_Token_ID;
                      State.Kernel (I).Before_Dot := Next_Token_ID;
-                     State.Kernel (I).Length_After_Dot := Count_Type 
(Next_Integer);
+                     State.Kernel (I).Length_After_Dot := Next_Count_Type;
                   end loop;
                end if;
             end;
@@ -761,8 +581,12 @@ package body WisiToken.Parse.LR is
                --  No minimal action
                null;
             else
-               State.Minimal_Complete_Actions.Set_First (Count_Type 
(Next_Integer));
-               State.Minimal_Complete_Actions.Set_Last (Count_Type 
(Next_Integer));
+               declare
+                  First : constant Count_Type := Next_Count_Type;
+                  Last  : constant Count_Type := Next_Count_Type;
+               begin
+                  State.Minimal_Complete_Actions.Set_First_Last (First, Last);
+               end;
                for I in State.Minimal_Complete_Actions.First_Index .. 
State.Minimal_Complete_Actions.Last_Index loop
                   declare
                      Verb         : constant Minimal_Verbs := 
Next_Parse_Action_Verbs;
@@ -788,6 +612,9 @@ package body WisiToken.Parse.LR is
 
             exit when Check_EOI;
          end loop;
+
+         Table.Error_Action := new Parse_Action_Node'((Verb => Error), null);
+
          return Table;
       end;
    exception
@@ -830,40 +657,79 @@ package body WisiToken.Parse.LR is
         Left.Ins_Token_Index = Right.Ins_Token_Index;
    end Equal;
 
-   function None_Since_FF (Ops : in Config_Op_Arrays.Vector; Op : in 
Config_Op_Label) return Boolean
-   is begin
-      for O of reverse Ops loop
-         exit when O.Op = Fast_Forward;
-         if O.Op = Op then
+   function None (Ops : aliased in Config_Op_Arrays.Vector; Op : in 
Config_Op_Label) return Boolean
+   is
+      use Config_Op_Arrays, Config_Op_Array_Refs;
+   begin
+      for I in First_Index (Ops) .. Last_Index (Ops) loop
+         if Constant_Ref (Ops, I).Op /= Op then
             return False;
          end if;
       end loop;
       return True;
+   end None;
+
+   function None_Since_FF (Ops : aliased in Config_Op_Arrays.Vector; Op : in 
Config_Op_Label) return Boolean
+   is
+      use Config_Op_Arrays, Config_Op_Array_Refs;
+   begin
+      for I in reverse First_Index (Ops) .. Last_Index (Ops) loop
+         declare
+            O : Config_Op renames Constant_Ref (Ops, I);
+         begin
+            exit when O.Op = Fast_Forward;
+            if O.Op = Op then
+               return False;
+            end if;
+         end;
+      end loop;
+      return True;
    end None_Since_FF;
 
-   function Only_Since_FF (Ops : in Config_Op_Arrays.Vector; Op : in 
Config_Op_Label) return Boolean
+   function Only_Since_FF (Ops : aliased in Config_Op_Arrays.Vector; Op : in 
Config_Op_Label) return Boolean
    is
+      use Config_Op_Arrays, Config_Op_Array_Refs;
       use all type Ada.Containers.Count_Type;
    begin
-      if Ops.Length = 0 or else Ops (Ops.Last_Index).Op /= Op then
+      if Length (Ops) = 0 or else Constant_Ref (Ops, Last_Index (Ops)).Op /= 
Op then
          return False;
       else
-         for O of reverse Ops loop
-            exit when O.Op = Fast_Forward;
-            if O.Op /= Op then
-               return False;
-            end if;
+         for I in reverse First_Index (Ops) .. Last_Index (Ops) loop
+            declare
+               O : Config_Op renames Constant_Ref (Ops, I);
+            begin
+               exit when O.Op = Fast_Forward;
+               if O.Op /= Op then
+                  return False;
+               end if;
+            end;
          end loop;
          return True;
       end if;
    end Only_Since_FF;
 
+   function Any (Ops : aliased in Config_Op_Arrays.Vector; Op : in 
Config_Op_Label) return Boolean
+   is
+      use Config_Op_Arrays, Config_Op_Array_Refs;
+   begin
+      for I in First_Index (Ops) .. Last_Index (Ops) loop
+         declare
+            O : Config_Op renames Constant_Ref (Ops, I);
+         begin
+            if O.Op = Op then
+               return True;
+            end if;
+         end;
+      end loop;
+      return False;
+   end Any;
+
    function Valid_Tree_Indices (Stack : in Recover_Stacks.Stack; Depth : in 
SAL.Base_Peek_Type) return Boolean
    is
       use all type WisiToken.Syntax_Trees.Node_Index;
    begin
       for I in 1 .. Depth loop
-         if Stack (I).Tree_Index = Syntax_Trees.Invalid_Node_Index then
+         if Stack.Peek (I).Tree_Index = Syntax_Trees.Invalid_Node_Index then
             return False;
          end if;
       end loop;
diff --git a/packages/wisi/wisitoken-parse-lr.ads 
b/packages/wisi/wisitoken-parse-lr.ads
index 91b55c8..76a02d5 100644
--- a/packages/wisi/wisitoken-parse-lr.ads
+++ b/packages/wisi/wisitoken-parse-lr.ads
@@ -37,15 +37,19 @@ pragma License (Modified_GPL);
 with Ada.Containers.Indefinite_Doubly_Linked_Lists;
 with Ada.Unchecked_Deallocation;
 with SAL.Gen_Array_Image;
+with SAL.Gen_Bounded_Definite_Stacks.Gen_Image_Aux;
 with SAL.Gen_Bounded_Definite_Vectors.Gen_Image_Aux;
-with SAL.Gen_Bounded_Definite_Vectors.Gen_Sorted;
+with SAL.Gen_Bounded_Definite_Vectors.Gen_Refs;
+with SAL.Gen_Bounded_Definite_Vectors_Sorted.Gen_Image_Aux;
+with SAL.Gen_Bounded_Definite_Vectors_Sorted.Gen_Refs;
 with SAL.Gen_Unbounded_Definite_Min_Heaps_Fibonacci;
 with SAL.Gen_Unbounded_Definite_Queues.Gen_Image_Aux;
-with SAL.Gen_Unbounded_Definite_Stacks.Gen_Image_Aux;
+with SAL.Gen_Unbounded_Definite_Vectors_Sorted;
 with System.Multiprocessors;
 with WisiToken.Semantic_Checks;
 with WisiToken.Syntax_Trees;
 package WisiToken.Parse.LR is
+   use all type SAL.Base_Peek_Type;
 
    type All_Parse_Action_Verbs is (Pause, Shift, Reduce, Accept_It, Error);
    subtype Parse_Action_Verbs is All_Parse_Action_Verbs range Shift .. Error;
@@ -54,7 +58,7 @@ package WisiToken.Parse.LR is
    --  to re-sync on the same input terminal.
 
    subtype Token_ID_Array_1_3 is Token_ID_Array (1 .. 3);
-   --  For Use_Minimal_Complete_Actions in McDenzie_Recover.
+   --  For Language_Matching_Begin_Tokens.
 
    type Parse_Action_Rec (Verb : Parse_Action_Verbs := Shift) is record
       case Verb is
@@ -99,33 +103,33 @@ package WisiToken.Parse.LR is
    function Is_In (Item : in Parse_Action_Rec; List : in 
Parse_Action_Node_Ptr) return Boolean;
    --  True if Item is Equal to any element of List.
 
-   type Action_Node;
-   type Action_Node_Ptr is access Action_Node;
-
    type Action_Node is record
-      Symbol : Token_ID := Invalid_Token_ID; -- ignored if Action is Error
-      Action : Parse_Action_Node_Ptr;
-      Next   : Action_Node_Ptr;
+      Symbol  : Token_ID := Invalid_Token_ID; -- ignored if Action is Error
+      Actions : Parse_Action_Node_Ptr;
    end record;
-   procedure Free is new Ada.Unchecked_Deallocation (Action_Node, 
Action_Node_Ptr);
 
-   function Find
-     (Symbol      : in Token_ID;
-      Action_List : in Action_Node_Ptr)
-     return Action_Node_Ptr;
+   function To_Key (Item : in Action_Node) return Token_ID is (Item.Symbol);
+
+   function Compare (Left, Right : in Token_ID) return SAL.Compare_Result;
+
+   package Action_Arrays is new SAL.Gen_Unbounded_Definite_Vectors_Sorted
+     (Action_Node, Token_ID, To_Key, Compare);
 
    procedure Add
-     (List   : in out Action_Node_Ptr;
+     (List   : in out Action_Arrays.Vector;
       Symbol : in     Token_ID;
       Action : in     Parse_Action_Rec);
    --  Add action to List, sorted on ascending Symbol.
 
-   type Goto_Node is private;
-   type Goto_Node_Ptr is access Goto_Node;
+   type Goto_Node is record
+      Symbol : Token_ID;
+      State  : State_Index;
+   end record;
+
+   function To_Key (Item : in Goto_Node) return Token_ID is (Item.Symbol);
 
-   function Symbol (List : in Goto_Node_Ptr) return Token_ID;
-   function State (List : in Goto_Node_Ptr) return State_Index;
-   function Next (List : in Goto_Node_Ptr) return Goto_Node_Ptr;
+   package Goto_Arrays is  new SAL.Gen_Unbounded_Definite_Vectors_Sorted
+     (Goto_Node, Token_ID, To_Key, Compare);
 
    type Kernel_Info is record
       LHS              : Token_ID                  := Token_ID'First;
@@ -172,8 +176,8 @@ package WisiToken.Parse.LR is
    function Strict_Image is new Minimal_Action_Arrays.Gen_Image (Strict_Image);
 
    type Parse_State is record
-      Action_List : Action_Node_Ptr;
-      Goto_List   : Goto_Node_Ptr;
+      Action_List : Action_Arrays.Vector;
+      Goto_List   : Goto_Arrays.Vector;
 
       --  The following are used in error recovery.
       Kernel : Kernel_Info_Arrays.Vector;
@@ -188,17 +192,6 @@ package WisiToken.Parse.LR is
 
    type Parse_State_Array is array (State_Index range <>) of Parse_State;
 
-   type Action_List_Iterator is tagged private;
-   --  Iterates over all shift/reduce actions for a state, including
-   --  conflicts.
-
-   function First (State : in Parse_State) return Action_List_Iterator;
-   function Is_Done (Iter : in Action_List_Iterator) return Boolean;
-   procedure Next (Iter : in out Action_List_Iterator);
-
-   function Symbol (Iter : in Action_List_Iterator) return Token_ID;
-   function Action (Iter : in Action_List_Iterator) return Parse_Action_Rec;
-
    procedure Add_Action
      (State       : in out Parse_State;
       Symbol      : in     Token_ID;
@@ -234,9 +227,6 @@ package WisiToken.Parse.LR is
       Semantic_Check    : in     WisiToken.Semantic_Checks.Semantic_Check);
    --  Add a Reduce conflict to State.
 
-   procedure Add_Error (State  : in out Parse_State);
-   --  Add an Error action to State, at tail of action list.
-
    procedure Add_Goto
      (State    : in out Parse_State;
       Symbol   : in     Token_ID;
@@ -306,6 +296,7 @@ package WisiToken.Parse.LR is
      is tagged
    record
       States         : Parse_State_Array (State_First .. State_Last);
+      Error_Action   : Parse_Action_Node_Ptr;
       McKenzie_Param : McKenzie_Param_Type (First_Terminal, Last_Terminal, 
First_Nonterminal, Last_Nonterminal);
    end record;
 
@@ -314,11 +305,6 @@ package WisiToken.Parse.LR is
       State : in State_Index;
       ID    : in Token_ID)
      return Unknown_State_Index;
-   function Goto_For
-     (Table : in Parse_Table;
-      State : in State_Index;
-      ID    : in Token_ID)
-     return Goto_Node_Ptr;
    --  Return next state after reducing stack by nonterminal ID;
    --  Unknown_State if none (only possible during error recovery).
    --  Second form allows retrieving Production.
@@ -327,11 +313,19 @@ package WisiToken.Parse.LR is
      (Table : in Parse_Table;
       State : in State_Index;
       ID    : in Token_ID)
-     return Parse_Action_Node_Ptr;
+     return Parse_Action_Node_Ptr
+   with Post => Action_For'Result /= null;
    --  Return the action for State, terminal ID.
 
    function Expecting (Table : in Parse_Table; State : in State_Index) return 
Token_ID_Set;
 
+   function McKenzie_Defaulted (Table : in Parse_Table) return Boolean is
+     --  We can't use Table.McKenzie_Param = Default_McKenzie_Param here,
+     --  because the discriminants are different.
+     (Table.McKenzie_Param.Check_Limit = Default_McKenzie_Param.Check_Limit and
+        Table.McKenzie_Param.Check_Delta_Limit = 
Default_McKenzie_Param.Check_Delta_Limit and
+        Table.McKenzie_Param.Enqueue_Limit = 
Default_McKenzie_Param.Enqueue_Limit);
+
    type Parse_Table_Ptr is access Parse_Table;
    procedure Free_Table (Table : in out Parse_Table_Ptr);
 
@@ -372,8 +366,8 @@ package WisiToken.Parse.LR is
       Tokens     : in Fast_Token_ID_Arrays.Vector;
       Descriptor : in WisiToken.Descriptor)
      return String
-     is (SAL.Peek_Type'Image (Index) & ":" & SAL.Peek_Type'Image 
(Tokens.Last_Index) & ":" &
-           Image (Tokens (Index), Descriptor));
+     is (SAL.Peek_Type'Image (Index) & ":" & SAL.Peek_Type'Image 
(Fast_Token_ID_Arrays.Last_Index (Tokens)) & ":" &
+           Image (Fast_Token_ID_Arrays.Element (Tokens, Index), Descriptor));
 
    type Config_Op_Label is (Fast_Forward, Undo_Reduce, Push_Back, Insert, 
Delete);
    subtype Insert_Delete_Op_Label is Config_Op_Label range Insert .. Delete;
@@ -470,6 +464,8 @@ package WisiToken.Parse.LR is
    --  config does hit that limit, it is abandoned; some other config is
    --  likely to be cheaper.
 
+   package Config_Op_Array_Refs is new Config_Op_Arrays.Gen_Refs;
+
    function Config_Op_Image (Item : in Config_Op; Descriptor : in 
WisiToken.Descriptor) return String
      is ("(" & Config_Op_Label'Image (Item.Op) & ", " &
            (case Item.Op is
@@ -495,28 +491,26 @@ package WisiToken.Parse.LR is
    function Image (Item : in Config_Op_Arrays.Vector; Descriptor : in 
WisiToken.Descriptor) return String
      renames Config_Op_Array_Image;
 
-   function None (Ops : in Config_Op_Arrays.Vector; Op : in Config_Op_Label) 
return Boolean
-     is (for all O of Ops => O.Op /= Op);
+   function None (Ops : aliased in Config_Op_Arrays.Vector; Op : in 
Config_Op_Label) return Boolean;
    --  True if Ops contains no Op.
 
-   function None_Since_FF (Ops : in Config_Op_Arrays.Vector; Op : in 
Config_Op_Label) return Boolean;
+   function None_Since_FF (Ops : aliased in Config_Op_Arrays.Vector; Op : in 
Config_Op_Label) return Boolean;
    --  True if Ops contains no Op after the last Fast_Forward (or ops.first, if
    --  no Fast_Forward).
 
-   function Only_Since_FF (Ops : in Config_Op_Arrays.Vector; Op : in 
Config_Op_Label) return Boolean;
+   function Only_Since_FF (Ops : aliased in Config_Op_Arrays.Vector; Op : in 
Config_Op_Label) return Boolean;
    --  True if Ops contains only Op (at least one) after the last Fast_Forward 
(or ops.first, if
    --  no Fast_Forward).
 
-   function Any (Ops : in Config_Op_Arrays.Vector; Op : in Config_Op_Label) 
return Boolean
-     is (for some O of Ops => O.Op = Op);
+   function Any (Ops : aliased in Config_Op_Arrays.Vector; Op : in 
Config_Op_Label) return Boolean;
    --  True if Ops contains at least one Op.
 
-   package Insert_Delete_Arrays is new SAL.Gen_Bounded_Definite_Vectors
-     (Positive_Index_Type, Insert_Delete_Op, Capacity => 80);
+   package Sorted_Insert_Delete_Arrays is new 
SAL.Gen_Bounded_Definite_Vectors_Sorted
+     (Insert_Delete_Op, Compare, Capacity => 80);
 
-   package Sorted_Insert_Delete_Arrays is new Insert_Delete_Arrays.Gen_Sorted 
(Compare);
+   package Insert_Delete_Array_Refs is new 
Sorted_Insert_Delete_Arrays.Gen_Refs;
 
-   function Image is new Insert_Delete_Arrays.Gen_Image_Aux 
(WisiToken.Descriptor, Image);
+   function Image is new Sorted_Insert_Delete_Arrays.Gen_Image_Aux 
(WisiToken.Descriptor, Image);
 
    type Recover_Stack_Item is record
       State : Unknown_State_Index;
@@ -530,7 +524,7 @@ package WisiToken.Parse.LR is
       --  during recover.
    end record;
 
-   package Recover_Stacks is new SAL.Gen_Unbounded_Definite_Stacks 
(Recover_Stack_Item);
+   package Recover_Stacks is new SAL.Gen_Bounded_Definite_Stacks 
(Recover_Stack_Item);
 
    function Image (Item : in Recover_Stack_Item; Descriptor : in 
WisiToken.Descriptor) return String
      is ((if Item.State = Unknown_State then " " else Trimmed_Image 
(Item.State)) & " : " &
@@ -546,7 +540,8 @@ package WisiToken.Parse.LR is
      return String
      renames Recover_Stack_Image;
 
-   function Valid_Tree_Indices (Stack : in Recover_Stacks.Stack; Depth : in 
SAL.Base_Peek_Type) return Boolean;
+   function Valid_Tree_Indices (Stack : in Recover_Stacks.Stack; Depth : in 
SAL.Base_Peek_Type) return Boolean with
+     Pre => Stack.Depth >= Depth;
    --  Return True if Stack top Depth items have valid Tree_Indices,
    --  which is true if they were copied from the parser stack, and not
    --  pushed by recover.
@@ -559,9 +554,15 @@ package WisiToken.Parse.LR is
    type Minimal_Complete_State is (None, Active, Done);
 
    type Configuration is record
-      Stack : Recover_Stacks.Stack;
+      Stack : Recover_Stacks.Stack (70);
       --  Initially built from the parser stack, then the stack after the
       --  Ops below have been performed.
+      --
+      --  Required size is determined by source code structure nesting;
+      --  larger size slows down recover due to memory cache thrashing and
+      --  allocation.
+      --
+      --  Emacs Ada mode wisi.adb needs > 50
 
       Resume_Token_Goal : WisiToken.Token_Index := WisiToken.Token_Index'Last;
       --  A successful solution shifts this token. Per-config because it
@@ -575,7 +576,7 @@ package WisiToken.Parse.LR is
       String_Quote_Checked : Line_Number_Type := Invalid_Line_Number;
       --  Max line checked for missing string quote.
 
-      Insert_Delete : Sorted_Insert_Delete_Arrays.Vector;
+      Insert_Delete : aliased Sorted_Insert_Delete_Arrays.Vector;
       --  Edits to the input stream that are not yet parsed; contains only
       --  Insert and Delete ops, in token_index order.
 
@@ -599,7 +600,7 @@ package WisiToken.Parse.LR is
       --  in explore when adding an op, or in language_fixes when adding a
       --  fix).
 
-      Ops : Config_Op_Arrays.Vector;
+      Ops : aliased Config_Op_Arrays.Vector;
       --  Record of operations applied to this Config, in application order.
       --  Insert and Delete ops that are not yet parsed are reflected in
       --  Insert_Delete, in token_index order.
@@ -612,8 +613,6 @@ package WisiToken.Parse.LR is
       Minimal_Complete_State : LR.Minimal_Complete_State := None;
       Matching_Begin_Done    : Boolean                   := False;
    end record;
-   type Configuration_Access is access all Configuration;
-   for Configuration_Access'Storage_Size use 0;
 
    function Key (A : in Configuration) return Integer is (A.Cost);
 
@@ -621,7 +620,6 @@ package WisiToken.Parse.LR is
 
    package Config_Heaps is new SAL.Gen_Unbounded_Definite_Min_Heaps_Fibonacci
      (Element_Type   => Configuration,
-      Element_Access => Configuration_Access,
       Key_Type       => Integer,
       Key            => Key,
       Set_Key        => Set_Key);
@@ -666,18 +664,4 @@ package WisiToken.Parse.LR is
 
    package Parse_Error_Lists is new 
Ada.Containers.Indefinite_Doubly_Linked_Lists (Parse_Error);
 
-private
-
-   type Goto_Node is record
-      Symbol     : Token_ID;
-      State      : State_Index;
-      Next       : Goto_Node_Ptr;
-   end record;
-   procedure Free is new Ada.Unchecked_Deallocation (Goto_Node, Goto_Node_Ptr);
-
-   type Action_List_Iterator is tagged record
-      Node : Action_Node_Ptr;
-      Item : Parse_Action_Node_Ptr;
-   end record;
-
 end WisiToken.Parse.LR;
diff --git a/packages/wisi/wisitoken-parse-packrat-generated.adb 
b/packages/wisi/wisitoken-parse-packrat-generated.adb
index 0c909e5..f5f4b16 100644
--- a/packages/wisi/wisitoken-parse-packrat-generated.adb
+++ b/packages/wisi/wisitoken-parse-packrat-generated.adb
@@ -35,13 +35,11 @@ package body WisiToken.Parse.Packrat.Generated is
       Parser.Base_Tree.Clear;
       Parser.Tree.Initialize (Parser.Base_Tree'Unchecked_Access, Flush => 
True);
       Parser.Lex_All;
-      Parser.Derivs.Set_First (Descriptor.First_Nonterminal);
-      Parser.Derivs.Set_Last (Descriptor.Last_Nonterminal);
+      Parser.Derivs.Set_First_Last (Descriptor.First_Nonterminal, 
Descriptor.Last_Nonterminal);
 
       for Nonterm in Descriptor.First_Nonterminal .. 
Parser.Trace.Descriptor.Last_Nonterminal loop
          Parser.Derivs (Nonterm).Clear;
-         Parser.Derivs (Nonterm).Set_First (Parser.Terminals.First_Index);
-         Parser.Derivs (Nonterm).Set_Last (Parser.Terminals.Last_Index);
+         Parser.Derivs (Nonterm).Set_First_Last (Parser.Terminals.First_Index, 
Parser.Terminals.Last_Index);
       end loop;
 
       for Token_Index in Parser.Terminals.First_Index .. 
Parser.Terminals.Last_Index loop
diff --git a/packages/wisi/wisitoken-parse-packrat-procedural.adb 
b/packages/wisi/wisitoken-parse-packrat-procedural.adb
index 1f00e48..97f71ff 100644
--- a/packages/wisi/wisitoken-parse-packrat-procedural.adb
+++ b/packages/wisi/wisitoken-parse-packrat-procedural.adb
@@ -224,15 +224,12 @@ package body WisiToken.Parse.Packrat.Procedural is
 
       for Nonterm in Descriptor.First_Nonterminal .. 
Parser.Trace.Descriptor.Last_Nonterminal loop
          Parser.Derivs (Nonterm).Clear;
-         Parser.Derivs (Nonterm).Set_First (Parser.Terminals.First_Index);
-
+         Parser.Derivs (Nonterm).Set_First_Last (Parser.Terminals.First_Index, 
Parser.Terminals.Last_Index + 1);
          --  There might be an empty nonterm after the last token
-         Parser.Derivs (Nonterm).Set_Last (Parser.Terminals.Last_Index + 1);
       end loop;
 
       for Token_Index in Parser.Terminals.First_Index .. 
Parser.Terminals.Last_Index loop
          Junk := Parser.Tree.Add_Terminal (Token_Index, Parser.Terminals);
-         --  FIXME: move this into Lex_All, delete Terminals, just use 
Syntax_Tree
       end loop;
 
       Result := Apply_Rule (Parser, Parser.Start_ID, 
Parser.Terminals.First_Index - 1);
diff --git a/packages/wisi/wisitoken-parse.adb 
b/packages/wisi/wisitoken-parse.adb
index 09280d9..ee7b1e8 100644
--- a/packages/wisi/wisitoken-parse.adb
+++ b/packages/wisi/wisitoken-parse.adb
@@ -38,12 +38,12 @@ package body WisiToken.Parse is
          if Token.Line /= Invalid_Line_Number then
             --  Some lexers don't support line numbers.
             if Parser.Lexer.First then
-               Parser.Line_Begin_Token.Set_Length (Ada.Containers.Count_Type 
(Token.Line));
+               Parser.Line_Begin_Token.Set_First_Last (Line_Number_Type'First, 
Token.Line);
                Parser.Line_Begin_Token (Token.Line) := 
Parser.Terminals.Last_Index +
                  (if Token.ID >= Parser.Trace.Descriptor.First_Terminal then 1 
else 0);
 
             elsif Token.ID = Parser.Trace.Descriptor.EOI_ID then
-               Parser.Line_Begin_Token.Set_Length (Ada.Containers.Count_Type 
(Token.Line + 1));
+               Parser.Line_Begin_Token.Set_First_Last (Line_Number_Type'First, 
Token.Line + 1);
                Parser.Line_Begin_Token (Token.Line + 1) := 
Parser.Terminals.Last_Index + 1;
             end if;
          end if;
diff --git a/packages/wisi/wisitoken-syntax_trees-lr_utils.adb 
b/packages/wisi/wisitoken-syntax_trees-lr_utils.adb
new file mode 100644
index 0000000..a456d82
--- /dev/null
+++ b/packages/wisi/wisitoken-syntax_trees-lr_utils.adb
@@ -0,0 +1,220 @@
+--  Abstract :
+--
+--  See spec.
+--
+--  Copyright (C) 2019 Stephen Leake All Rights Reserved.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+package body WisiToken.Syntax_Trees.LR_Utils is
+
+   procedure Raise_Programmer_Error
+     (Label      : in String;
+      Descriptor : in WisiToken.Descriptor;
+      Lexer      : in WisiToken.Lexer.Handle;
+      Tree       : in WisiToken.Syntax_Trees.Tree;
+      Terminals  : in WisiToken.Base_Token_Arrays.Vector;
+      Node       : in WisiToken.Syntax_Trees.Node_Index)
+   is
+      Terminal_Index : constant Base_Token_Index := Tree.Min_Terminal_Index 
(Node);
+   begin
+      raise SAL.Programmer_Error with Error_Message
+        (Lexer.File_Name,
+         (if Terminal_Index = Invalid_Token_Index then 1 else Terminals 
(Terminal_Index).Line), 0,
+         Label & Node'Image & ":" & Tree.Image (Node, Descriptor, 
Include_Children => True));
+   end Raise_Programmer_Error;
+
+   function Has_Element (Cursor : in LR_Utils.Cursor) return Boolean is 
(Cursor.Node /= Invalid_Node_Index);
+
+   function Node (Cursor : in LR_Utils.Cursor) return Node_Index is 
(Cursor.Node);
+
+   overriding function First (Iter : Iterator) return Cursor
+   is begin
+      return Result : Cursor do
+         Result.Node := Iter.Root;
+         loop
+            declare
+               Children : constant Valid_Node_Index_Array := 
Iter.Tree.Children (Result.Node);
+            begin
+               if Iter.Tree.ID (Children (1)) = Iter.List_ID then
+                  Result.Node := Children (1);
+               elsif Iter.Tree.ID (Children (1)) = Iter.Element_ID then
+                  Result.Node := Children (1);
+                  exit;
+               else
+                  Raise_Programmer_Error
+                    ("first_list_element", Iter.Descriptor.all, Iter.Lexer, 
Iter.Tree, Iter.Terminals.all, Result.Node);
+               end if;
+            end;
+         end loop;
+      end return;
+   end First;
+
+   overriding function Last  (Iter : Iterator) return Cursor
+   is
+      --  Tree is one of:
+      --
+      --  case a: single element list
+      --  element_list : root
+      --  | element: Last
+      --
+      --  case c: no next
+      --  element_list: root
+      --  | element_list
+      --  | | element:
+      --  | element: Last
+      Children : constant Valid_Node_Index_Array := Iter.Tree.Children 
(Iter.Root);
+   begin
+      return (Node => Children (Children'Last));
+   end Last;
+
+   overriding function Next (Iter : Iterator; Position : Cursor) return Cursor
+   is begin
+      if Position.Node = Invalid_Node_Index then
+         return Position;
+      else
+         return Result : Cursor do
+            declare
+               use all type SAL.Base_Peek_Type;
+               --  Tree is one of:
+               --
+               --  case a: first element, no next
+               --  rhs
+               --  | rhs_item_list
+               --  | | rhs_item: Element
+               --  | action
+               --
+               --  case b: first element, next
+               --  rhs_item_list
+               --  | rhs_item_list
+               --  | | rhs_item: Element
+               --  | rhs_item: next element
+               --
+               --  case c: non-first element, no next
+               --  rhs
+               --  | rhs_item_list : Grand_Parent
+               --  | | rhs_item_list
+               --  | | | rhs_item:
+               --  | | rhs_item: Element
+               --  | action : Aunt
+               --
+               --  case d: non-first element, next
+               --  rhs_item_list
+               --  | rhs_item_list : Grand_Parent
+               --  | | rhs_item_list
+               --  | | | rhs_item:
+               --  | | rhs_item: Element
+               --  | rhs_item: next element : Aunt
+
+               Grand_Parent    : constant Valid_Node_Index       := 
Iter.Tree.Parent (Position.Node, 2);
+               Aunts           : constant Valid_Node_Index_Array := 
Iter.Tree.Children (Grand_Parent);
+               Last_List_Child : SAL.Base_Peek_Type              := 
Aunts'First - 1;
+            begin
+               if Iter.Tree.ID (Grand_Parent) /= Iter.List_ID then
+                  --  No next
+                  Result.Node := Invalid_Node_Index;
+               else
+                  for I in Aunts'Range loop
+                     if Iter.Tree.ID (Aunts (I)) in Iter.List_ID | 
Iter.Element_ID then
+                        Last_List_Child := I;
+                     end if;
+                  end loop;
+
+                  if Last_List_Child = 1 then
+                     --  No next
+                     Result.Node := Invalid_Node_Index;
+                  else
+                     Result.Node := Aunts (Last_List_Child);
+                  end if;
+               end if;
+            end;
+         end return;
+      end if;
+   end Next;
+
+   overriding function Previous (Iter   : Iterator; Position : Cursor) return 
Cursor
+   is begin
+      if Position.Node = Invalid_Node_Index then
+         return Position;
+      else
+         return Result : Cursor do
+            --  Tree is one of:
+            --
+            --  case a: first element, no prev
+            --  ?
+            --  | rhs_item_list
+            --  | | rhs_item: Element
+            --
+            --  case b: second element
+            --  ?
+            --  | rhs_item_list
+            --  | | rhs_item: prev item
+            --  | rhs_item: Element
+            --
+            --  case c: nth element
+            --  ?
+            --  | rhs_item_list
+            --  | | rhs_item_list
+            --  | | | rhs_item:
+            --  | | rhs_item: prev element
+            --  | rhs_item: Element
+            declare
+               Parent : constant Valid_Node_Index := Iter.Tree.Parent 
(Position.Node);
+            begin
+               if Position.Node = Iter.Tree.Child (Parent, 1) then
+                  --  No prev
+                  Result.Node := Invalid_Node_Index;
+
+               else
+                  declare
+                     Prev_Children : constant Valid_Node_Index_Array := 
Iter.Tree.Children
+                       (Iter.Tree.Child (Parent, 1));
+                  begin
+                     Result.Node := Prev_Children (Prev_Children'Last);
+                  end;
+               end if;
+            end;
+         end return;
+      end if;
+   end Previous;
+
+   function Iterate
+     (Tree         : in WisiToken.Syntax_Trees.Tree;
+      Terminals    : in WisiToken.Base_Token_Array_Access;
+      Lexer        : in WisiToken.Lexer.Handle;
+      Descriptor   : in WisiToken.Descriptor_Access_Constant;
+      Root         : in Valid_Node_Index;
+      Element_ID   : in WisiToken.Token_ID;
+      Separator_ID : in WisiToken.Token_ID := WisiToken.Invalid_Token_ID)
+     return Iterator_Interfaces.Reversible_Iterator'Class
+   is begin
+      return Iterator'
+        (Iterator_Interfaces.Reversible_Iterator with
+         Tree, Terminals, Lexer, Descriptor, Root,
+         List_ID      => Tree.ID (Root),
+         Element_ID   => Element_ID,
+         Separator_ID => Separator_ID);
+   end Iterate;
+
+   function Count (Iter : Iterator) return Ada.Containers.Count_Type
+   is
+      use Ada.Containers;
+      Result : Count_Type := 0;
+   begin
+      for Item in Iter loop
+         Result := Result + 1;
+      end loop;
+      return Result;
+   end Count;
+
+end WisiToken.Syntax_Trees.LR_Utils;
diff --git a/packages/wisi/wisitoken-syntax_trees-lr_utils.ads 
b/packages/wisi/wisitoken-syntax_trees-lr_utils.ads
new file mode 100644
index 0000000..9033f49
--- /dev/null
+++ b/packages/wisi/wisitoken-syntax_trees-lr_utils.ads
@@ -0,0 +1,88 @@
+--  Abstract :
+--
+--  Utilities for navigating syntax trees produced by an LR parser.
+--
+--  Copyright (C) 2019 Stephen Leake All Rights Reserved.
+--
+--  This library is free software;  you can redistribute it and/or modify it
+--  under terms of the  GNU General Public License  as published by the Free
+--  Software  Foundation;  either version 3,  or (at your  option) any later
+--  version. This library is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN-
+--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+--  As a special exception under Section 7 of GPL version 3, you are granted
+--  additional permissions described in the GCC Runtime Library Exception,
+--  version 3.1, as published by the Free Software Foundation.
+
+pragma License (Modified_GPL);
+
+with Ada.Iterator_Interfaces;
+package WisiToken.Syntax_Trees.LR_Utils is
+
+   procedure Raise_Programmer_Error
+     (Label      : in String;
+      Descriptor : in WisiToken.Descriptor;
+      Lexer      : in WisiToken.Lexer.Handle;
+      Tree       : in WisiToken.Syntax_Trees.Tree;
+      Terminals  : in WisiToken.Base_Token_Arrays.Vector;
+      Node       : in WisiToken.Syntax_Trees.Node_Index);
+   pragma No_Return (Raise_Programmer_Error);
+
+   ----------
+   --  List functions
+   --
+   --  A list has one of the following grammar forms:
+   --
+   --  list : list element | element ;
+   --  list : element | list element ;
+   --
+   --  list : list separator element | element ;
+   --  list : element | list separator element ;
+
+   type Cursor is private;
+   function Has_Element (Cursor : in LR_Utils.Cursor) return Boolean;
+
+   function Node (Cursor : in LR_Utils.Cursor) return Node_Index;
+
+   package Iterator_Interfaces is new Ada.Iterator_Interfaces (Cursor, 
Has_Element);
+
+   type Iterator is new Iterator_Interfaces.Reversible_Iterator with private;
+
+   overriding function First (Iter : Iterator) return Cursor;
+   overriding function Last  (Iter : Iterator) return Cursor;
+
+   overriding function Next (Iter : Iterator; Position : Cursor) return Cursor;
+
+   overriding function Previous (Iter : Iterator; Position : Cursor) return 
Cursor;
+
+   function Iterate
+     (Tree         : in WisiToken.Syntax_Trees.Tree;
+      Terminals    : in WisiToken.Base_Token_Array_Access;
+      Lexer        : in WisiToken.Lexer.Handle;
+      Descriptor   : in WisiToken.Descriptor_Access_Constant;
+      Root         : in Valid_Node_Index;
+      Element_ID   : in WisiToken.Token_ID;
+      Separator_ID : in WisiToken.Token_ID := WisiToken.Invalid_Token_ID)
+     return Iterator_Interfaces.Reversible_Iterator'Class;
+
+   function Count (Iter : Iterator) return Ada.Containers.Count_Type;
+
+private
+
+   type Cursor is record
+      Node : Node_Index;
+   end record;
+
+   type Iterator is new Iterator_Interfaces.Reversible_Iterator with record
+      Tree         : WisiToken.Syntax_Trees.Tree;
+      Terminals    : WisiToken.Base_Token_Array_Access;
+      Lexer        : WisiToken.Lexer.Handle;
+      Descriptor   : WisiToken.Descriptor_Access_Constant;
+      Root         : Valid_Node_Index;
+      List_ID      : WisiToken.Token_ID;
+      Element_ID   : WisiToken.Token_ID;
+      Separator_ID : WisiToken.Token_ID;
+   end record;
+
+end WisiToken.Syntax_Trees.LR_Utils;
diff --git a/packages/wisi/wisitoken-syntax_trees.adb 
b/packages/wisi/wisitoken-syntax_trees.adb
index e8ac152..abcc4d8 100644
--- a/packages/wisi/wisitoken-syntax_trees.adb
+++ b/packages/wisi/wisitoken-syntax_trees.adb
@@ -229,7 +229,10 @@ package body WisiToken.Syntax_Trees is
    is
       function Compute (N : in Syntax_Trees.Node) return Node_Index
       is begin
-         if Child_Index in N.Children.First_Index .. N.Children.Last_Index then
+         if N.Label /= Nonterm then
+            return Invalid_Node_Index;
+
+         elsif Child_Index in N.Children.First_Index .. N.Children.Last_Index 
then
             return N.Children (Child_Index);
          else
             return Invalid_Node_Index;
@@ -244,9 +247,7 @@ package body WisiToken.Syntax_Trees is
    end Child;
 
    function Children (N : in Syntax_Trees.Node) return Valid_Node_Index_Array
-   is
-      use all type Ada.Containers.Count_Type;
-   begin
+   is begin
       if N.Children.Length = 0 then
          return (1 .. 0 => <>);
       else
@@ -355,7 +356,7 @@ package body WisiToken.Syntax_Trees is
                      end loop;
 
                      if Last_Index = SAL.Base_Peek_Type'Last then
-                        New_Children.Set_Length (Children'Length);
+                        New_Children.Set_First_Last (Children'First, 
Children'Last);
                         for I in Children'Range loop
                            New_Children (I) := Copy_Node (Tree, Children (I), 
Parent);
                         end loop;
@@ -488,6 +489,7 @@ package body WisiToken.Syntax_Trees is
          end if;
          Tree.Branched_Nodes.Finalize;
          Tree.Last_Shared_Node := Invalid_Node_Index;
+         Tree.Shared_Tree := null;
       end if;
    end Finalize;
 
@@ -592,7 +594,31 @@ package body WisiToken.Syntax_Trees is
          end if;
       end Process;
 
-      Junk : constant Boolean := Process_Tree (Tree, Node, After, 
Process'Access);
+      Junk : constant Boolean := Process_Tree (Tree, Node, Before, 
Process'Access);
+      pragma Unreferenced (Junk);
+   begin
+      return Found;
+   end Find_Descendant;
+
+   function Find_Descendant
+     (Tree      : in     Syntax_Trees.Tree;
+      Node      : in     Valid_Node_Index;
+      Predicate : access function (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean)
+     return Node_Index
+   is
+      Found : Node_Index := Invalid_Node_Index;
+
+      function Process (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean
+      is begin
+         if Predicate (Tree, Node) then
+            Found := Node;
+            return False;
+         else
+            return True;
+         end if;
+      end Process;
+
+      Junk : constant Boolean := Process_Tree (Tree, Node, Before, 
Process'Access);
       pragma Unreferenced (Junk);
    begin
       return Found;
@@ -871,16 +897,12 @@ package body WisiToken.Syntax_Trees is
    end First_Terminal_ID;
 
    function Has_Branched_Nodes (Tree : in Syntax_Trees.Tree) return Boolean
-   is
-      use all type Ada.Containers.Count_Type;
-   begin
+   is begin
       return Tree.Branched_Nodes.Length > 0;
    end Has_Branched_Nodes;
 
    function Has_Children (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean
-   is
-      use all type Ada.Containers.Count_Type;
-   begin
+   is begin
       if Node <= Tree.Last_Shared_Node then
          return Tree.Shared_Tree.Nodes (Node).Children.Length > 0;
       else
@@ -1438,7 +1460,7 @@ package body WisiToken.Syntax_Trees is
 
       Min_Terminal_Index_Set : Boolean := False;
    begin
-      N.Children.Set_Length (Children'Length);
+      N.Children.Set_First_Last (Children'First, Children'Last);
       for I in Children'Range loop
          N.Children (J) := Children (I);
          declare
@@ -1516,7 +1538,7 @@ package body WisiToken.Syntax_Trees is
       Parent_Node.RHS_Index := New_ID.RHS;
       Parent_Node.Action    := null;
 
-      Parent_Node.Children.Set_Length (Children'Length);
+      Parent_Node.Children.Set_First_Last (Children'First, Children'Last);
       for I in Children'Range loop
          --  We don't update Min/Max_terminal_index; we assume Set_Children is
          --  only called after parsing is done, so they are no longer needed.
@@ -1544,8 +1566,10 @@ package body WisiToken.Syntax_Trees is
 
    procedure Set_Flush_False (Tree : in out Syntax_Trees.Tree)
    is begin
-      Tree.Flush := False;
-      Tree.Branched_Nodes.Set_First (Tree.Last_Shared_Node + 1);
+      if Tree.Flush then
+         Tree.Flush := False;
+         Tree.Branched_Nodes.Set_First_Last (Tree.Last_Shared_Node + 1, 
Tree.Last_Shared_Node);
+      end if;
    end Set_Flush_False;
 
    procedure Set_Name_Region
diff --git a/packages/wisi/wisitoken-syntax_trees.ads 
b/packages/wisi/wisitoken-syntax_trees.ads
index dcca9b4..85fd2c5 100644
--- a/packages/wisi/wisitoken-syntax_trees.ads
+++ b/packages/wisi/wisitoken-syntax_trees.ads
@@ -205,7 +205,7 @@ package WisiToken.Syntax_Trees is
    procedure Set_Children
      (Tree     : in out Syntax_Trees.Tree;
       Node     : in     Valid_Node_Index;
-      New_ID : in WisiToken.Production_ID;
+      New_ID   : in     WisiToken.Production_ID;
       Children : in     Valid_Node_Index_Array)
    with
      Pre => Tree.Flushed and
@@ -370,6 +370,14 @@ package WisiToken.Syntax_Trees is
    --  Return the descendant of Node (may be Node) whose ID is ID, or
    --  Invalid_Node_Index if none match.
 
+   function Find_Descendant
+     (Tree      : in     Syntax_Trees.Tree;
+      Node      : in     Valid_Node_Index;
+      Predicate : access function (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean)
+     return Node_Index;
+   --  Return the descendant of Node (may be Node) for which Predicate
+   --  returns True, or Invalid_Node_Index if none do.
+
    function Find_Min_Terminal_Index
      (Tree  : in Syntax_Trees.Tree;
       Index : in Token_Index)
@@ -467,6 +475,7 @@ package WisiToken.Syntax_Trees is
    --  Text_IO.Current_Output, for debugging.
 
 private
+   use all type Ada.Containers.Count_Type;
 
    type Node (Label : Node_Label := Virtual_Terminal) is
    --  Label has a default to allow changing the label during tree editing.
@@ -562,6 +571,12 @@ private
 
       Root : Node_Index := Invalid_Node_Index;
    end record with
-     Type_Invariant => (if Tree.Flush then not Tree.Has_Branched_Nodes);
+     Type_Invariant =>
+       (Shared_Tree = null or else
+        (if Tree.Flush
+         then Last_Shared_Node = Shared_Tree.Nodes.Last_Index and
+            Branched_Nodes.Length = 0
+         else Last_Shared_Node <= Shared_Tree.Nodes.Last_Index and
+            Last_Shared_Node < Branched_Nodes.First_Index));
 
 end WisiToken.Syntax_Trees;
diff --git a/packages/wisi/wisitoken-wisi_ada.adb 
b/packages/wisi/wisitoken-wisi_ada.adb
index 4a098c8..34dad7c 100644
--- a/packages/wisi/wisitoken-wisi_ada.adb
+++ b/packages/wisi/wisitoken-wisi_ada.adb
@@ -2,7 +2,7 @@
 --
 --  see spec
 --
---  Copyright (C) 2013, 2014, 2015, 2017, 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2013, 2014, 2015, 2017 - 2019 Free Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -85,8 +85,7 @@ package body WisiToken.Wisi_Ada is
    function Only (Subject : in Instance) return Prod_Arrays.Vector
    is begin
       return Result : Prod_Arrays.Vector do
-         Result.Set_First (Subject.LHS);
-         Result.Set_Last (Subject.LHS);
+         Result.Set_First_Last (Subject.LHS, Subject.LHS);
          Result (Subject.LHS) := Subject;
       end return;
    end Only;
@@ -96,7 +95,7 @@ package body WisiToken.Wisi_Ada is
       Index : Integer := Left.RHSs.Last_Index + 1;
    begin
       return Result : Instance := Left do
-         Result.RHSs.Set_Last (Left.RHSs.Last_Index + Integer 
(Right.RHSs.Length));
+         Result.RHSs.Set_First_Last (Result.RHSs.First_Index, 
Left.RHSs.Last_Index + Integer (Right.RHSs.Length));
          for RHS of Right.RHSs loop
             Result.RHSs (Index) := RHS;
             Index := Index + 1;
@@ -107,8 +106,7 @@ package body WisiToken.Wisi_Ada is
    function "and" (Left : in Instance; Right : in Instance) return 
Prod_Arrays.Vector
    is begin
       return Result : Prod_Arrays.Vector do
-         Result.Set_First (Token_ID'Min (Left.LHS, Right.LHS));
-         Result.Set_Last (Token_ID'Max (Left.LHS, Right.LHS));
+         Result.Set_First_Last (Token_ID'Min (Left.LHS, Right.LHS), 
Token_ID'Max (Left.LHS, Right.LHS));
          if Left.LHS = Right.LHS then
             Result (Left.LHS) := Merge (Left, Right);
          else
@@ -122,9 +120,9 @@ package body WisiToken.Wisi_Ada is
    is begin
       return Result : Prod_Arrays.Vector := Left do
          if Right.LHS < Result.First_Index then
-            Result.Set_First (Right.LHS);
+            Result.Set_First_Last (Right.LHS, Result.Last_Index);
          elsif Right.LHS > Result.Last_Index then
-            Result.Set_Last (Right.LHS);
+            Result.Set_First_Last (Result.First_Index, Right.LHS);
          end if;
 
          if Result (Right.LHS).LHS = Invalid_Token_ID then
@@ -139,14 +137,14 @@ package body WisiToken.Wisi_Ada is
    is begin
       return Result : Prod_Arrays.Vector := Left do
          if Right.First_Index < Result.First_Index then
-            Result.Set_First (Right.First_Index);
+            Result.Set_First_Last (Right.First_Index, Result.Last_Index);
          elsif Right.First_Index > Result.Last_Index then
-            Result.Set_Last (Right.First_Index);
+            Result.Set_First_Last (Result.First_Index, Right.First_Index);
          end if;
          if Right.Last_Index < Result.First_Index then
-            Result.Set_First (Right.Last_Index);
+            Result.Set_First_Last (Right.Last_Index, Result.Last_Index);
          elsif Right.Last_Index > Result.Last_Index then
-            Result.Set_Last (Right.Last_Index);
+            Result.Set_First_Last (Result.First_Index, Right.Last_Index);
          end if;
 
          for P of Right loop
diff --git a/packages/wisi/wisitoken.ads b/packages/wisi/wisitoken.ads
index d4652b8..891fb26 100644
--- a/packages/wisi/wisitoken.ads
+++ b/packages/wisi/wisitoken.ads
@@ -310,6 +310,7 @@ package WisiToken is
    end record;
 
    type Base_Token_Class_Access is access all Base_Token'Class;
+   type Base_Token_Class_Access_Constant is access constant Base_Token'Class;
 
    function Image
      (Item       : in Base_Token;
@@ -352,10 +353,11 @@ package WisiToken is
 
    type Recover_Token is record
       --  Maintaining a syntax tree during recover is too slow, so we store
-      --  enough information in the recover stack to perform semantic_checks
-      --  and to apply the solution to the main parser state. We make
-      --  thousands of copies of the parse stack during recover, so
-      --  minimizing size is critical.
+      --  enough information in the recover stack to perform
+      --  Semantic_Checks, Language_Fixes, and Push_Back operations. and to
+      --  apply the solution to the main parser state. We make thousands of
+      --  copies of the parse stack during recover, so minimizing size and
+      --  compute time for this is critical.
       ID : Token_ID := Invalid_Token_ID;
 
       Byte_Region : Buffer_Region := Null_Buffer_Region;
@@ -372,8 +374,7 @@ package WisiToken is
 
       Virtual : Boolean := True;
       --  For terminals, True if inserted by recover. For nonterminals, True
-      --  if any contained token has Virtual = True. Used by Semantic_Checks
-      --  and push_back.
+      --  if any contained token has Virtual = True.
    end record;
 
    function Image
diff --git a/packages/wisi/wisitoken_grammar_main.adb 
b/packages/wisi/wisitoken_grammar_main.adb
index 7a2bb22..981e60c 100644
--- a/packages/wisi/wisitoken_grammar_main.adb
+++ b/packages/wisi/wisitoken_grammar_main.adb
@@ -49,13 +49,15 @@ package body Wisitoken_Grammar_Main is
       declare
          procedure Subr_1
          is begin
+            Table.States (0).Action_List.Set_Capacity (2);
             Add_Action (Table.States (0), 23, 1);
             Add_Action (Table.States (0), 33, 2);
-            Add_Error (Table.States (0));
+            Table.States (0).Goto_List.Set_Capacity (4);
             Add_Goto (Table.States (0), 38, 3);
             Add_Goto (Table.States (0), 43, 4);
             Add_Goto (Table.States (0), 55, 5);
             Add_Goto (Table.States (0), 56, 6);
+            Table.States (1).Action_List.Set_Capacity (7);
             Add_Action (Table.States (1), 3, 7);
             Add_Action (Table.States (1), 4, 8);
             Add_Action (Table.States (1), 5, 9);
@@ -63,33 +65,40 @@ package body Wisitoken_Grammar_Main is
             Add_Action (Table.States (1), 7, 11);
             Add_Action (Table.States (1), 8, 12);
             Add_Action (Table.States (1), 33, 13);
-            Add_Error (Table.States (1));
+            Table.States (1).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (1), 39, 14);
+            Table.States (2).Action_List.Set_Capacity (2);
             Add_Action (Table.States (2), 13, 15);
             Add_Action (Table.States (2), 14, 16);
-            Add_Error (Table.States (2));
+            Table.States (3).Action_List.Set_Capacity (3);
             Add_Action (Table.States (3), (23, 33, 36), (55, 0), 1, null, 
null);
+            Table.States (4).Action_List.Set_Capacity (3);
             Add_Action (Table.States (4), (23, 33, 36), (55, 1), 1, null, 
null);
+            Table.States (5).Action_List.Set_Capacity (3);
             Add_Action (Table.States (5), (23, 33, 36), (56, 0), 1, null, 
null);
+            Table.States (6).Action_List.Set_Capacity (3);
             Add_Action (Table.States (6), 23, 1);
             Add_Action (Table.States (6), 33, 2);
             Add_Action (Table.States (6), 36, Accept_It, (37, 0), 1, null, 
null);
-            Add_Error (Table.States (6));
+            Table.States (6).Goto_List.Set_Capacity (3);
             Add_Goto (Table.States (6), 38, 3);
             Add_Goto (Table.States (6), 43, 4);
             Add_Goto (Table.States (6), 55, 17);
+            Table.States (7).Action_List.Set_Capacity (1);
             Add_Action (Table.States (7), 33, 18);
-            Add_Error (Table.States (7));
+            Table.States (7).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (7), 40, 19);
+            Table.States (8).Action_List.Set_Capacity (1);
             Add_Action (Table.States (8), 5, 20);
-            Add_Error (Table.States (8));
+            Table.States (9).Action_List.Set_Capacity (1);
             Add_Action (Table.States (9), 33, 21);
-            Add_Error (Table.States (9));
+            Table.States (10).Action_List.Set_Capacity (1);
             Add_Action (Table.States (10), (1 =>  33), (39, 0), 1, null, null);
+            Table.States (11).Action_List.Set_Capacity (1);
             Add_Action (Table.States (11), 21, 22);
-            Add_Error (Table.States (11));
+            Table.States (12).Action_List.Set_Capacity (1);
             Add_Action (Table.States (12), 21, 23);
-            Add_Error (Table.States (12));
+            Table.States (13).Action_List.Set_Capacity (13);
             Add_Action (Table.States (13), 8, 24);
             Add_Action (Table.States (13), 10, 25);
             Add_Action (Table.States (13), 15, 26);
@@ -104,11 +113,12 @@ package body Wisitoken_Grammar_Main is
             Add_Action (Table.States (13), 34, 33);
             Add_Action (Table.States (13), 35, 34);
             Add_Action (Table.States (13), 36, Reduce, (38, 3), 2, 
declaration_3'Access, null);
-            Add_Error (Table.States (13));
+            Table.States (13).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (13), 41, 35);
             Add_Goto (Table.States (13), 42, 36);
+            Table.States (14).Action_List.Set_Capacity (1);
             Add_Action (Table.States (14), 33, 37);
-            Add_Error (Table.States (14));
+            Table.States (15).Action_List.Set_Capacity (10);
             Add_Action (Table.States (15), 12, Reduce, (46, 0), 0, null, null);
             Add_Action (Table.States (15), 18, 38);
             Add_Action (Table.States (15), 19, 39);
@@ -120,7 +130,7 @@ package body Wisitoken_Grammar_Main is
             Add_Conflict (Table.States (15), 33, (46, 0), 0, null, null);
             Add_Action (Table.States (15), 35, 43);
             Add_Action (Table.States (15), 36, Reduce, (46, 0), 0, null, null);
-            Add_Error (Table.States (15));
+            Table.States (15).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (15), 45, 44);
             Add_Goto (Table.States (15), 46, 45);
             Add_Goto (Table.States (15), 47, 46);
@@ -130,6 +140,7 @@ package body Wisitoken_Grammar_Main is
             Add_Goto (Table.States (15), 51, 50);
             Add_Goto (Table.States (15), 52, 51);
             Add_Goto (Table.States (15), 53, 52);
+            Table.States (16).Action_List.Set_Capacity (10);
             Add_Action (Table.States (16), 12, Reduce, (46, 0), 0, null, null);
             Add_Action (Table.States (16), 18, 38);
             Add_Action (Table.States (16), 19, 39);
@@ -141,7 +152,7 @@ package body Wisitoken_Grammar_Main is
             Add_Conflict (Table.States (16), 33, (46, 0), 0, null, null);
             Add_Action (Table.States (16), 35, 43);
             Add_Action (Table.States (16), 36, Reduce, (46, 0), 0, null, null);
-            Add_Error (Table.States (16));
+            Table.States (16).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (16), 45, 53);
             Add_Goto (Table.States (16), 46, 45);
             Add_Goto (Table.States (16), 47, 46);
@@ -151,40 +162,55 @@ package body Wisitoken_Grammar_Main is
             Add_Goto (Table.States (16), 51, 50);
             Add_Goto (Table.States (16), 52, 51);
             Add_Goto (Table.States (16), 53, 52);
+            Table.States (17).Action_List.Set_Capacity (3);
             Add_Action (Table.States (17), (23, 33, 36), (56, 1), 2, null, 
null);
+            Table.States (18).Action_List.Set_Capacity (2);
             Add_Action (Table.States (18), (9, 33), (40, 0), 1, null, null);
+            Table.States (19).Action_List.Set_Capacity (2);
             Add_Action (Table.States (19), 9, 54);
             Add_Action (Table.States (19), 33, 55);
-            Add_Error (Table.States (19));
+            Table.States (20).Action_List.Set_Capacity (3);
             Add_Action (Table.States (20), (23, 33, 36), (38, 5), 3, 
declaration_5'Access, null);
+            Table.States (21).Action_List.Set_Capacity (1);
             Add_Action (Table.States (21), 16, 56);
-            Add_Error (Table.States (21));
+            Table.States (22).Action_List.Set_Capacity (1);
             Add_Action (Table.States (22), 33, 57);
-            Add_Error (Table.States (22));
+            Table.States (23).Action_List.Set_Capacity (1);
             Add_Action (Table.States (23), 33, 58);
-            Add_Error (Table.States (23));
+            Table.States (24).Action_List.Set_Capacity (13);
             Add_Action (Table.States (24), (8, 10, 15, 16, 20, 23, 28, 30, 32, 
33, 34, 35, 36), (42, 10), 1, null,
             null);
+            Table.States (25).Action_List.Set_Capacity (13);
             Add_Action (Table.States (25), (8, 10, 15, 16, 20, 23, 28, 30, 32, 
33, 34, 35, 36), (42, 5), 1, null,
             null);
+            Table.States (26).Action_List.Set_Capacity (13);
             Add_Action (Table.States (26), (8, 10, 15, 16, 20, 23, 28, 30, 32, 
33, 34, 35, 36), (42, 0), 1, null,
             null);
+            Table.States (27).Action_List.Set_Capacity (13);
             Add_Action (Table.States (27), (8, 10, 15, 16, 20, 23, 28, 30, 32, 
33, 34, 35, 36), (42, 2), 1, null,
             null);
+            Table.States (28).Action_List.Set_Capacity (13);
             Add_Action (Table.States (28), (8, 10, 15, 16, 20, 23, 28, 30, 32, 
33, 34, 35, 36), (42, 3), 1, null,
             null);
+            Table.States (29).Action_List.Set_Capacity (13);
             Add_Action (Table.States (29), (8, 10, 15, 16, 20, 23, 28, 30, 32, 
33, 34, 35, 36), (42, 6), 1, null,
             null);
+            Table.States (30).Action_List.Set_Capacity (13);
             Add_Action (Table.States (30), (8, 10, 15, 16, 20, 23, 28, 30, 32, 
33, 34, 35, 36), (42, 7), 1, null,
             null);
+            Table.States (31).Action_List.Set_Capacity (13);
             Add_Action (Table.States (31), (8, 10, 15, 16, 20, 23, 28, 30, 32, 
33, 34, 35, 36), (42, 4), 1, null,
             null);
+            Table.States (32).Action_List.Set_Capacity (13);
             Add_Action (Table.States (32), (8, 10, 15, 16, 20, 23, 28, 30, 32, 
33, 34, 35, 36), (42, 1), 1, null,
             null);
+            Table.States (33).Action_List.Set_Capacity (13);
             Add_Action (Table.States (33), (8, 10, 15, 16, 20, 23, 28, 30, 32, 
33, 34, 35, 36), (42, 8), 1, null,
             null);
+            Table.States (34).Action_List.Set_Capacity (13);
             Add_Action (Table.States (34), (8, 10, 15, 16, 20, 23, 28, 30, 32, 
33, 34, 35, 36), (42, 9), 1, null,
             null);
+            Table.States (35).Action_List.Set_Capacity (13);
             Add_Action (Table.States (35), 8, 24);
             Add_Action (Table.States (35), 10, 25);
             Add_Action (Table.States (35), 15, 26);
@@ -199,10 +225,12 @@ package body Wisitoken_Grammar_Main is
             Add_Action (Table.States (35), 34, 33);
             Add_Action (Table.States (35), 35, 34);
             Add_Action (Table.States (35), 36, Reduce, (38, 2), 3, 
declaration_2'Access, null);
-            Add_Error (Table.States (35));
+            Table.States (35).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (35), 42, 59);
+            Table.States (36).Action_List.Set_Capacity (13);
             Add_Action (Table.States (36), (8, 10, 15, 16, 20, 23, 28, 30, 32, 
33, 34, 35, 36), (41, 0), 1, null,
             null);
+            Table.States (37).Action_List.Set_Capacity (11);
             Add_Action (Table.States (37), 8, 24);
             Add_Action (Table.States (37), 10, 25);
             Add_Action (Table.States (37), 15, 26);
@@ -214,16 +242,17 @@ package body Wisitoken_Grammar_Main is
             Add_Action (Table.States (37), 33, 32);
             Add_Action (Table.States (37), 34, 33);
             Add_Action (Table.States (37), 35, 34);
-            Add_Error (Table.States (37));
+            Table.States (37).Goto_List.Set_Capacity (2);
             Add_Goto (Table.States (37), 41, 60);
             Add_Goto (Table.States (37), 42, 36);
+            Table.States (38).Action_List.Set_Capacity (6);
             Add_Action (Table.States (38), 18, 38);
             Add_Action (Table.States (38), 19, 39);
             Add_Action (Table.States (38), 20, 40);
             Add_Action (Table.States (38), 21, 41);
             Add_Action (Table.States (38), 33, 42);
             Add_Action (Table.States (38), 35, 43);
-            Add_Error (Table.States (38));
+            Table.States (38).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (38), 47, 46);
             Add_Goto (Table.States (38), 48, 47);
             Add_Goto (Table.States (38), 49, 61);
@@ -232,13 +261,14 @@ package body Wisitoken_Grammar_Main is
             Add_Goto (Table.States (38), 52, 51);
             Add_Goto (Table.States (38), 53, 52);
             Add_Goto (Table.States (38), 54, 62);
+            Table.States (39).Action_List.Set_Capacity (6);
             Add_Action (Table.States (39), 18, 38);
             Add_Action (Table.States (39), 19, 39);
             Add_Action (Table.States (39), 20, 40);
             Add_Action (Table.States (39), 21, 41);
             Add_Action (Table.States (39), 33, 42);
             Add_Action (Table.States (39), 35, 43);
-            Add_Error (Table.States (39));
+            Table.States (39).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (39), 47, 46);
             Add_Goto (Table.States (39), 48, 47);
             Add_Goto (Table.States (39), 49, 61);
@@ -247,13 +277,14 @@ package body Wisitoken_Grammar_Main is
             Add_Goto (Table.States (39), 52, 51);
             Add_Goto (Table.States (39), 53, 52);
             Add_Goto (Table.States (39), 54, 63);
+            Table.States (40).Action_List.Set_Capacity (6);
             Add_Action (Table.States (40), 18, 38);
             Add_Action (Table.States (40), 19, 39);
             Add_Action (Table.States (40), 20, 40);
             Add_Action (Table.States (40), 21, 41);
             Add_Action (Table.States (40), 33, 42);
             Add_Action (Table.States (40), 35, 43);
-            Add_Error (Table.States (40));
+            Table.States (40).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (40), 47, 46);
             Add_Goto (Table.States (40), 48, 47);
             Add_Goto (Table.States (40), 49, 61);
@@ -262,8 +293,9 @@ package body Wisitoken_Grammar_Main is
             Add_Goto (Table.States (40), 52, 51);
             Add_Goto (Table.States (40), 53, 52);
             Add_Goto (Table.States (40), 54, 64);
+            Table.States (41).Action_List.Set_Capacity (1);
             Add_Action (Table.States (41), 33, 65);
-            Add_Error (Table.States (41));
+            Table.States (42).Action_List.Set_Capacity (18);
             Add_Action (Table.States (42), 11, Reduce, (50, 0), 1, null, null);
             Add_Action (Table.States (42), 12, Reduce, (50, 0), 1, null, null);
             Add_Action (Table.States (42), 16, 66);
@@ -282,7 +314,7 @@ package body Wisitoken_Grammar_Main is
             Add_Action (Table.States (42), 33, Reduce, (50, 0), 1, null, null);
             Add_Action (Table.States (42), 35, Reduce, (50, 0), 1, null, null);
             Add_Action (Table.States (42), 36, Reduce, (50, 0), 1, null, null);
-            Add_Error (Table.States (42));
+            Table.States (43).Action_List.Set_Capacity (15);
             Add_Action (Table.States (43), 11, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
             Add_Action (Table.States (43), 12, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
             Add_Action (Table.States (43), 18, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
@@ -298,20 +330,24 @@ package body Wisitoken_Grammar_Main is
             Add_Action (Table.States (43), 33, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
             Add_Action (Table.States (43), 35, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
             Add_Action (Table.States (43), 36, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
-            Add_Error (Table.States (43));
+            Table.States (44).Action_List.Set_Capacity (5);
             Add_Action (Table.States (44), 12, 71);
             Add_Action (Table.States (44), 23, 72);
             Add_Conflict (Table.States (44), 23, (44, 1), 0, null, null);
             Add_Action (Table.States (44), 29, 73);
             Add_Action (Table.States (44), 33, Reduce, (44, 1), 0, null, null);
             Add_Action (Table.States (44), 36, Reduce, (44, 1), 0, null, null);
-            Add_Error (Table.States (44));
+            Table.States (44).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (44), 44, 74);
+            Table.States (45).Action_List.Set_Capacity (5);
             Add_Action (Table.States (45), (12, 23, 29, 33, 36), (45, 0), 1, 
null, null);
+            Table.States (46).Action_List.Set_Capacity (14);
             Add_Action (Table.States (46), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (50, 2), 1,
             rhs_item_2'Access, null);
+            Table.States (47).Action_List.Set_Capacity (14);
             Add_Action (Table.States (47), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (49, 0), 1, null,
             null);
+            Table.States (48).Action_List.Set_Capacity (11);
             Add_Action (Table.States (48), 11, 75);
             Add_Action (Table.States (48), 12, Reduce, (46, 1), 1, null, null);
             Add_Action (Table.States (48), 18, 38);
@@ -324,39 +360,48 @@ package body Wisitoken_Grammar_Main is
             Add_Conflict (Table.States (48), 33, (46, 1), 1, null, null);
             Add_Action (Table.States (48), 35, 43);
             Add_Action (Table.States (48), 36, Reduce, (46, 1), 1, null, null);
-            Add_Error (Table.States (48));
+            Table.States (48).Goto_List.Set_Capacity (6);
             Add_Goto (Table.States (48), 47, 46);
             Add_Goto (Table.States (48), 48, 76);
             Add_Goto (Table.States (48), 50, 49);
             Add_Goto (Table.States (48), 51, 50);
             Add_Goto (Table.States (48), 52, 51);
             Add_Goto (Table.States (48), 53, 52);
+            Table.States (49).Action_List.Set_Capacity (14);
             Add_Action (Table.States (49), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (48, 0), 1, null,
             null);
+            Table.States (50).Action_List.Set_Capacity (14);
             Add_Action (Table.States (50), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (50, 5), 1,
             rhs_item_5'Access, null);
+            Table.States (51).Action_List.Set_Capacity (14);
             Add_Action (Table.States (51), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (50, 3), 1,
             rhs_item_3'Access, null);
+            Table.States (52).Action_List.Set_Capacity (14);
             Add_Action (Table.States (52), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (50, 4), 1,
             rhs_item_4'Access, null);
+            Table.States (53).Action_List.Set_Capacity (5);
             Add_Action (Table.States (53), 12, 71);
             Add_Action (Table.States (53), 23, 72);
             Add_Conflict (Table.States (53), 23, (44, 1), 0, null, null);
             Add_Action (Table.States (53), 29, 73);
             Add_Action (Table.States (53), 33, Reduce, (44, 1), 0, null, null);
             Add_Action (Table.States (53), 36, Reduce, (44, 1), 0, null, null);
-            Add_Error (Table.States (53));
+            Table.States (53).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (53), 44, 77);
+            Table.States (54).Action_List.Set_Capacity (3);
             Add_Action (Table.States (54), (23, 33, 36), (38, 1), 4, 
declaration_1'Access, null);
+            Table.States (55).Action_List.Set_Capacity (2);
             Add_Action (Table.States (55), (9, 33), (40, 1), 2, null, null);
+            Table.States (56).Action_List.Set_Capacity (1);
             Add_Action (Table.States (56), 33, 78);
-            Add_Error (Table.States (56));
+            Table.States (57).Action_List.Set_Capacity (1);
             Add_Action (Table.States (57), 17, 79);
-            Add_Error (Table.States (57));
+            Table.States (58).Action_List.Set_Capacity (1);
             Add_Action (Table.States (58), 17, 80);
-            Add_Error (Table.States (58));
+            Table.States (59).Action_List.Set_Capacity (13);
             Add_Action (Table.States (59), (8, 10, 15, 16, 20, 23, 28, 30, 32, 
33, 34, 35, 36), (41, 1), 2, null,
             null);
+            Table.States (60).Action_List.Set_Capacity (13);
             Add_Action (Table.States (60), 8, 24);
             Add_Action (Table.States (60), 10, 25);
             Add_Action (Table.States (60), 15, 26);
@@ -371,8 +416,9 @@ package body Wisitoken_Grammar_Main is
             Add_Action (Table.States (60), 34, 33);
             Add_Action (Table.States (60), 35, 34);
             Add_Action (Table.States (60), 36, Reduce, (38, 0), 4, 
declaration_0'Access, null);
-            Add_Error (Table.States (60));
+            Table.States (60).Goto_List.Set_Capacity (1);
             Add_Goto (Table.States (60), 42, 59);
+            Table.States (61).Action_List.Set_Capacity (10);
             Add_Action (Table.States (61), 12, Reduce, (54, 0), 1, null, null);
             Add_Action (Table.States (61), 18, 38);
             Add_Action (Table.States (61), 19, 39);
@@ -383,44 +429,50 @@ package body Wisitoken_Grammar_Main is
             Add_Action (Table.States (61), 28, Reduce, (54, 0), 1, null, null);
             Add_Action (Table.States (61), 33, 42);
             Add_Action (Table.States (61), 35, 43);
-            Add_Error (Table.States (61));
+            Table.States (61).Goto_List.Set_Capacity (6);
             Add_Goto (Table.States (61), 47, 46);
             Add_Goto (Table.States (61), 48, 76);
             Add_Goto (Table.States (61), 50, 49);
             Add_Goto (Table.States (61), 51, 50);
             Add_Goto (Table.States (61), 52, 51);
             Add_Goto (Table.States (61), 53, 52);
+            Table.States (62).Action_List.Set_Capacity (2);
             Add_Action (Table.States (62), 12, 81);
             Add_Action (Table.States (62), 26, 82);
-            Add_Error (Table.States (62));
+            Table.States (63).Action_List.Set_Capacity (2);
             Add_Action (Table.States (63), 12, 81);
             Add_Action (Table.States (63), 27, 83);
-            Add_Error (Table.States (63));
+            Table.States (64).Action_List.Set_Capacity (2);
             Add_Action (Table.States (64), 12, 81);
             Add_Action (Table.States (64), 28, 84);
-            Add_Error (Table.States (64));
+            Table.States (65).Action_List.Set_Capacity (1);
             Add_Action (Table.States (65), 16, 85);
-            Add_Error (Table.States (65));
+            Table.States (66).Action_List.Set_Capacity (6);
             Add_Action (Table.States (66), 18, 38);
             Add_Action (Table.States (66), 19, 39);
             Add_Action (Table.States (66), 20, 40);
             Add_Action (Table.States (66), 21, 41);
             Add_Action (Table.States (66), 33, 86);
             Add_Action (Table.States (66), 35, 43);
-            Add_Error (Table.States (66));
+            Table.States (66).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (66), 47, 46);
             Add_Goto (Table.States (66), 50, 87);
             Add_Goto (Table.States (66), 51, 50);
             Add_Goto (Table.States (66), 52, 51);
             Add_Goto (Table.States (66), 53, 52);
+            Table.States (67).Action_List.Set_Capacity (14);
             Add_Action (Table.States (67), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (53, 4), 2, null,
             null);
+            Table.States (68).Action_List.Set_Capacity (14);
             Add_Action (Table.States (68), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (52, 2), 2, null,
             null);
+            Table.States (69).Action_List.Set_Capacity (14);
             Add_Action (Table.States (69), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (53, 5), 2, null,
             null);
+            Table.States (70).Action_List.Set_Capacity (14);
             Add_Action (Table.States (70), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (52, 3), 2,
             rhs_optional_item_3'Access, null);
+            Table.States (71).Action_List.Set_Capacity (10);
             Add_Action (Table.States (71), 12, Reduce, (46, 0), 0, null, null);
             Add_Action (Table.States (71), 18, 38);
             Add_Action (Table.States (71), 19, 39);
@@ -432,7 +484,7 @@ package body Wisitoken_Grammar_Main is
             Add_Conflict (Table.States (71), 33, (46, 0), 0, null, null);
             Add_Action (Table.States (71), 35, 43);
             Add_Action (Table.States (71), 36, Reduce, (46, 0), 0, null, null);
-            Add_Error (Table.States (71));
+            Table.States (71).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (71), 46, 88);
             Add_Goto (Table.States (71), 47, 46);
             Add_Goto (Table.States (71), 48, 47);
@@ -441,31 +493,39 @@ package body Wisitoken_Grammar_Main is
             Add_Goto (Table.States (71), 51, 50);
             Add_Goto (Table.States (71), 52, 51);
             Add_Goto (Table.States (71), 53, 52);
+            Table.States (72).Action_List.Set_Capacity (2);
             Add_Action (Table.States (72), 4, 89);
             Add_Action (Table.States (72), 5, 90);
-            Add_Error (Table.States (72));
+            Table.States (73).Action_List.Set_Capacity (3);
             Add_Action (Table.States (73), (23, 33, 36), (44, 0), 1, null, 
null);
+            Table.States (74).Action_List.Set_Capacity (3);
             Add_Action (Table.States (74), (23, 33, 36), (43, 0), 4, 
nonterminal_0'Access, null);
+            Table.States (75).Action_List.Set_Capacity (6);
             Add_Action (Table.States (75), 11, 91);
             Add_Action (Table.States (75), 12, Reduce, (46, 2), 2, null, null);
             Add_Action (Table.States (75), 23, Reduce, (46, 2), 2, null, null);
             Add_Action (Table.States (75), 29, Reduce, (46, 2), 2, null, null);
             Add_Action (Table.States (75), 33, Reduce, (46, 2), 2, null, null);
             Add_Action (Table.States (75), 36, Reduce, (46, 2), 2, null, null);
-            Add_Error (Table.States (75));
+            Table.States (76).Action_List.Set_Capacity (14);
             Add_Action (Table.States (76), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (49, 1), 2, null,
             null);
+            Table.States (77).Action_List.Set_Capacity (3);
             Add_Action (Table.States (77), (23, 33, 36), (43, 1), 4, 
nonterminal_1'Access, null);
+            Table.States (78).Action_List.Set_Capacity (3);
             Add_Action (Table.States (78), (23, 33, 36), (38, 4), 5, 
declaration_4'Access, null);
+            Table.States (79).Action_List.Set_Capacity (1);
             Add_Action (Table.States (79), (1 =>  33), (39, 1), 4, null, null);
+            Table.States (80).Action_List.Set_Capacity (1);
             Add_Action (Table.States (80), (1 =>  33), (39, 2), 4, null, null);
+            Table.States (81).Action_List.Set_Capacity (6);
             Add_Action (Table.States (81), 18, 38);
             Add_Action (Table.States (81), 19, 39);
             Add_Action (Table.States (81), 20, 40);
             Add_Action (Table.States (81), 21, 41);
             Add_Action (Table.States (81), 33, 42);
             Add_Action (Table.States (81), 35, 43);
-            Add_Error (Table.States (81));
+            Table.States (81).Goto_List.Set_Capacity (7);
             Add_Goto (Table.States (81), 47, 46);
             Add_Goto (Table.States (81), 48, 47);
             Add_Goto (Table.States (81), 49, 92);
@@ -473,6 +533,7 @@ package body Wisitoken_Grammar_Main is
             Add_Goto (Table.States (81), 51, 50);
             Add_Goto (Table.States (81), 52, 51);
             Add_Goto (Table.States (81), 53, 52);
+            Table.States (82).Action_List.Set_Capacity (15);
             Add_Action (Table.States (82), 11, Reduce, (53, 0), 3, null, null);
             Add_Action (Table.States (82), 12, Reduce, (53, 0), 3, null, null);
             Add_Action (Table.States (82), 18, Reduce, (53, 0), 3, null, null);
@@ -488,9 +549,10 @@ package body Wisitoken_Grammar_Main is
             Add_Action (Table.States (82), 33, Reduce, (53, 0), 3, null, null);
             Add_Action (Table.States (82), 35, Reduce, (53, 0), 3, null, null);
             Add_Action (Table.States (82), 36, Reduce, (53, 0), 3, null, null);
-            Add_Error (Table.States (82));
+            Table.States (83).Action_List.Set_Capacity (14);
             Add_Action (Table.States (83), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (52, 0), 3, null,
             null);
+            Table.States (84).Action_List.Set_Capacity (17);
             Add_Action (Table.States (84), 11, Reduce, (51, 0), 3, null, null);
             Add_Action (Table.States (84), 12, Reduce, (51, 0), 3, null, null);
             Add_Action (Table.States (84), 18, Reduce, (51, 0), 3, null, null);
@@ -508,9 +570,9 @@ package body Wisitoken_Grammar_Main is
             Add_Action (Table.States (84), 33, Reduce, (51, 0), 3, null, null);
             Add_Action (Table.States (84), 35, Reduce, (51, 0), 3, null, null);
             Add_Action (Table.States (84), 36, Reduce, (51, 0), 3, null, null);
-            Add_Error (Table.States (84));
+            Table.States (85).Action_List.Set_Capacity (1);
             Add_Action (Table.States (85), 33, 97);
-            Add_Error (Table.States (85));
+            Table.States (86).Action_List.Set_Capacity (17);
             Add_Action (Table.States (86), 11, Reduce, (50, 0), 1, null, null);
             Add_Action (Table.States (86), 12, Reduce, (50, 0), 1, null, null);
             Add_Action (Table.States (86), 18, Reduce, (50, 0), 1, null, null);
@@ -528,15 +590,18 @@ package body Wisitoken_Grammar_Main is
             Add_Action (Table.States (86), 33, Reduce, (50, 0), 1, null, null);
             Add_Action (Table.States (86), 35, Reduce, (50, 0), 1, null, null);
             Add_Action (Table.States (86), 36, Reduce, (50, 0), 1, null, null);
-            Add_Error (Table.States (86));
+            Table.States (87).Action_List.Set_Capacity (14);
             Add_Action (Table.States (87), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (48, 1), 3, null,
             null);
+            Table.States (88).Action_List.Set_Capacity (5);
             Add_Action (Table.States (88), (12, 23, 29, 33, 36), (45, 1), 3, 
null, null);
+            Table.States (89).Action_List.Set_Capacity (1);
             Add_Action (Table.States (89), 5, 98);
-            Add_Error (Table.States (89));
+            Table.States (90).Action_List.Set_Capacity (1);
             Add_Action (Table.States (90), 33, 99);
-            Add_Error (Table.States (90));
+            Table.States (91).Action_List.Set_Capacity (5);
             Add_Action (Table.States (91), (12, 23, 29, 33, 36), (46, 3), 3, 
null, null);
+            Table.States (92).Action_List.Set_Capacity (10);
             Add_Action (Table.States (92), 12, Reduce, (54, 1), 3, null, null);
             Add_Action (Table.States (92), 18, 38);
             Add_Action (Table.States (92), 19, 39);
@@ -547,34 +612,42 @@ package body Wisitoken_Grammar_Main is
             Add_Action (Table.States (92), 28, Reduce, (54, 1), 3, null, null);
             Add_Action (Table.States (92), 33, 42);
             Add_Action (Table.States (92), 35, 43);
-            Add_Error (Table.States (92));
+            Table.States (92).Goto_List.Set_Capacity (6);
             Add_Goto (Table.States (92), 47, 46);
             Add_Goto (Table.States (92), 48, 76);
             Add_Goto (Table.States (92), 50, 49);
             Add_Goto (Table.States (92), 51, 50);
             Add_Goto (Table.States (92), 52, 51);
             Add_Goto (Table.States (92), 53, 52);
+            Table.States (93).Action_List.Set_Capacity (14);
             Add_Action (Table.States (93), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (53, 1), 4, null,
             null);
+            Table.States (94).Action_List.Set_Capacity (14);
             Add_Action (Table.States (94), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (53, 2), 4, null,
             null);
+            Table.States (95).Action_List.Set_Capacity (14);
             Add_Action (Table.States (95), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (52, 1), 4, null,
             null);
+            Table.States (96).Action_List.Set_Capacity (14);
             Add_Action (Table.States (96), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (53, 3), 4, null,
             null);
+            Table.States (97).Action_List.Set_Capacity (1);
             Add_Action (Table.States (97), 17, 100);
-            Add_Error (Table.States (97));
+            Table.States (98).Action_List.Set_Capacity (5);
             Add_Action (Table.States (98), (12, 23, 29, 33, 36), (45, 3), 4, 
null, null);
+            Table.States (99).Action_List.Set_Capacity (1);
             Add_Action (Table.States (99), 16, 101);
-            Add_Error (Table.States (99));
+            Table.States (100).Action_List.Set_Capacity (14);
             Add_Action (Table.States (100), (11, 12, 18, 19, 20, 21, 23, 26, 
27, 28, 29, 33, 35, 36), (47, 0), 5, null,
             null);
+            Table.States (101).Action_List.Set_Capacity (1);
             Add_Action (Table.States (101), 33, 102);
-            Add_Error (Table.States (101));
+            Table.States (102).Action_List.Set_Capacity (5);
             Add_Action (Table.States (102), (12, 23, 29, 33, 36), (45, 2), 6, 
null, null);
          end Subr_1;
       begin
          Subr_1;
+         Table.Error_Action := new Parse_Action_Node'((Verb => Error), null);
       end;
 
       WisiToken.Parse.LR.Parser_No_Recover.New_Parser
diff --git a/packages/wisi/wisitoken_grammar_main.ads 
b/packages/wisi/wisitoken_grammar_main.ads
index e07ed68..35a5e9e 100644
--- a/packages/wisi/wisitoken_grammar_main.ads
+++ b/packages/wisi/wisitoken_grammar_main.ads
@@ -27,6 +27,7 @@ package Wisitoken_Grammar_Main is
 
    procedure Create_Parser
      (Parser                       :    out 
WisiToken.Parse.LR.Parser_No_Recover.Parser;
+      --  no error recovery
       Trace                        : not null access WisiToken.Trace'Class;
       User_Data                    : in     
WisiToken.Syntax_Trees.User_Data_Access);
 
diff --git a/packages/wisi/wisitoken_grammar_runtime.adb 
b/packages/wisi/wisitoken_grammar_runtime.adb
index 4841ada..346eadb 100644
--- a/packages/wisi/wisitoken_grammar_runtime.adb
+++ b/packages/wisi/wisitoken_grammar_runtime.adb
@@ -26,6 +26,7 @@ with SAL.Generic_Decimal_Image;
 with System.Assertions;
 with WisiToken.Generate;   use WisiToken.Generate;
 with Wisitoken_Grammar_Actions; use Wisitoken_Grammar_Actions;
+with WisiToken.Syntax_Trees.LR_Utils;
 package body WisiToken_Grammar_Runtime is
 
    use WisiToken;
@@ -35,17 +36,19 @@ package body WisiToken_Grammar_Runtime is
 
    procedure Raise_Programmer_Error
      (Label : in String;
+      Data  : in User_Data_Type;
       Tree  : in WisiToken.Syntax_Trees.Tree;
       Node  : in WisiToken.Syntax_Trees.Node_Index);
    pragma No_Return (Raise_Programmer_Error);
 
    procedure Raise_Programmer_Error
      (Label : in String;
+      Data  : in User_Data_Type;
       Tree  : in WisiToken.Syntax_Trees.Tree;
       Node  : in WisiToken.Syntax_Trees.Node_Index)
    is begin
-      raise SAL.Programmer_Error with Label & 
WisiToken.Syntax_Trees.Node_Index'Image (Node) &
-        ":" & Tree.Image (Node, Wisitoken_Grammar_Actions.Descriptor, 
Include_Children => True);
+      WisiToken.Syntax_Trees.LR_Utils.Raise_Programmer_Error
+        (Label, Wisitoken_Grammar_Actions.Descriptor, Data.Grammar_Lexer, 
Tree, Data.Terminals.all, Node);
    end Raise_Programmer_Error;
 
    function Get_Line
@@ -213,7 +216,7 @@ package body WisiToken_Grammar_Runtime is
                   end;
 
                when others =>
-                  Raise_Programmer_Error ("Get_RHS; unimplimented token", 
Tree, I);
+                  Raise_Programmer_Error ("Get_RHS; unimplimented token", 
Data, Tree, I);
                end case;
             end loop;
 
@@ -241,7 +244,7 @@ package body WisiToken_Grammar_Runtime is
       declare
          use Ada.Exceptions;
       begin
-         Raise_Programmer_Error ("Get_RHS: " & Exception_Name (E) & ": " & 
Exception_Message (E), Tree, Token);
+         Raise_Programmer_Error ("Get_RHS: " & Exception_Name (E) & ": " & 
Exception_Message (E), Data, Tree, Token);
       end;
    end Get_RHS;
 
@@ -282,7 +285,7 @@ package body WisiToken_Grammar_Runtime is
          Data.Ignore_Lines := False;
 
       when others =>
-         Raise_Programmer_Error ("Get_Right_Hand_Sides", Tree, Token);
+         Raise_Programmer_Error ("Get_Right_Hand_Sides", Data, Tree, Token);
       end case;
    end Get_Right_Hand_Sides;
 
@@ -357,7 +360,7 @@ package body WisiToken_Grammar_Runtime is
          if Data.Terminals.Length = 0 then
             Data.Non_Grammar (0).Append (Token);
          else
-            Data.Non_Grammar.Set_Last (Data.Terminals.Last_Index);
+            Data.Non_Grammar.Set_First_Last (0, Data.Terminals.Last_Index);
             Data.Non_Grammar (Data.Terminals.Last_Index).Append (Token);
          end if;
       end if;
@@ -495,17 +498,21 @@ package body WisiToken_Grammar_Runtime is
       when Syntax_Trees.Nonterm =>
          --  must be token_keyword_non_grammar
          declare
-            Children   : Syntax_Trees.Valid_Node_Index_Array renames 
Tree.Children (Tokens (2));
-            Child_1_ID : constant Token_Enum_ID := To_Token_Enum (Tree.ID 
(Children (1)));
+            Children_2 : constant Syntax_Trees.Valid_Node_Index_Array := 
Tree.Children (Tokens (2));
+            Child_1_ID : constant Token_Enum_ID := To_Token_Enum (Tree.ID 
(Children_2 (1)));
          begin
             case Child_1_ID is
             when Wisitoken_Grammar_Actions.TOKEN_ID =>
-
-               WisiToken.BNF.Add_Token
-                 (Data.Tokens.Tokens,
-                  Kind  => Get_Text (Data, Tree, Children (3)),
-                  Name  => Get_Text (Data, Tree, Tokens (3)),
-                  Value => Get_Text (Data, Tree, Tokens (4)));
+               declare
+                  Children_4 : constant Syntax_Trees.Valid_Node_Index_Array := 
Tree.Children (Tokens (4));
+               begin
+                  WisiToken.BNF.Add_Token
+                    (Data.Tokens.Tokens,
+                     Kind         => Get_Text (Data, Tree, Children_2 (3)),
+                     Name         => Get_Text (Data, Tree, Tokens (3)),
+                     Value        => Get_Text (Data, Tree, Children_4 (1)),
+                     Repair_Image => (if Children_4'Length = 1 then "" else 
Get_Text (Data, Tree, Children_4 (2))));
+               end;
 
             when KEYWORD_ID =>
 
@@ -517,7 +524,7 @@ package body WisiToken_Grammar_Runtime is
 
                WisiToken.BNF.Add_Token
                  (Data.Tokens.Non_Grammar,
-                  Kind  => Get_Text (Data, Tree, Children (3)),
+                  Kind  => Get_Text (Data, Tree, Children_2 (3)),
                   Name  => Get_Text (Data, Tree, Tokens (3)),
                   Value => Get_Text (Data, Tree, Tokens (4)));
 
@@ -825,7 +832,7 @@ package body WisiToken_Grammar_Runtime is
               (Data.Grammar_Lexer.File_Name, 1, 1, "duplicate virtual nonterm 
'" & LHS_String & "'");
 
          when others =>
-            Raise_Programmer_Error ("Add_Nonterminal", Tree, LHS_Node);
+            Raise_Programmer_Error ("Add_Nonterminal", Data, Tree, LHS_Node);
          end case;
       else
          Data.Label_Count := Data.Label_Count + Labels.Length;
@@ -862,7 +869,7 @@ package body WisiToken_Grammar_Runtime is
             end;
          end if;
       when Other =>
-         Raise_Programmer_Error ("untranslated EBNF node", Tree, Tree.Parent 
(Tokens (Token)));
+         Raise_Programmer_Error ("untranslated EBNF node", Data, Tree, 
Tree.Parent (Tokens (Token)));
       end case;
    end Check_EBNF;
 
@@ -967,7 +974,7 @@ package body WisiToken_Grammar_Runtime is
                   Node := Children (1);
                   exit;
                else
-                  Raise_Programmer_Error ("first_list_element", Tree, Node);
+                  Raise_Programmer_Error ("first_list_element", Data, Tree, 
Node);
                end if;
             end;
          end loop;
@@ -1151,11 +1158,16 @@ package body WisiToken_Grammar_Runtime is
       end Append_Element;
 
       procedure Insert_Optional_RHS (B : in Valid_Node_Index)
+      with Pre => Tree.ID (B) in +rhs_multiple_item_ID | +rhs_optional_item_ID 
| +IDENTIFIER_ID
       is
          --  B is an optional item in an rhs_item_list :
          --  | a b? c
+         --  | a b* c
+         --
+         --  or B is a virtual identifier naming the new nonterm replacing the
+         --  original.
          --
-         --  Insert a second rhs_item_list without B
+         --  where a, c can be empty. Insert a second rhs_item_list without B.
          --
          --  The containing elment may be rhs or rhs_alternative_list
 
@@ -1205,7 +1217,7 @@ package body WisiToken_Grammar_Runtime is
 
             when others =>
                Raise_Programmer_Error
-                 ("translate_ebnf_to_bnf insert_optional_rhs unimplemented 
RHS", Tree, Container);
+                 ("translate_ebnf_to_bnf insert_optional_rhs unimplemented 
RHS", Data, Tree, Container);
             end case;
          end Add_Actions;
       begin
@@ -1241,7 +1253,12 @@ package body WisiToken_Grammar_Runtime is
                New_RHS_AC :=
                  (if Tree.ID (Container) = +rhs_ID
                   then Tree.Add_Nonterm ((+rhs_ID, 0), (1 .. 0 => 
Invalid_Node_Index))
-                  else Tree.Add_Nonterm ((+rhs_item_list_ID, 0), (1 .. 0 => 
Invalid_Node_Index)));
+                  else
+                     --  rhs_alternative_list_ID
+                     --  The grammar does not allow an empty alternative in an
+                     --  rhs_alterntive_list; this will be fixed when it is 
converted to an
+                     --  rhs_list.
+                     Tree.Add_Nonterm ((+rhs_item_list_ID, 0), (1 .. 0 => 
Invalid_Node_Index)));
             else
                --  c is empty
                New_RHS_AC :=
@@ -1308,6 +1325,7 @@ package body WisiToken_Grammar_Runtime is
       Compilation_Unit_List_Tail : constant Valid_Node_Index := Tree.Child 
(Tree.Root, 1);
 
       procedure Add_Compilation_Unit (Unit : in Valid_Node_Index; Prepend : in 
Boolean := False)
+      with Pre => Tree.ID (Unit) in +declaration_ID | +nonterminal_ID
       is
          Comp_Unit : constant Valid_Node_Index := Tree.Add_Nonterm
            ((+compilation_unit_ID, (if Tree.ID (Unit) = +declaration_ID then 0 
else 1)),
@@ -1337,6 +1355,7 @@ package body WisiToken_Grammar_Runtime is
       end To_RHS_List;
 
       function Convert_RHS_Alternative (Content : in Valid_Node_Index) return 
Valid_Node_Index
+      with Pre => Tree.ID (Content) = +rhs_alternative_list_ID
       is
          --  Convert rhs_alternative_list rooted at Content to an rhs_list
          Node : Valid_Node_Index := Content;
@@ -1359,14 +1378,29 @@ package body WisiToken_Grammar_Runtime is
             --  | rhs: new
             --  | | rhs_item_list: keep Node,Child (3)
 
-            Tree.Set_Children
-              (Node,
-               (+rhs_list_ID, 1),
-               (1 => Tree.Child (Node, 1),
-                2 => Tree.Child (Node, 2),
-                3 => Tree.Add_Nonterm
-                  ((+rhs_ID, 1),
-                   (1 => Tree.Child (Node, 3)))));
+            if Tree.Is_Empty (Tree.Child (Node, 3)) then
+               --  Convert empty rhs_item_list to empty rhs
+               Tree.Set_Children
+                 (Tree.Child (Node, 3),
+                  (+rhs_ID, 0),
+                  (1 .. 0 => Invalid_Node_Index));
+
+               Tree.Set_Children
+                 (Node,
+                  (+rhs_list_ID, 1),
+                  (1 => Tree.Child (Node, 1),
+                   2 => Tree.Child (Node, 2),
+                   3 => Tree.Child (Node, 3)));
+            else
+               Tree.Set_Children
+                 (Node,
+                  (+rhs_list_ID, 1),
+                  (1 => Tree.Child (Node, 1),
+                   2 => Tree.Child (Node, 2),
+                   3 => Tree.Add_Nonterm
+                     ((+rhs_ID, 1),
+                      (1 => Tree.Child (Node, 3)))));
+            end if;
 
             Clear_EBNF_Node (Node);
             Node := Tree.Child (Node, 1);
@@ -1393,7 +1427,7 @@ package body WisiToken_Grammar_Runtime is
       procedure New_Nonterminal
         (New_Identifier : in Identifier_Index;
          Content        : in Valid_Node_Index)
-         with Pre => To_Token_Enum (Tree.ID (Content)) in 
rhs_alternative_list_ID | rhs_element_ID
+      with Pre => To_Token_Enum (Tree.ID (Content)) in rhs_alternative_list_ID 
| rhs_element_ID
       is
          --  Convert subtree rooted at Content to an rhs_list contained by a 
new nonterminal
          --  named New_Identifier.
@@ -1404,8 +1438,7 @@ package body WisiToken_Grammar_Runtime is
               (case To_Token_Enum (Tree.ID (Content)) is
                when rhs_element_ID          => To_RHS_List (Content),
                when rhs_alternative_list_ID => Convert_RHS_Alternative 
(Content),
-               when others => raise SAL.Programmer_Error with "new_nonterminal 
unimplemented content" &
-                 Tree.Image (Content, Wisitoken_Grammar_Actions.Descriptor)),
+               when others => raise SAL.Programmer_Error),
             Child_4   => Tree.Add_Nonterm
               ((+semicolon_opt_ID, 0),
                (1     => Tree.Add_Terminal (+SEMICOLON_ID))));
@@ -1418,6 +1451,8 @@ package body WisiToken_Grammar_Runtime is
          RHS_Element_1 : in Valid_Node_Index;
          RHS_Element_3 : in Valid_Node_Index;
          Byte_Region   : in Buffer_Region)
+      with Pre => Tree.ID (RHS_Element_1) = +rhs_element_ID and
+                  Tree.ID (RHS_Element_3) = +rhs_element_ID
       is
          --  nonterminal: foo_list
          --  | IDENTIFIER: "foo_list" List_Nonterm
@@ -1528,7 +1563,7 @@ package body WisiToken_Grammar_Runtime is
 
          when rhs_alternative_list_ID =>
             --  All handled by New_Nonterminal*
-            raise SAL.Not_Implemented with Tree.Image (Node, 
Wisitoken_Grammar_Actions.Descriptor);
+            raise SAL.Programmer_Error;
 
          when rhs_attribute_ID =>
             --  Just delete it
@@ -1559,7 +1594,7 @@ package body WisiToken_Grammar_Runtime is
             begin
                if Tree.RHS_Index (RHS_Item_List) /= 0 then
                   --  Not first
-                  Raise_Programmer_Error ("translate_ebnf_to_bnf 
rhs_attribute_id unimplemented", Tree, Node);
+                  Raise_Programmer_Error ("translate_ebnf_to_bnf 
rhs_attribute_id unimplemented", Data, Tree, Node);
                end if;
 
                Tree.Set_Children
@@ -1611,7 +1646,7 @@ package body WisiToken_Grammar_Runtime is
                            when Virtual_Identifier =>
                               New_Ident := Tree.Identifier (Name_Node);
                            when others =>
-                              Raise_Programmer_Error ("process_node 
rhs_group_item", Tree, Name_Node);
+                              Raise_Programmer_Error ("process_node 
rhs_group_item", Data, Tree, Name_Node);
                            end case;
 
                            exit;
@@ -1643,9 +1678,10 @@ package body WisiToken_Grammar_Runtime is
             --  | a b+ c
             --  | a b* c
             --
-            --  Replace it with a new canonical list nonterminal:
+            --  where a and/or c can be empty. Replace it with a new canonical
+            --  list nonterminal:
             --
-            --  nonterminal_nnn
+            --  nonterminal_nnn_list
             --  : b
             --  | nonterminal_nnn_list b
             --
@@ -1693,7 +1729,7 @@ package body WisiToken_Grammar_Runtime is
                   --
                   --  The tokens may have labels.
                   --
-                  --  Handling these cases specially this eliminates a 
conflict between
+                  --  Handling these cases specially eliminates a conflict 
between
                   --  reducing to enumConstants and reducing to the introduced 
nonterm
                   --  list.
                   --
@@ -1720,6 +1756,7 @@ package body WisiToken_Grammar_Runtime is
                   then
                      return;
                   end if;
+                  if Invalid_Node_Index /= Prev_List_Element (Element_1, 
+rhs_item_list_ID) then return; end if;
                   if Invalid_Node_Index /= Next_List_Element (RHS_Element, 
+rhs_item_list_ID) then return; end if;
                   if Invalid_Node_Index /= Next_List_Element (RHS_2, 
+rhs_list_ID) or
                     Invalid_Node_Index /= Prev_List_Element (RHS_2, 
+rhs_list_ID)
@@ -1893,7 +1930,7 @@ package body WisiToken_Grammar_Runtime is
                            when others =>
                               Raise_Programmer_Error
                                 ("unimplemented Find_List_Nonterminal_2 case 
'" & Element_Content & "'",
-                                 Tree, Name_Node);
+                                 Data, Tree, Name_Node);
                            end case;
 
                            --  list nonterm is the next nonterminal
@@ -1969,7 +2006,7 @@ package body WisiToken_Grammar_Runtime is
                                     when others =>
                                        Raise_Programmer_Error
                                          ("unimplemented 
Find_List_Nonterminal_1 case '" & Element_Content & "'",
-                                          Tree, Name_Node);
+                                          Data, Tree, Name_Node);
                                     end case;
 
                                     exit;
@@ -2031,7 +2068,7 @@ package body WisiToken_Grammar_Runtime is
                   end if;
 
                when others =>
-                  Raise_Programmer_Error ("translate_ebnf_to_bnf 
rhs_multiple_item unimplmented", Tree, Node);
+                  Raise_Programmer_Error ("translate_ebnf_to_bnf 
rhs_multiple_item unimplmented", Data, Tree, Node);
                end case;
 
                if Allow_Empty then
@@ -2060,7 +2097,8 @@ package body WisiToken_Grammar_Runtime is
             exception
             when E : System.Assertions.Assert_Failure =>
                Raise_Programmer_Error
-                 ("translate_ebnf_to_bnf multiple_item assert: " & 
Ada.Exceptions.Exception_Message (E), Tree, Node);
+                 ("translate_ebnf_to_bnf multiple_item assert: " & 
Ada.Exceptions.Exception_Message (E),
+                  Data, Tree, Node);
             end;
 
          when rhs_optional_item_ID =>
@@ -2137,7 +2175,7 @@ package body WisiToken_Grammar_Runtime is
                            when Shared_Terminal =>
                               Name_Terminal := Tree.Min_Terminal_Index 
(Name_Identifier_Node);
                            when others =>
-                              Raise_Programmer_Error ("unhandled rhs_optional 
case ", Tree, Name_Identifier_Node);
+                              Raise_Programmer_Error ("unhandled rhs_optional 
case ", Data, Tree, Name_Identifier_Node);
                            end case;
                         end;
                      end if;
@@ -2161,7 +2199,8 @@ package body WisiToken_Grammar_Runtime is
                                     Name_Ident := Tree.Identifier 
(Name_Identifier_Node);
                                  when others =>
                                     Raise_Programmer_Error
-                                      ("unhandled rhs_optional case '" & 
New_Text & "'", Tree, Name_Identifier_Node);
+                                      ("unhandled rhs_optional case '" & 
New_Text & "'",
+                                       Data, Tree, Name_Identifier_Node);
                                  end case;
                                  exit;
                               end if;
@@ -2295,7 +2334,7 @@ package body WisiToken_Grammar_Runtime is
                   Tree.Set_Children (Tree.Parent (Node), (+rhs_item_ID, 1), (1 
=> Tree.Child (Node, 1)));
 
                when others =>
-                  Raise_Programmer_Error ("translate_ebnf_to_bnf 
rhs_optional_item unimplmented", Tree, Node);
+                  Raise_Programmer_Error ("translate_ebnf_to_bnf 
rhs_optional_item unimplmented", Data, Tree, Node);
                end case;
 
                Clear_EBNF_Node (Node);
@@ -2374,7 +2413,7 @@ package body WisiToken_Grammar_Runtime is
                         (1 => Tree.Add_Identifier (+IDENTIFIER_ID, Name_Ident, 
Tree.Byte_Region (Node))));
 
                   when others =>
-                     Raise_Programmer_Error ("translate_ebnf_to_bnf 
string_literal_2 unimplemented", Tree, Node);
+                     Raise_Programmer_Error ("translate_ebnf_to_bnf 
string_literal_2 unimplemented", Data, Tree, Node);
                   end case;
                end;
 
@@ -2409,7 +2448,7 @@ package body WisiToken_Grammar_Runtime is
             end;
 
          when others =>
-            Raise_Programmer_Error ("unimplemented EBNF node", Tree, Node);
+            Raise_Programmer_Error ("unimplemented EBNF node", Data, Tree, 
Node);
          end case;
       exception
       when SAL.Programmer_Error =>
@@ -2418,7 +2457,7 @@ package body WisiToken_Grammar_Runtime is
          Raise_Programmer_Error
            ("unhandled exception " & Ada.Exceptions.Exception_Name (E) & ": " &
               Ada.Exceptions.Exception_Message (E),
-            Tree, Node);
+            Data, Tree, Node);
       end Process_Node;
 
    begin
@@ -2452,10 +2491,6 @@ package body WisiToken_Grammar_Runtime is
             Ada.Text_IO.Put_Line (Base_Identifier_Index'Image (I) & " " & 
(-Data.Tokens.Virtual_Identifiers (I)));
          end loop;
       end if;
-   exception
-   when E : SAL.Not_Implemented =>
-      Ada.Text_IO.Put_Line
-        (Ada.Text_IO.Standard_Error, "Translate_EBNF_To_BNF not implemented: " 
& Ada.Exceptions.Exception_Message (E));
    end Translate_EBNF_To_BNF;
 
    procedure Print_Source
@@ -2562,7 +2597,7 @@ package body WisiToken_Grammar_Runtime is
             use Ada.Exceptions;
          begin
             Raise_Programmer_Error
-              ("Put_RHS_Element: " & Exception_Name (E) & ": " & 
Exception_Message (E), Tree, Node);
+              ("Put_RHS_Element: " & Exception_Name (E) & ": " & 
Exception_Message (E), Data, Tree, Node);
          end;
       end Put_RHS_Element;
 
@@ -2587,7 +2622,7 @@ package body WisiToken_Grammar_Runtime is
             use Ada.Exceptions;
          begin
             Raise_Programmer_Error
-              ("Put_RHS_Item_List: " & Exception_Name (E) & ": " & 
Exception_Message (E), Tree, Node);
+              ("Put_RHS_Item_List: " & Exception_Name (E) & ": " & 
Exception_Message (E), Data, Tree, Node);
          end;
       end Put_RHS_Item_List;
 
@@ -2634,7 +2669,7 @@ package body WisiToken_Grammar_Runtime is
             end if;
 
          when others =>
-            Raise_Programmer_Error ("Put_RHS", Tree, Node);
+            Raise_Programmer_Error ("Put_RHS", Data, Tree, Node);
          end case;
       exception
       when SAL.Programmer_Error =>
@@ -2644,7 +2679,7 @@ package body WisiToken_Grammar_Runtime is
          declare
             use Ada.Exceptions;
          begin
-            Raise_Programmer_Error ("Put_RHS: " & Exception_Name (E) & ": " & 
Exception_Message (E), Tree, Node);
+            Raise_Programmer_Error ("Put_RHS: " & Exception_Name (E) & ": " & 
Exception_Message (E), Data, Tree, Node);
          end;
       end Put_RHS;
 
@@ -2673,7 +2708,7 @@ package body WisiToken_Grammar_Runtime is
             Put_Comments (Node);
 
          when others =>
-            Raise_Programmer_Error ("Put_RHS_List", Tree, Node);
+            Raise_Programmer_Error ("Put_RHS_List", Data, Tree, Node);
          end case;
       exception
       when SAL.Programmer_Error =>
@@ -2683,7 +2718,8 @@ package body WisiToken_Grammar_Runtime is
          declare
             use Ada.Exceptions;
          begin
-            Raise_Programmer_Error ("Put_RHS_List: " & Exception_Name (E) & ": 
" & Exception_Message (E), Tree, Node);
+            Raise_Programmer_Error
+              ("Put_RHS_List: " & Exception_Name (E) & ": " & 
Exception_Message (E), Data, Tree, Node);
          end;
       end Put_RHS_List;
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]